
Ayuda de Programa
#41
Escrito 15 enero 2010 - 12:37
como ago para hacer que el edit1.text solo acepte caracteres de numeros?? por lo que vi por hay.. vi un odigo que es asi..
selecionamos el edit1 y en las propiedades seleccionamos la pestaña eventos y hacemos click en OnKeypress
segun el codigo que tengo es asi..
begin
if key = (chr(13) and (edit1.text <> '') then
edit2.setfocus
if not ((key > '0') and (key <'9')) then
key := char (0) and (key <='9') or (key = chr(13) or key=chr(8))) then
.... hasta hay fue donde llegue.. pienzo que algo me falta..??
#42
Escrito 15 enero 2010 - 01:19
Archivos adjuntos
#43
Escrito 15 enero 2010 - 06:13
wuaho... veo que caral.. se me adelanta.. pero no voy tan atras.. una pregunta
como ago para hacer que el edit1.text solo acepte caracteres de numeros?? por lo que vi por hay.. vi un odigo que es asi..
selecionamos el edit1 y en las propiedades seleccionamos la pestaña eventos y hacemos click en OnKeypress
segun el codigo que tengo es asi..
begin
if key = (chr(13) and (edit1.text <> '') then
edit2.setfocus
if not ((key > '0') and (key <'9')) then
key := char (0) and (key <='9') or (key = chr(13) or key=chr(8))) then
.... hasta hay fue donde llegue.. pienzo que algo me falta..??
con esto
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in['0'..'9', #8, #13]) then key := #0; end;
#44
Escrito 15 enero 2010 - 07:37
me da un error en esta linea..
me dice "Operator not applicable to this operand type"
me dice eso en la linea..
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = ((Chr(13)) and (Edit1.Text <> '') then (aqui es donde me da el error)
if not (key in['0'..'9', #8, #13]) then
key := #0;
end;
#45
Escrito 15 enero 2010 - 08:16
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = ((Chr(13)) and (Edit1.Text <> '') then (aqui es donde me da el error)
if not (key in['0'..'9', #8, #13]) then
key := #0;
end;
Que tal jordangel, posiblemente tu problema esta en el primer parentesis de la linea del error, si quitas ese parentesis y lo pones antes de "key" tal vez funcione.
Ahora con el segundo if que tienes siento que no es necesario el primero, seria bueno que lo analizaras.
saludos.
#46
Escrito 15 enero 2010 - 08:28
Para limitar la cantidad de caracteres los TEdit tienen la propiedad MaxLength.
TEdit.MaxLength Property
Specifies the maximum number of characters the user can enter into the edit control.
Description
Use MaxLength to limit the number of characters that can be entered into the edit control. A value of 0 indicates that there is no application-defined limit on the length.
Use MaxLength to limit the length of the text in an edit control if that text will be copied into a fixed-length buffer.
Note: Setting MaxLength will not truncate the existing text, it merely prevents the user from adding more text after reaching the limit of MaxLength characters.
Note: Even when MaxLength is 0, there may be limitations imposed by the operating system on the number of characters that may be entered into an edit control.
Note: The unit of MaxLength is characters (not bytes) if the application is using themes.
#47
Escrito 15 enero 2010 - 09:35

Una sugerencia, trabaja con identaciones es mas fácil leer el código, y fijate que las ultimas referencia que hacias a Form1.Editx no hacia faltan ya que estas dentro del entorno de form1:
procedure TForm1.Button1Click(Sender: TObject); begin if (Edit1.Text = '') then begin ShowMessage('Introdusca La Cedula del Alumno'); Edit1.SetFocus; end else if (Edit2.Text = '') then begin ShowMessage('Introdusca el Nombre del Alumno'); Edit2.SetFocus; end else if (Edit3.Text ='') then begin ShowMessage('Introdusca el Numero de Telefono del Alumno'); Edit3.SetFocus; end else if ((RadioButton1.Checked = false) and (RadioButton2.Checked = false))then begin ShowMessage('Seleccione El Sexo del Alumno'); end else ShowMessage('Registro Insertado Satisfactoriamente'); Edit1.Clear; Edit2.Clear; Edit3.Clear; RadioButton1.Checked := false; RadioButton2.Checked := false; Button1.Enabled := false; Edit2.Enabled := false; Edit3.Enabled := false; RadioButton1.Enabled := false; RadioButton2.Enabled := false; Edit1.SetFocus; end;
Lo próximo a realizar es la parte interesante de la tarea, tienes que crear un arreglo de registros. Para realizar esto deberás utilizar el tipo que te esta dando egostar, esto va a definir el registro, la única modificación es que la variable que lo maneja debe ser un arreglo del tipo de TAlumno.
Aparte de todo, y es solo una sugerencia, no obligues al usuario a escribir la cedula con solo numeros, ya que cada uno tiene su propio estilo y según ley la cedula comienza con letra que denota la nacionalidad por ejemplo V-14526369 incluso para usuarios quisquillosos V-14.526.369. Pero esto es solo una sugerencia y no afecta tu programa.
#48
Escrito 15 enero 2010 - 09:36
amigo gracias.. si me funciono el codigo que diste.. pero ahora lo que intento es que ese edit1 solo pueda aceptar 8 caracteres. no mas... ya solo aceptan nuemeros perfecto.. pero tambien que solo acepte 8 caracteres el codigo que tengo..
me da un error en esta linea..
me dice "Operator not applicable to this operand type"
me dice eso en la linea..
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = ((Chr(13)) and (Edit1.Text <> '') then (aqui es donde me da el error)
if not (key in['0'..'9', #8, #13]) then
key := #0;
end;
Ensaya así, además de configurar en el object inspector la propiedad MaxLength del Tedit, como lo recomienda Rolphy.
if not (key in['0'..'9', #8, #13]) then key := #0; if (key = #13) and (Edit1.Text <> '') then Edit2.Text.SetFocus;
#49
Escrito 15 enero 2010 - 11:34
#50
Escrito 16 enero 2010 - 06:50
pero con todo respeto pienso que si te está costando cierta dificultad deducir el código de tu programa que es sencillo, a menos que conozcas algo del tema dificilmente podrás hacer algo con el código en ASM.
Mas in embargo por curiosidad consulta algo sobre IDA Pro, WinDasm, SoftIce.
Aunque creo que el camino mas corto es documentarte un poquitin mas sobre delphi y deducir el código que es poco y aquí estaremos dispuestos a ayudarte, como puedes ver Eduarcol ya puso algo de código.
Saludos
#51
Escrito 16 enero 2010 - 07:11
Wilson, el código que coloque es de jordangel que lo subió con su programa.
#52
Escrito 16 enero 2010 - 08:49
He agregado los botones Primero, Anterior, Siguiente y Nuevo para que el programa tenga algo de sentido. No creas que la intención es hacerte la tárea, solo que te veo muy confundido y he optado por no dejarte tirado, debes terminarla tu solo. Puedes preguntar lo que quieras.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type //Declaracion de tipo record TAlumno = record Cedula : string; Nombre : string; Telefono : string; Sexo: String; end; type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; edNombre: TEdit; edTelefono: TEdit; rbF: TRadioButton; rbM: TRadioButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; bnInsertar: TButton; bnModificar: TButton; bnEliminar: TButton; bnCancelar: TButton; bnCerrar: TButton; edCedula: TEdit; bnVerPrimero: TButton; bnAnterior: TButton; bnSiguiente: TButton; bnNuevo: TButton; procedure bnInsertarClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure bnVerPrimeroClick(Sender: TObject); procedure bnAnteriorClick(Sender: TObject); procedure bnSiguienteClick(Sender: TObject); procedure bnNuevoClick(Sender: TObject); private function Posicion: Integer; { Private declarations } public { Public declarations } end; var Form1: TForm1; Alumnos :array [0..4] of TAlumno; //Declaración del arreglo PosicionActual : Integer; // Controla la posición en la navegación implementation {$R *.dfm} procedure TForm1.bnInsertarClick(Sender: TObject); var APosicion :Integer; begin Aposicion := Posicion;//Obtengo la proxima posición libre del arreglo if (edCedula.Text = '') then begin ShowMessage('Introduzca La Cedula del Alumno'); edCedula.SetFocus; end else if (edNombre.Text = '') then begin ShowMessage('Introduzca el Nombre del Alumno'); edNombre.SetFocus; end else if (edTelefono.Text ='') then begin ShowMessage('Introduzca el Numero de Telefono del Alumno'); edTelefono.SetFocus; end else if ((rbF.Checked = false) and (rbM.Checked = false))then begin ShowMessage('Seleccione El Sexo del Alumno'); end else begin if APosicion <> -1 then // Compruebo que haya un espacio en el arreglo begin Alumnos[APosicion].Cedula := edCedula.Text; Alumnos[APosicion].Nombre := edNombre.Text; Alumnos[APosicion].Telefono := edTelefono.Text; if rbF.Checked then Alumnos[APosicion].Sexo := 'Femenino' else Alumnos[APosicion].Sexo := 'Masculino' ; ShowMessage('Registro Insertado Satisfactoriamente'); edCedula.Clear; edNombre.Clear; edTelefono.Clear; rbF.Checked := false; rbM.Checked := false; edCedula.SetFocus; end else showmessage('El arreglo está lleno') end; end; function TForm1.Posicion:Integer; // Obtengo la próxima posición libre var I:Integer; begin result := -1; for I := 0 to Length(Alumnos)-1 do if Alumnos[i].Cedula = '' then begin result := i; Break end; end; procedure TForm1.FormCreate(Sender: TObject); //Inicializamos el arreglo y la posicion var i: Integer; begin PosicionActual := 0; for i:= 0 to Length(Alumnos)-1 do begin Alumnos[i].Cedula := ''; Alumnos[i].Nombre := ''; Alumnos[i].Telefono := ''; Alumnos[i].Sexo := ''; end; end; procedure TForm1.bnVerPrimeroClick(Sender: TObject); begin //Voy a la posicion 0 del arreglo edCedula.Text:= Alumnos[0].Cedula; edNombre.Text := Alumnos[0].Nombre; edTelefono.Text := Alumnos[0].Telefono; if Alumnos[0].sexo = 'Femenino' then rbF.Checked := true; if Alumnos[0].sexo = 'Masculino' then rbM.Checked := true; end; procedure TForm1.bnAnteriorClick(Sender: TObject); begin if PosicionActual > 0 then //Voy a la posicion anterior begin edCedula.Text:= Alumnos[Posicionactual -1].Cedula; edNombre.Text := Alumnos[Posicionactual -1].Nombre; edTelefono.Text := Alumnos[Posicionactual -1].Telefono; if Alumnos[Posicionactual -1].sexo = 'Femenino' then rbF.Checked := true; if Alumnos[Posicionactual -1].sexo = 'Masculino' then rbM.Checked := true; PosicionActual := PosicionActual -1; end; end; procedure TForm1.bnSiguienteClick(Sender: TObject); begin if PosicionActual < High(Alumnos) then //Voy a la siguiente posicion begin edCedula.Text:= Alumnos[Posicionactual +1].Cedula; edNombre.Text := Alumnos[Posicionactual +1].Nombre; edTelefono.Text := Alumnos[Posicionactual +1].Telefono; if Alumnos[Posicionactual +1].sexo = 'Femenino' then rbF.Checked := true; if Alumnos[Posicionactual +1].sexo = 'Masculino' then rbM.Checked := true; PosicionActual := PosicionActual +1; end; end; procedure TForm1.bnNuevoClick(Sender: TObject); begin // Limpia controles en caso de que estes navegando y quieras insertar un nuevo edCedula.Clear; edNombre.Clear; edTelefono.Clear; rbF.Checked := false; rbM.Checked := false; edCedula.SetFocus; end; end.