Criando Objetos em execução

Delphi

10/06/2005

Galera, uso a seguinte procedure no meu programa para criar um formzinho e exibir alguns valores para edição...
Mas tenho um padrao de quando se pressiona pula par ao proximo campo...
e se for o ultimo fecha o Form...

Então preciso incluir uma procedure no OnKeyDown do DBEdit...alias, dos dois
além do KeyPress para testar as teclas digitadas...

Como poderia fazer isso...


procedure TfrmMontagemInterna.GridItensCompDblClick(Sender: TObject);
var
FrmQtd : TForm;
lblPeso, lblQtd : TLabel;
dbedtQtd, dbedtPeso : TDBEdit;
begin
qryItensComp.Edit;
FrmQtd := NIl;
lblPeso := NIL;
lblQtd := NIL;
dbedtQtd := NIL;
dbedtPeso := NIL;
Try
(*Cria o Formulário de QTD *)
FrmQtd := TForm.Create(Nil);
FrmQtd.Width := 251;
FrmQtd.Height := 77;
FrmQtd.Caption := ´Alteração de Quantidade e Peso´;
FrmQtd.Top := Mouse.CursorPos.Y;
FrmQtd.Left := Mouse.CursorPos.X;
FrmQtd.KeyPreview := True;
FrmQtd.BorderStyle := bsToolWindow;
(*Cria o Label de Qtd*)
lblQtd := TLabel.Create(NIl);
lblQtd.Parent := FrmQtd;
lblQtd.Left := 24;
lblQtd.Top := 8;
lblQtd.Width := 70;
lblQtd.Height := 13;
lblQtd.Font.Color := clBlue;
lblQtd.Font.Style := [fsBold];
lblQtd.Caption := ´Quantidade:´;
(*Cria o Label de Peso*)
lblPeso := TLabel.Create(Nil);
lblPeso.Parent := FrmQtd;
lblPeso.Left := 152;
lblPeso.Top := 8;
lblPeso.Width := 33;
lblPeso.Height := 13;
lblPeso.Caption := ´Peso:´;
lblPeso.Font.Color := clBlue;
lblPeso.Font.Style := [fsBold];
(*Cria um TDBEdit de QTD*)
dbedtQtd := TDBEdit.Create(Nil);
dbedtQtd.Parent := FrmQtd;
dbedtQtd.Width := 121;
dbedtQtd.Left := 0;
dbedtQtd.Top := 24;
dbedtQtd.DataSource := dtsItensComp;
dbedtQtd.DataField := ´QTD´;
(*Cria um TDBEdit de Peso*)
dbedtPeso := TDBEdit.Create(Nil);
dbedtPeso.Parent := FrmQtd;
dbedtPeso.Left := 120;
dbedtPeso.Top := 24;
dbedtPeso.Width := 121;
dbedtPeso.Height := 21;
dbedtPeso.DataSource := dtsItensComp;
dbedtPeso.DataField := ´peso´;
(*Mostra o Form*)
FrmQtd.ShowModal;
finally
lblPeso.Free;
lblQtd.Free;
dbedtQtd.Free;
dbedtPeso.Free;
FrmQtd.Free;
end;

end;


Tremonti

Tremonti

Curtidas 0

Respostas

Delphi32

Delphi32

10/06/2005

Faça o seguinte: No form do grid crie uma procedure com os mesmos parâmetros que um evento OnKeyDown gera. Por exemplo:

private
    { Private declarations }
    procedure EditKeyDown(Sender: TObject; var Key: Word;
       Shift: TShiftState);
  public
    { Public declarations }
  end;


Agora crie o corpo da rotina:

procedure TForm1.EditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key=VK_RETURN then ShowMessage(´Enter Pressionado´);
end;


E agora na hora que você cria o Edit, você diz que o Evento OnKeyDown dele é essa procedure que você criou:

//...
(*Cria um TDBEdit de QTD*) 
dbedtQtd := TDBEdit.Create(Nil); 
dbedtQtd.Parent := FrmQtd; 
dbedtQtd.Width := 121; 
dbedtQtd.Left := 0; 
dbedtQtd.Top := 24; 
dbedtQtd.DataSource := dtsItensComp; 
dbedtQtd.DataField := ´QTD´;
dbedtQtd.OnKeyDown := EditKeyDown; //<<VEJA AQUI
//...


Obs.: No form do grid essa procedure poderia estar declarada como public ou mesmo private. Funciona das duas formas.

Até!


GOSTEI 0
POSTAR