Fórum Unico procedimento para identificar varios componentes #370021
27/04/2009
0
Gostaria que quando clicasse em qualquer um destes componentes ou dentro do proprio radiogroup , disparasse um unico procedimento que identificasse o radiogroup.
Pedroso
Curtir tópico
+ 0Posts
27/04/2009
Woinch
Se não for isso que queria, tem como explicar um pouco melhor? Porque não entendi muito bem.
Espero ter ajudado.
Gostei + 0
27/04/2009
Pedroso
Private
LastControl: TControl;
procedure CntrlOfChangeControl(Sender: TObject);
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange := CntrlOfChangeControl;
end;
procedure TForm1.CntrlOfChangeControl(Sender: TObject);
var
JmpToControl: TControl;
JmpToComponent: TComponent;
begin
if ActiveControl <> Nil then
if ActiveControl is TJvPanel then begin
if Length((ActiveControl as TJvPanel).Name)=9 then
JmpToComponent.Name:= ´gbCabide´ +
RightStr((ActiveControl as TJvPanel).Name,2);
if Length((ActiveControl as TJvPanel).Name)=11 then
JmpToComponent.Name:= ´gbSofa´ +
RightStr((ActiveControl as TJvPanel).Name,2);
JmpToControl:=TRadioGroup(JmpToComponent);
if (JmpToControl as TRadioGroup).Color= clBlack then
LastControl:= TRadioGroup(JmpToComponent);
end;
end;
Desta forma consigo descobrir se o objeto foi selecionado pelo focus , o problema é que não consigo foco em panel. Alguem tem alguma ideia?
Gostei + 0
27/04/2009
Marco Salles
Não é que o Panel Não receba o Foco .. é o Label que não recebe pois
ele descende da TGraphicControl e não da TWinControl
Então se seu Panel so tem Label vc deve programar o Evento OnClick
Mas o Label não detera o Foco ...
procedure TForm1.FormCreate(Sender: TObject); begin panel1.Parent:=RadioGroup1; panel1.Left:=10; panel1.Top:=10; end;
procedure TForm1.Label1Click(Sender: TObject); begin Panel1Click(TControl(sender).Parent); end;
procedure TForm1.Panel1Click(Sender: TObject); begin Showmessage(´Nome do Container do ´+ Tpanel(sender).Name+´ = ´ +TPanel(sender).Parent.Name); end;
Gostei + 0
27/04/2009
Marco Salles
TabStop para True
e coloque no Evento OnEnter do Panel
é aqueloa Hora que o Foco Some , e vc tem que dar um Tab para ir
para o Proximo Controle ... Entende ????
Gostei + 0
27/04/2009
Pedroso
Gostei + 0
27/04/2009
Marco Salles
E o que vc acha que estas instruções fazem ???
Basta ligar os mesmo Manipuladores dos diversos componentes ao
mesmo evento
procedure TForm1.TodosLabelDoSuFormClick(Sender: TObject); begin TodosPanelDoSeuFomrClick(TControl(sender).Parent); end;
procedure TForm1.TodosPanelDoSeuFomrClick(Sender: TObject); begin Showmessage(´Nome do Container do ´+ Tpanel(sender).Name+´ = ´ +TPanel(sender).Parent.Name); end;
Assim Todos compartilham do mesmo evento
Gostei + 0
28/04/2009
Pedroso
Gostei + 0
28/04/2009
Marco Salles
Se vc colocar em tempo de desgined em Um Formulário um Panel
e dentro desse panel um Componente ( Por exemplo um Edit )
Quem é o Proprietário desse Edit ?????
Resposta [b:aaafe7aabf]Errada[/b:aaafe7aabf] quem disse ou pensou que é o Panel
Outra , esta tem mais a ver com Vc
Coloque em Tempo de Projeto no Form um RadioGroup e dentro dele
coloque um Panel
Quem é o Progenitor desse panel ???
Resposta Errada quem disse ou pensou que é o RafioGroup
Por isso Eu no evento Oncreate Nudei o Progenitor do Panel
procedure TForm1.FormCreate(Sender: TObject); begin panel1.Parent:=RadioGroup1; panel1.Left:=10; panel1.Top:=10; //Outros Paneis Outros RadioGroup end;
entende ???
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)