Fórum Habilitando e desabilitando DbEdits Um de cada vez #257841
10/11/2004
0
[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:
[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
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
Curtir tópico
+ 0
Responder
Posts
10/11/2004
Andremuller
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;
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;
Responder
Gostei + 0
11/11/2004
Marco Salles
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
Meus agradecimentos... :P :P :P :P :P
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
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)