Fórum Duplo-Clique em um Panel da StatusBar... #396030
20/02/2011
0
Elvio Lampugnani
Curtir tópico
+ 0Posts
20/02/2011
Marco Salles
var
mouseInStatusBar:Tpoint;
begin
with StatusBar1 do
begin
mouseInStatusBar:=ScreenToClient(Mouse.CursorPos);
if mouseInStatusBar.x <= Panels[0].Width then
showmessage('clicou no Primeiro')
else
if mouseInStatusBar.x <= (Panels[0].Width+Panels[1].Width) then
showmessage('clicou no Segundo')
else
showmessage('clicou no Terceiro');
end;
end;Gostei + 0
20/02/2011
Marco Salles
procedure TForm1.StatusBar1DblClick(Sender: TObject);
var
mouseInStatusBar:Tpoint;
pWidth,i:integer;
begin
with StatusBar1 do
begin
if (SimplePanel) OR (StatusBar1.Panels.Count = 0) then
i:=0
else
begin
mouseInStatusBar:=ScreenToClient(Mouse.CursorPos);
pWidth:=0;
for i := 0 to StatusBar1.Panels.Count - 2 do
begin
pWidth := pWidth + Panels[i].Width;
if mouseInStatusBar.x <= pWidth then
Break;
end;
end;
showmessage('Clicou no Panel '+Panels[i].Text);
end;
end;Gostei + 0
21/02/2011
Elvio Lampugnani
Exemplo para n_esimos Paneis
procedure TForm1.StatusBar1DblClick(Sender: TObject);
var
mouseInStatusBar:Tpoint;
pWidth,i:integer;
begin
with StatusBar1 do
begin
if (SimplePanel) OR (StatusBar1.Panels.Count = 0) then
i:=0
else
begin
mouseInStatusBar:=ScreenToClient(Mouse.CursorPos);
pWidth:=0;
for i := 0 to StatusBar1.Panels.Count - 2 do
begin
pWidth := pWidth + Panels[i].Width;
if mouseInStatusBar.x <= pWidth then
Break;
end;
end;
showmessage('Clicou no Panel '+Panels[i].Text);
end;
end;Grato.Funcionou 100%.Fiz uma pequena modificação no código.
with StatusBar1 do begin if (SimplePanel) OR (StatusBar1.Panels.Count = 0) then ShowMessage('Clicou na StatusBar...') else begin mouseInStatusBar:=ScreenToClient(Mouse.CursorPos); pWidth:=0; for i := 0 to StatusBar1.Panels.Count - 2 do begin pWidth := pWidth + Panels[i].Width; if mouseInStatusBar.x <= pWidth then Break; end; ShowMessage('Clicou no Panel['+IntToStr(i)+'] = '+QuotedStr(Panels[i].Text)); end; end;Gostei + 0
21/02/2011
Elvio Lampugnani
var
mouseInStatusBar:Tpoint;
begin
with StatusBar1 do
begin
mouseInStatusBar:=ScreenToClient(Mouse.CursorPos);
if mouseInStatusBar.x <= Panels[0].Width then
showmessage('clicou no Primeiro')
else
if mouseInStatusBar.x <= (Panels[0].Width+Panels[1].Width) then
showmessage('clicou no Segundo')
else
showmessage('clicou no Terceiro');
end;
end;Blz! Funcionando 100%.
Fiz um pequeno ajuste a minha necessidade:
with sb_principal do begin mouseInStatusBar:=ScreenToClient(Mouse.CursorPos); if ( mouseInStatusBar.x > Panels[0].Width) and (mouseInStatusBar.x < (Panels[0].Width+Panels[1].Width)) then showmessage('clicou no segundo panel - Usuários...'); end;Grato.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)