Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Trasladar Procedure (https://www.clubdelphi.com/foros/showthread.php?t=76207)

L3st4t 16-10-2011 02:15:22

Trasladar Procedure
 
Buenas....

Cree un codigo en el procedure del "boton1' resulta que no quiero copiar de nuevo el codigo en el event Enter del Edit. Como hago para llamar al procedure desde dicho evento en otras ocasiones lo he hecho pero ahorita no quiere funcionar con el método que usado antes.

Gracias

ecfisa 16-10-2011 03:16:43

Hola L3st4t.

En realidad no te entiendo muy claramente... pero por lo que pude descifrar sería:

Código Delphi [-]
Edit1.OnEnter:= Button1.OnEnter
O de otro modo, posicionado en el TEdit, desde el Object Inspector -> Pestaña events -> OnEnter, y elegir: Button1.OnEnter

Un saludo.

L3st4t 16-10-2011 03:39:05

Si algo así es lo que necesito.... Probé el código que me pasaste y no me llamo al evento.

Lo que pasa es que estaba tratando de llamar el Método desde el OnEnter pero me genera un error

dec 16-10-2011 09:33:50

Hola,

En principio, si los eventos comparten el mismo número y tipo de argumentos, pueden compartirse entre diferentes objetos o instancias de los mismos tipos de objeto. Por lo demás, a mí me parece que falta algo de información. Sin ir más lejos, dices que si usas "el método" desde el "OnEnter" te "genera un error". ¿Pero qué error? Eso no lo dices. Yo creo que podrías copiar aquí al menos parte de tu código y señalar dónde encuentras el error. O alguna forma de reproducir dicho error, de manera que sepamos con qué estamos tratando.

Sapt_86 16-10-2011 15:31:41

Intenta con esto:
Código Delphi [-]
procedure TForm1.btn1Enter(Sender: TObject);
begin
 ShowMessage('HOLA');
end;

procedure TForm1.edt1Enter(Sender: TObject);
begin
  btn1Enter(sender);
end;

L3st4t 16-10-2011 21:45:05

Ok, Este es mi codigo

Código Delphi [-]
procedure TF_Principal.Button1Click(Sender: TObject);
Var Codigo: String;
begin
Codigo := EditCodigo.Text;
with DataM.MyQuery do
  begin
    SQL.Clear;
    SQL.Add('SELECT * FROM SFixed');
    SQL.Add('WHERE');
    SQL.Add('FX_CODIGO = :Codigo');
    SQL.Add('AND SFIXED.FX_TIPO =  :9');
    ParamByName('Codigo').AsString:= Codigo;
    ParamByName('9').AsString:= '9';
    RequestLive := true;
    Open;
    While EditCodigo.Text <> '' do
    begin
    IF  (FieldByName('FX_CODIGO').AsString <> Codigo)  then
       begin
       ShowMessage('El Accionista No Existe Pasar Por Administración');
       L_Aprobado.Visible := False;
       end;
    IF  (FieldByName('FX_CODIGO').AsString = Codigo)  AND (FieldByName('FX_SALDO').AsCurrency > 0) then
       begin
       ShowMessage('El Accionista Presenta Deuda Pasar Por Administración');
       L_Aprobado.Visible := False;
       end;
    IF  (FieldByName('FX_CODIGO').AsString = Codigo)  AND (FieldByName('FX_SALDO').AsCurrency = 0) then
       begin
       L_Aprobado.Visible := True;
       end;
    Break;
    end;
       IF  EditCodigo.Text = ''  then
          begin
          ShowMessage('Por Favor Ingrese ID del Accionista');
          end;


  end;
end;

Disculpen no me explique bien en cuanto el error..El error me lo da cuando copio ese mismo código en el evento Enter del edit.

Con los tips que me han dado aquí para llamar el método simplemente no hace nada. El programa corre perfectamente pero cuando le doy Enter no ejecuta nada.

Gracias por su colaboración

Saludos...

Sapt_86 17-10-2011 02:10:58

Hola L3st4t.

Creo entender lo que intentas hacer, si lo que quieres es que al presionar la tecla enter en el edit se ejecute el procedimiento que esta asociado al evento OnClick del boton, debes hacer lo siguiente, en el evento OnKeyUp del edit:

Código Delphi [-]
procedure TForm1.edt1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key= vk_return) then
    btn1.Click;
end;

o

Código Delphi [-]
procedure TForm1.edt1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key= vk_return) then
    btn1.OnClick(Sender);
end;

Ambos deberian funcionar. El evento OnEnter de algunos objetos no hace referencia a que se ejecuta cuando presionas la tecla enter.

Espero haberte ayudado, de lo contrario dime que error te muestra.

Saludos.

defcon1_es 17-10-2011 13:55:20

¿Y no sería más claro y sencillo crear un procedimiento con el código que necesites?

Ejp:

Código Delphi [-]
procedure TF_Principal.MiProcedimiento;
Var Codigo: String;
begin
Codigo := EditCodigo.Text;
with DataM.MyQuery do
  begin
    SQL.Clear;
    SQL.Add('SELECT * FROM SFixed');
    SQL.Add('WHERE');
    SQL.Add('FX_CODIGO = :Codigo');
    SQL.Add('AND SFIXED.FX_TIPO =  :9');
    ParamByName('Codigo').AsString:= Codigo;
    ParamByName('9').AsString:= '9';
    RequestLive := true;
    Open;
    While EditCodigo.Text <> '' do
    begin
    IF  (FieldByName('FX_CODIGO').AsString <> Codigo)  then
       begin
       ShowMessage('El Accionista No Existe Pasar Por Administración');
       L_Aprobado.Visible := False;
       end;
    IF  (FieldByName('FX_CODIGO').AsString = Codigo)  AND (FieldByName('FX_SALDO').AsCurrency > 0) then
       begin
       ShowMessage('El Accionista Presenta Deuda Pasar Por Administración');
       L_Aprobado.Visible := False;
       end;
    IF  (FieldByName('FX_CODIGO').AsString = Codigo)  AND (FieldByName('FX_SALDO').AsCurrency = 0) then
       begin
       L_Aprobado.Visible := True;
       end;
    Break;
    end;
       IF  EditCodigo.Text = ''  then
          begin
          ShowMessage('Por Favor Ingrese ID del Accionista');
          end;
  end;
end;

y lo llamas cuando y donde lo necesites:

Código Delphi [-]
procedure TF_Principal.edt1KeyUp(Sender: TObject; var Key: Word;   Shift: TShiftState); 
begin   
  if (Key= vk_return) then     
    MiProcedimiento; 
end;

procedure TF_Principal.edt1Enter(Sender: TObject); 
begin   
  MiProcedimiento; 
end;

L3st4t 17-10-2011 16:31:28

Gracias Sapt_86 Por tu respuesta... Muy agradecido


defcon1_es no podria esta mas deacuerdo contigo de hecho antes de postear la pregunta ya lo habia hecho pero resulta que cuando llamo el procedimiento mas de una vez me da un error que al parecer es de memoria y se posiciona en el
Código Delphi [-]
 Whit DataM.MyQuery do
por ende la aplicación no me corre y por tal motivo poestee la pregunta para ve que estaba haciendo mal.

Entonces que podrá ser?

Saludos


La franja horaria es GMT +2. Ahora son las 18:37:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi