Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Unsichtbares Label (https://www.delphipraxis.net/79605-unsichtbares-label.html)

150gozilla 25. Okt 2006 11:14


Unsichtbares Label
 
Hallo @all.

Ich muss gerade rausfinden, ob ich mit der Maus auf einen "Unsichtbares Label" geklickt habe.

Wie könnte ich das am sinnvollsten lösen, meins sieht gerade so aus:


Delphi-Quellcode:
procedure TForm1.PanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftstate; x, y: Integer);
var
 Control : TControl;
 i: integer;
begin
 for i := 0 to TPanel(Sender).ControlCount-1 do
 begin
  with TPanel(Sender).Controls[i] do
  begin
   If (x < left) or (x > Left+Width) and (y < top) or (y > Top+Height) then exit else visible := true; // Überprüfung

  end;
 end;
end;

150gozilla 25. Okt 2006 11:25

Re: Unsichtbares Label
 
ERLEDIGT. Das
Delphi-Quellcode:
exit
hat alles kaputt gemacht. Nun gehts

So siehts nun aus:

Delphi-Quellcode:
procedure TForm1.PanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftstate; x, y: Integer);
var
 Control : TControl;
 i: integer;
begin
 for i := 0 to TPanel(Sender).ControlCount-1 do
 begin
  with TPanel(Sender).Controls[i] do
  begin
   If ((x < left) or (x > Left+Width)) or ((y < top) or (y > Top+Height)) then else visible := true;

  end;
 end;
end;

uligerhardt 25. Okt 2006 11:37

Re: Unsichtbares Label
 
Oder etwas einfacher und IMHO lesbarer:
Delphi-Quellcode:
procedure TForm1.PanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Control: TControl;
  i: Integer;
  pt: TPoint;
begin
  pt := Point(X, Y);
  for i := 0 to TPanel(Sender).ControlCount - 1 do
  begin
    Control := TPanel(Sender).Controls[i];
    if PtInRect(Control.BoundsRect, pt) then
      Control.Visible := True;
  end;
end;
Uli.

Klaus01 25. Okt 2006 11:37

Re: Unsichtbares Label
 
Zitat:

Zitat von 150gozilla
Delphi-Quellcode:
 If ((x < left) or (x > Left+Width)) or ((y < top) or (y > Top+Height)) then else visible := true;


Delphi-Quellcode:
If not ((x < left) or (x > Left+Width)) or ((y < top) or (y > Top+Height)) then
  visible := true;
Schaut vielleicht besser aus.

Grüße
Klaus

freak4fun 25. Okt 2006 11:39

Re: Unsichtbares Label
 
Wenn du aus der Schleife aussteigen willst benutze Break, nicht Exit; ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz