Habilitando e desabilitando DbEdits Um de cada vez

Delphi

10/11/2004

[b:602a7e912a]Amigos, a situação que pega e a seguinte..[/b:602a7e912a]

Num Form Tenho vários DbEdits, Mas Somente Um De Cada Vez Pode Receber o Foco e ser digitado

[b:602a7e912a]Em outras palavras eu so Posso Ter um DbEdit Ativado de cada vez[/b:602a7e912a]

Inicialmente tenho todos os DbEdits Desativados
Quando Coloco a Base De Dados em Modo De Edição
O Primeiro DbEdit e Ativado
Ao sair deste DbEdit (Evento OnExit) o Proximo DbEdit e ativado

isto tudo poderia ser resolvido se colocasse em cada evento OnExit dos
DbEdits Um Código que permitisse a habilitação do Posterior
Mas acontece que sao muitos DbEdits e o código seria Repetidos

Assim se eu tiver no DbEdit1 No Seu Evento Onexit eu Devo Escrever:
procedure TFormDefinirVarContornoPorcentagems.ExitGeral

(Sender: TObject);
begin
DbEdit1.ReadOnly:=True;
DbEdit1.TabStop:=False;
DbEdit2.ReadOnly:=True;
DbEdit2.TabStop:=False;
DbEdit2.SetFocus;
end;



[b:602a7e912a]Todos Os DbEdits Para Facilitar tem nomes Em sequencia
DbEdit1,DbEdit2, DbEdit3, etc..com sua ordem de tabulãção[/b:602a7e912a]

eu gostaria de escrever Um [b:602a7e912a]código Generico [/b:602a7e912a]do evento OnExit, usando o Parametro Sender, [b:602a7e912a]algo que fizesse menção ao proximo DbEdit[/b:602a7e912a]..Como Fazer Isto :?: :?: :?:


Alguem pode contribuir... Obrigado :P


Marco Salles

Marco Salles

Curtidas 0

Respostas

Andremuller

Andremuller

10/11/2004

Coloca o código abaixo na tua aplicação e aponta todos os eventos OnExit para esse método. A configuração dos DBEdtits tu altera de acordo com a tua necessidade.

Espero ter ajudado.

procedure TForm1.DBEdit1Exit(Sender: TObject);
var
oDBEdit: TDBEdit;
s: string;
i: integer;
begin
s := TDBEdit(Sender).Name;
i := StrToInt(copy(s, Length(s), 1));
inc(i);
oDBEdit := TDBEdit(FindComponent(´DBEdit´ + IntToStr(i)));
if Assigned(oDBEdit) then
begin
TDBEdit(Sender).Enabled := False;
oDBEdit.Enabled := True;
oDBEdit.SetFocus;
end;
end;


GOSTEI 0
Marco Salles

Marco Salles

10/11/2004

A Procedure [b:03667b1de7]FindComponent[/b:03667b1de7] era tudo que eu precisava <Retorna o componente na propriedade array de componennte que tem, determinado Nome>..

o código sugerido teve que passar por uma [b:03667b1de7]micro cirugia[/b:03667b1de7], mas foi de Tamanha Importancia para eu concluir

procedure TFormDefinirVarContornoPorcentagems.ExitGeral(
  Sender: TObject);
var
i:Integer;
Nome:String;
begin
Nome:=TDbEdit(Sender).Name;
Delete(Nome,1,6);
I:=StrToInt(Nome)+1;
Nome:=´DBEdit´+IntToStr(Indice);
TDBEdit(Sender).ReadOnly:=true;
TDBEdit(Sender).tabStop:=False;
if assignedt(Form1.FindComponent(Nome)) then
  begin
   TDBedit(Form1.FindComponent(Nome).ReadOnly:=False;
   TDBedit(Form1.FindComponent(Nome).tabStpo:=False;
   TDBedit(Form1.FindComponent(Nome).ReadOnly:=False;
  end;  
end;
end;


Meus agradecimentos... :P :P :P :P :P


GOSTEI 0
POSTAR