![]() |
aktives Visble eines Label zur Designzeit
Hallo,
ich habe mir Edits gebastelt, die wie ein TLabeledEdit ein Label besitzen. Nur meine Edits haben zwei Labels (Pre und Post) und die Labels könnten über zwei Properties des Edits sichtbar/unsichtbar gemacht werden. Soweit so gut, zur Laufzeit funktioniert alles wunderbar. Nur während der Designzeit funktoniert das Visible der Labels nicht (wie auch bei einem normalen Label). Wie könnt ich zur Designzeit trotzdem das Label verschwinden lassen? was ich beim debuggen der VCL rausgefunden habe, wird das Verstecken des Labels zur Designzeit verhindert, nur wie könnte man das umgehen? |
AW: aktives Visble eines Label zur Designzeit
Gibt es in XE2 die Eigenschaft DesignVisible?
|
AW: aktives Visble eines Label zur Designzeit
Zitat:
|
AW: aktives Visble eines Label zur Designzeit
Wenn du das eh schon in eine eigene Komponente gekapselt hast, würde ich TLabel ganz raus werfen. Einfach per TextOut() auf den Parent-Canvas und fertig ist die Laube, bei ausgeschalteter Beschriftung einfach nicht TextOuten.
Wenn es um die Strukturierung der Properties geht, ließe sich im Zweifel ja auch recht einfach eine eigene kleine Label-Klasse bauen. So wahnsinnig viel brint TLabel ja nicht mit, und viel mehr als Positionierung, Font, Alignment und Caption braucht man meistens eh nicht. Das ist fix selbst gestrickt. |
AW: aktives Visble eines Label zur Designzeit
Wenn Du bei Deiner Lösung mit den Labels bleiben willst könntest Du im DesignMode deren Parents evtl. einfach auf nil setzen.
|
AW: aktives Visble eines Label zur Designzeit
Man kann natürlich das TLabel auch ableiten, ihm ein DesinVisible-Property verpassen und die stellen in TLabel.Paint entsprechend anpassen.
|
AW: aktives Visble eines Label zur Designzeit
... ich wäre dann aber nicht sicher, ob die IDE dann nicht noch irgendwelche Maus-/Tastaturereignisse zuordnet (selbst wenn nichts sichtbares gemalt wird) ...
|
AW: aktives Visble eines Label zur Designzeit
ich werd´s mal mit parent = nil probieren - muss mir nur zuvor den alten parent merken
|
AW: aktives Visble eines Label zur Designzeit
...oder du erzeugst bzw. zerstörst die TLabels in der entsprechenden SetVisible-Methode ...
|
AW: aktives Visble eines Label zur Designzeit
ich hab´s jetzt so gelöst:
Delphi-Quellcode:
Ich merk mir in der SetParent-Procedure den Parent und bei Visible wird der Parent gesetzt, ansonsten Nil
procedure TLabeledMaskEdit.SetVisiblePreLabel(Value: Boolean);
begin //Wird aufgerufen, wenn sich die Variable "FVisiblePreLabel" ändert FVisiblePreLabel := Value; //FPreEditLabel beschreiben FPreEditLabel.Visible := FVisiblePreLabel; If csDesigning in ComponentState then If FVisiblePreLabel then FPreEditLabel.Parent := FLabel_Parent else FPreEditLabel.Parent := nil; end; |
AW: aktives Visble eines Label zur Designzeit
Die Kommentare sind böse.
Wie war das in dem Kommentar-Thread? Nutzlose nichtssagende Kommentare sind nutzlos, vorallem wenn sie genau das sagen, was man im Code eh sieht. Und vorallem, wenn diese Methode wirklich bei FVisiblePreLabel aufgerufen wird, dann gibt es eine geile Endlosschleife. Wer ist FLabel_Parent? Aber wichtiger: Wer ist der Owner dieser Komponente? Wie wird das Label editiert? - wie beim TLabeledEdit, also Subkomponenten-Property - oder dierekt als eigenstöndige Komponente |
AW: aktives Visble eines Label zur Designzeit
Zitat:
Mag sein, dass der Kommentar nutzlos ist, ich komm ganz gut klar damit Zitat:
Zitat:
brauch ich, um mir den Parent zu speichern Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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-2025 by Thomas Breitkreuz