Ir al contenido


Foto

Ayuda de Programa


  • Por favor identifícate para responder
51 respuestas en este tema

#41 jordangel

jordangel

    Advanced Member

  • Miembros
  • PipPipPip
  • 84 mensajes
  • LocationVenezuela

Escrito 15 enero 2010 - 12:37

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..??
  • 0

#42 jordangel

jordangel

    Advanced Member

  • Miembros
  • PipPipPip
  • 84 mensajes
  • LocationVenezuela

Escrito 15 enero 2010 - 01:19

amigos aqu esta lo que llevo.. por ahora..me falta es como ago para realizar la busqueda gracias..

Archivos adjuntos


  • 0

#43 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

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



delphi
  1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  2. begin
  3. if not (key in['0'..'9', #8, #13]) then
  4.   key := #0;
  5. end;


  • 0

#44 jordangel

jordangel

    Advanced Member

  • Miembros
  • PipPipPip
  • 84 mensajes
  • LocationVenezuela

Escrito 15 enero 2010 - 07:37

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;


  • 0

#45 kafastoforman

kafastoforman

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 277 mensajes
  • LocationMexico D.F.

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.
  • 0

#46 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 15 enero 2010 - 08:28

Saludos.

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.


  • 0

#47 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 15 enero 2010 - 09:35

Hola amigo, acabo de revisar tu programa y vas bien  :cool:

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:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   if (Edit1.Text = '') then
  4.   begin
  5.       ShowMessage('Introdusca La Cedula del Alumno');
  6.       Edit1.SetFocus;
  7.   end
  8.   else if (Edit2.Text = '') then
  9.   begin
  10.       ShowMessage('Introdusca el Nombre del Alumno');
  11.       Edit2.SetFocus;
  12.   end
  13.   else if (Edit3.Text ='') then
  14.   begin
  15.       ShowMessage('Introdusca el Numero de Telefono del Alumno');
  16.       Edit3.SetFocus;
  17.   end
  18.   else if ((RadioButton1.Checked = false) and (RadioButton2.Checked = false))then
  19.   begin
  20.       ShowMessage('Seleccione El Sexo del Alumno');
  21.   end
  22.   else
  23.       ShowMessage('Registro Insertado Satisfactoriamente');
  24.  
  25.   Edit1.Clear;
  26.   Edit2.Clear;
  27.   Edit3.Clear;
  28.   RadioButton1.Checked := false;
  29.   RadioButton2.Checked := false;
  30.   Button1.Enabled := false;
  31.   Edit2.Enabled := false;
  32.   Edit3.Enabled := false;
  33.   RadioButton1.Enabled := false;
  34.   RadioButton2.Enabled := false;
  35.   Edit1.SetFocus;
  36. 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.
  • 0

#48 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

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.


delphi
  1. if not (key in['0'..'9', #8, #13]) then
  2.   key := #0;
  3. if (key = #13) and (Edit1.Text <> '') then
  4. Edit2.Text.SetFocus;


  • 0

#49 jordangel

jordangel

    Advanced Member

  • Miembros
  • PipPipPip
  • 84 mensajes
  • LocationVenezuela

Escrito 15 enero 2010 - 11:34

una pregunta.. no existe una manera de descompilar ese ejecutable..?? de manera que pueda ver el codigo original??.. eso es posible o imposible??..
  • 0

#50 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 16 enero 2010 - 06:50

El programa DeDe extrae los DFM (equivalente a ver el form com texto, que en tu caso no te servirá de mucho) de los resources del EXE y el resto del código en ASM ....
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
  • 0

#51 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 16 enero 2010 - 07:11

Porque desfalleces amigo jordangel?? ya vas por buen camino, aquí ya tienes todas las piezas lo que te falta es armarla. Dedicarle un poquito, pon de tu parte para que aprendas, conmigo cuenta si quieres seguir aprendiendo, pero si lo que quieres es aprovechar el trabajo de otros de compilando y copiando el código conmigo no cuentes.

Wilson, el código que coloque es de jordangel que lo subió con su programa.
  • 0

#52 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 16 enero 2010 - 08:49

jordangel, he cambiado algunas cosas en tu programa para que tenga algo de sentido y tengas un punto de partida , con la sola intención de que analices el código y no declines ni optes por caminos que no van a hacer de ti un buen profesional y puedas termines tu tárea, te dejo para que tu deduzcas las funciones de los botones Modificar, eliminar y cancelar, así como su habilitación y desabilitación.

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.



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ExtCtrls;
  8.  
  9. type  //Declaracion de tipo record
  10.   TAlumno = record
  11.   Cedula : string;
  12.   Nombre : string;
  13.   Telefono : string;
  14.   Sexo: String;
  15. end;
  16.  
  17. type
  18.   TForm1 = class(TForm)
  19.     Panel1: TPanel;
  20.     Panel2: TPanel;
  21.     edNombre: TEdit;
  22.     edTelefono: TEdit;
  23.     rbF: TRadioButton;
  24.     rbM: TRadioButton;
  25.     Label1: TLabel;
  26.     Label2: TLabel;
  27.     Label3: TLabel;
  28.     Label4: TLabel;
  29.     bnInsertar: TButton;
  30.     bnModificar: TButton;
  31.     bnEliminar: TButton;
  32.     bnCancelar: TButton;
  33.     bnCerrar: TButton;
  34.     edCedula: TEdit;
  35.     bnVerPrimero: TButton;
  36.     bnAnterior: TButton;
  37.     bnSiguiente: TButton;
  38.     bnNuevo: TButton;
  39.     procedure bnInsertarClick(Sender: TObject);
  40.     procedure FormCreate(Sender: TObject);
  41.     procedure bnVerPrimeroClick(Sender: TObject);
  42.     procedure bnAnteriorClick(Sender: TObject);
  43.     procedure bnSiguienteClick(Sender: TObject);
  44.     procedure bnNuevoClick(Sender: TObject);
  45.   private
  46.   function Posicion: Integer;
  47.     { Private declarations }
  48.   public
  49.     { Public declarations }
  50.   end;
  51.  
  52. var
  53.   Form1: TForm1;
  54.   Alumnos :array [0..4] of TAlumno; //Declaración del arreglo
  55.   PosicionActual : Integer; // Controla la posición en la navegación
  56. implementation
  57.  
  58. {$R *.dfm}
  59.  
  60. procedure TForm1.bnInsertarClick(Sender: TObject);
  61. var
  62. APosicion :Integer;
  63. begin
  64. Aposicion := Posicion;//Obtengo la proxima posición libre  del arreglo
  65.   if (edCedula.Text = '') then
  66.   begin
  67.     ShowMessage('Introduzca La Cedula del Alumno');
  68.     edCedula.SetFocus;
  69.   end
  70. else if (edNombre.Text = '') then
  71.   begin
  72.     ShowMessage('Introduzca el Nombre del Alumno');
  73.     edNombre.SetFocus;
  74.   end
  75. else if (edTelefono.Text ='') then
  76.   begin
  77.     ShowMessage('Introduzca el Numero de Telefono del Alumno');
  78.     edTelefono.SetFocus;
  79.   end
  80.   else if ((rbF.Checked = false) and (rbM.Checked = false))then
  81. begin
  82.   ShowMessage('Seleccione El Sexo del Alumno');
  83. end
  84. else
  85.   begin
  86.   if APosicion <> -1 then // Compruebo que haya un espacio en el arreglo
  87.   begin
  88.   Alumnos[APosicion].Cedula := edCedula.Text;
  89.   Alumnos[APosicion].Nombre := edNombre.Text;
  90.   Alumnos[APosicion].Telefono := edTelefono.Text;
  91.   if rbF.Checked then
  92.   Alumnos[APosicion].Sexo := 'Femenino' else
  93.   Alumnos[APosicion].Sexo := 'Masculino' ;
  94.     ShowMessage('Registro Insertado Satisfactoriamente');
  95.     edCedula.Clear;
  96.     edNombre.Clear;
  97.     edTelefono.Clear;
  98.     rbF.Checked := false;
  99.     rbM.Checked := false;
  100.     edCedula.SetFocus;
  101.   end
  102.   else
  103.   showmessage('El arreglo está lleno')
  104. end;
  105. end;
  106.  
  107. function TForm1.Posicion:Integer; // Obtengo la próxima posición libre
  108. var
  109. I:Integer;
  110. begin
  111. result := -1;
  112.   for I := 0 to Length(Alumnos)-1 do
  113.   if Alumnos[i].Cedula = '' then
  114.   begin
  115.   result := i;
  116.   Break
  117.   end;
  118. end;
  119.  
  120. procedure TForm1.FormCreate(Sender: TObject);  //Inicializamos el arreglo y la posicion
  121. var
  122. i: Integer;
  123. begin
  124. PosicionActual := 0;
  125. for i:= 0 to Length(Alumnos)-1 do
  126. begin
  127.   Alumnos[i].Cedula := '';
  128.   Alumnos[i].Nombre := '';
  129.   Alumnos[i].Telefono := '';
  130.   Alumnos[i].Sexo := '';
  131. end;
  132. end;
  133.  
  134. procedure TForm1.bnVerPrimeroClick(Sender: TObject);
  135. begin  //Voy a la posicion 0 del arreglo
  136. edCedula.Text:= Alumnos[0].Cedula;
  137. edNombre.Text := Alumnos[0].Nombre;
  138. edTelefono.Text := Alumnos[0].Telefono;
  139. if Alumnos[0].sexo = 'Femenino' then
  140.   rbF.Checked := true;
  141. if Alumnos[0].sexo = 'Masculino' then
  142.   rbM.Checked := true;
  143. end;
  144.  
  145. procedure TForm1.bnAnteriorClick(Sender: TObject);
  146. begin
  147. if PosicionActual > 0 then //Voy a la posicion anterior
  148. begin
  149.     edCedula.Text:= Alumnos[Posicionactual -1].Cedula;
  150. edNombre.Text := Alumnos[Posicionactual -1].Nombre;
  151. edTelefono.Text := Alumnos[Posicionactual -1].Telefono;
  152. if Alumnos[Posicionactual -1].sexo = 'Femenino' then
  153.   rbF.Checked := true;
  154. if Alumnos[Posicionactual -1].sexo = 'Masculino' then
  155.   rbM.Checked := true;
  156.   PosicionActual := PosicionActual -1;
  157. end;
  158. end;
  159.  
  160. procedure TForm1.bnSiguienteClick(Sender: TObject);
  161. begin
  162. if PosicionActual < High(Alumnos) then //Voy a la siguiente posicion
  163. begin
  164. edCedula.Text:= Alumnos[Posicionactual +1].Cedula;
  165. edNombre.Text := Alumnos[Posicionactual +1].Nombre;
  166. edTelefono.Text := Alumnos[Posicionactual +1].Telefono;
  167. if Alumnos[Posicionactual +1].sexo = 'Femenino' then
  168.   rbF.Checked := true;
  169. if Alumnos[Posicionactual +1].sexo = 'Masculino' then
  170.   rbM.Checked := true;
  171.   PosicionActual := PosicionActual +1;
  172.   end;
  173. end;
  174.  
  175. procedure TForm1.bnNuevoClick(Sender: TObject);
  176. begin // Limpia controles en caso de que estes navegando y quieras insertar un nuevo
  177.     edCedula.Clear;
  178.     edNombre.Clear;
  179.     edTelefono.Clear;
  180.     rbF.Checked := false;
  181.     rbM.Checked := false;
  182.     edCedula.SetFocus;
  183. end;
  184.  
  185. end.

Archivos adjuntos


  • 0




IP.Board spam blocked by CleanTalk.