Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   onclick des TPanel (https://www.delphipraxis.net/184733-onclick-des-tpanel.html)

khh 17. Apr 2015 09:25

Delphi-Version: 5

onclick des TPanel
 
hallo zusammen,
ich habe meinen Labels die zur Laufzeit erstellt werden mit :

myCustomLabel2.OnClick:= @PanelClick;

das Klickereignis zugewiesen.

auf den Panels liegen zwei relativ grosse Labels.

beim Klick auf die Panels kann es passieren, dass ich die Labels "erwische" und das OnClick der Panels nicht ausgelöst wird.
die PanelCklick auch den Labels zuszuweisen bringt nix, da ich dort eine Eigenschaft des "Sender" auswerten muss.
Kann ich es irgendwie hinbekommen, dass der "LabelClick" quasi ausgeschaltet wird?


Ich danke euch
kh

DeddyH 17. Apr 2015 09:30

AW: onclick des TPanel
 
Hä? Du weist Deinen Labels einen ClickHandler zu, den Panels auch, wenn also ein Label geklickt wird, wird dessen Handler ausgeführt, bei einem Panel eben dessen. Was ist denn nun das Problem?

Darlo 17. Apr 2015 09:35

AW: onclick des TPanel
 
oder
Delphi-Quellcode:
labelx.HitTest := false;
Wenn es das in Deiner Version gibt.

khh 17. Apr 2015 09:37

AW: onclick des TPanel
 
das Problem ist, dass ich im onclick eine Eigenschaft von TmyPanel per
datum:= TmyPanel(sender).kalenderdatum; auswerte.
Wenn nun aber TLabel der Sender ist, habe ich diesen wert nicht zur Verfügung.

Müsste ich also auch die Labels mit dieser Eigenschaft versehen, oder geht das irgendwie anders ?

DeddyH 17. Apr 2015 09:39

AW: onclick des TPanel
 
Wenn man das Label erwischt, dürfte dessen Parent ja dann ein Panel sein. IMO könnte man auch da ansetzen.

khh 17. Apr 2015 09:39

AW: onclick des TPanel
 
>> labelx.HitTest := false; gibt es bei lazarus nicht.

apropo: warum da was von delphi 5 steht weiss ich auch nicht :-(

baumina 17. Apr 2015 09:41

AW: onclick des TPanel
 
Du kannst doch prüfen ob Sender ein Panel oder Label ist und für die Labels dann halt Sender.Parent nehmen.

khh 17. Apr 2015 09:42

AW: onclick des TPanel
 
Zitat:

Zitat von DeddyH (Beitrag 1298134)
Wenn man das Label erwischt, dürfte dessen Parent ja dann ein Panel sein. IMO könnte man auch da ansetzen.

und wie wäre die syntax dazu?
sender.parent gibts ja nicht :-(

baumina 17. Apr 2015 09:43

AW: onclick des TPanel
 
TLabel(Sender).Parent müsste es geben.

khh 17. Apr 2015 09:44

AW: onclick des TPanel
 
Zitat:

Zitat von baumina (Beitrag 1298136)
Du kannst doch prüfen ob Sender ein Panel oder Label ist und für die Labels dann halt Sender.Parent nehmen.

ja, aber wie ist die syntax?
Sender.parent geht nicht

DeddyH 17. Apr 2015 09:44

AW: onclick des TPanel
 
Delphi-Quellcode:
TLabel(Sender).Parent

khh 17. Apr 2015 09:46

AW: onclick des TPanel
 
Zitat:

Zitat von baumina (Beitrag 1298139)
TLabel(Sender).Parent müsste es geben.

datum:= TMyPanel(sender).parent gibt es , aber
datum:= TMyPanel(sender).parent.kalenderdatum;
gibt es dann wiederum nicht :-(

baumina 17. Apr 2015 09:48

AW: onclick des TPanel
 
Delphi-Quellcode:
if Sender.InheritsFrom(TLabel) then
begin
  Sender := TLabel(Sender).Parent;
end;
If Sender.InheritsFrom(TMyPanel) then
begin
// ...
end;

DeddyH 17. Apr 2015 09:48

AW: onclick des TPanel
 
Überleg doch mal: Sender ist ein Label, dessen Parent (evtl.) ein Panel.

Aviator 17. Apr 2015 09:49

AW: onclick des TPanel
 
Delphi-Quellcode:
TMyPanel(TLabel(Sender).Parent).Kalenderdatum

DeddyH 17. Apr 2015 09:53

AW: onclick des TPanel
 
Oder in der ganz langen (vorsichtigen) Form:
Delphi-Quellcode:
var
  Label: TLabel;
  Panel: TMyPanel;
begin
  if Sender is TLabel then
    begin
      Label := TLabel(Sender);
      if Assigned(Label.Parent) and (Label.Parent is TMyPanel) then
        begin  
          Panel := TMyPanel(Label.Parent);
          //Hier solltest Du auf das Kalenderdatum zugreifen können
        end;
    end;
end;

khh 17. Apr 2015 09:54

AW: onclick des TPanel
 
Zitat:

Zitat von DeddyH (Beitrag 1298144)
Überleg doch mal: Sender ist ein Label, dessen Parent (evtl.) ein Panel.

ja eben dann müsste doch aber :
datum:= TLabel(sender).parent.kalenderdatum;
funktionieren, geht aber nicht

oder steh ich grad sooo aufm schlauch

DeddyH 17. Apr 2015 09:55

AW: onclick des TPanel
 
Ja, aber Du musst doch noch einmal casten, Parent ist per se erst einmal ein TWinControl, Beispiele siehe oben.

khh 17. Apr 2015 10:01

AW: onclick des TPanel
 
Zitat:

Zitat von DeddyH (Beitrag 1298149)
Ja, aber Du musst doch noch einmal casten, Parent ist per se erst einmal ein TWinControl, Beispiele siehe oben.

:oops:

ich danke euch

funktioniert ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 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