![]() |
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 |
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?
|
AW: onclick des TPanel
oder
Delphi-Quellcode:
Wenn es das in Deiner Version gibt.
labelx.HitTest := false;
|
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 ? |
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.
|
AW: onclick des TPanel
>> labelx.HitTest := false; gibt es bei lazarus nicht.
apropo: warum da was von delphi 5 steht weiss ich auch nicht :-( |
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.
|
AW: onclick des TPanel
Zitat:
sender.parent gibts ja nicht :-( |
AW: onclick des TPanel
TLabel(Sender).Parent müsste es geben.
|
AW: onclick des TPanel
Zitat:
Sender.parent geht nicht |
AW: onclick des TPanel
Delphi-Quellcode:
TLabel(Sender).Parent
|
AW: onclick des TPanel
Zitat:
datum:= TMyPanel(sender).parent.kalenderdatum; gibt es dann wiederum nicht :-( |
AW: onclick des TPanel
Delphi-Quellcode:
if Sender.InheritsFrom(TLabel) then
begin Sender := TLabel(Sender).Parent; end; If Sender.InheritsFrom(TMyPanel) then begin // ... end; |
AW: onclick des TPanel
Überleg doch mal: Sender ist ein Label, dessen Parent (evtl.) ein Panel.
|
AW: onclick des TPanel
Delphi-Quellcode:
TMyPanel(TLabel(Sender).Parent).Kalenderdatum
|
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; |
AW: onclick des TPanel
Zitat:
datum:= TLabel(sender).parent.kalenderdatum; funktionieren, geht aber nicht oder steh ich grad sooo aufm schlauch |
AW: onclick des TPanel
Ja, aber Du musst doch noch einmal casten, Parent ist per se erst einmal ein TWinControl, Beispiele siehe oben.
|
AW: onclick des TPanel
Zitat:
ich danke euch funktioniert ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz