[Lazarus-es] ruidito

José Mejuto joshyfun en gmail.com
Vie Jul 9 13:32:27 CEST 2010


Hello Paola,

Friday, July 9, 2010, 1:50:05 AM, you wrote:

PB> type
PB>   TMiClase = class(TWinControl); 

PB> procedure EnterTabs(Key: char; Form: TForm);
PB> begin
PB>      if (key =  #13) and not(Form.ActiveControl is TCustomButton) then
PB>         begin
PB>             TMiClase(Form).SelectNext(Form.ActiveControl, True, True);
PB>             Key := #0;
PB>         end;
PB>      if (key =  #27) then
PB>         begin
PB>           Key := #0;
PB>           Form.Close;
PB>         end;
PB>  end; 
PB> Ahora le agregué lo del ESC.(el segundo if). PERO, de todas maneras, me
PB> sigue jorobando el CLIN.... por más key:= #0 que pongo.

Es normal que no te funcione :) La manía de no calificar la
entrada/salida de variables. Prueba poniendo:

procedure EnterTabs(var Key: char; const Form: TForm);

De todos modos, y puestos a "mejorar" o hacerlo un poco más "elegante"
:) Te sugiero que crees este código en un .frm:

type
TFormEnterESC=class(TForm)
    procedure FormKeyPress(Sender: TObject; var Key: char);
end;
procedure TFormEnterESC.FormKeyPress(Sender: TObject; var Key: char);
begin
  if (key =  #13) and not(ActiveControl is TCustomButton) then
  begin
    SelectNext(ActiveControl, True, True);
    Key := #0;
  end
  else
  if (key =  #27) then
  begin
    Key := #0;
    Close;
  end;
end;

Después en cada form que quieras que tenga ese funcionamiento en el
KeyPress simpemente heredas desde TFormEnterESC. Vamos que en el resto
de forms donde pone:

uses
  system, classes...;

type MiFormdeFacturacion=class(TForm)
[...]

Lo cambias por:

uses
  system, classes...,uformenteresc;

type MiFormdeFacturacion=class(TFormEnterESC)
[...]

Y automáticamente se hereda ese comportamiento en el keypress, así
como el keypreview=true, los colores, etc que quieras por defecto en
esos forms.

PB> Y hay otra cosa rara... en otro form tengo 5 TDBEdits. Cuando presiono
PB> ESC, no se dispara el evento keypress por más que ya verifiqué que tengo
PB> la propiedad keypreview=true.
PB> Tengo otro form similar donde uso los mismos controles y pasa lo mismo.

Hmmmm... eso si que no tengo ni idea... probaré.

PB> Cuando termine esta aplicación (algún día :) ) va a funcionar en linux!!
PB> pero para desarrollarla, estoy usando windows.

Lo decía por si era un bug de la LCL, pero por ahora parece que no :)

-- 
Best regards,
 José





More information about the Lazarus-es mailing list