Einzelnen Beitrag anzeigen

hellion

Registriert seit: 10. Jun 2010
4 Beiträge
 
#3

AW: Notification, falls Komponente nicht mehr sichtbar

  Alt 16. Okt 2018, 14:41
Ich will nicht die TPanel/TGroupBox-Klasse erweitern und alle Instanzen davon in allen Fenster ersetzen, ist viel zu viel Aufwand.
Ich will auch nicht, dass wenn Panel.Visible bzw. GroupBox.Visible auf false gesetzt wird, dass auch CheckBox.Visible auf false gesetzt wird (das wäre ja falsch).
Ich brauche die Information, ob die Komponente aktuell sichtbar ist / angezeigt wird. Bei GroupBox.Visible = false sollte wenigstens die Property Checkbox.Showing auf false gehen, da die Checkbox gerade nicht angezeigt wird. Ich brauche eine Rückmeldung (Event, Message, Callback, was auch immer) innerhalb meiner Checkbox-Klasse, wenn Parent.Visible = false gesetzt wird, um weitere Hintergrundsaktionen zu sperren bzw. zu aktivieren. Es ist nicht in Ordnung, dass Checkbox.Showing = true, wenn Parent.Visible = false, das macht keinen Sinn. Die Property Showing bildet aber nicht den tatsächlichen Zustand der Sichtbarkeit der untergeordneten Komponente ab, Auszug aus der Delphi-Hilfe:

Zitat:
Haben die Visible-Eigenschaften einer Komponente und aller übergeordneten Komponenten in der Hierarchie übergeordneter Komponenten den Wert true, hat auch Showing den Wert true. Wenn eine der übergeordneten Komponenten, die das Steuerelement enthalten, den Wert false in der Eigenschaft Visible aufweist, kann Showing true oder false sein.

Ich habe schon eine Funktion, die die Parents durchgeht und darüber entscheidet, ob die Checkbox (oder eine andere Komponente in einem Panel/einer GroupBox) tatsächlich sichtbar ist oder nicht. Was aber fehlt ist, die Benachrichtigung seitens des Parents.


Ich habe diverse abgeleiteten Klassen von TEdit, TCheckBox, TComboBox, etc. Diese werden je nach Anwendungsfall auf ein Panel / eine GroupBox platziert. Je nach Fenster können diese wiederum in weiteren übergeordneten Panels/GroupBoxen/PageControl platziert sein. Wenn eine dieser Hauptkomponenten ausgeblendet wird, möchte ich bei meiner Komponente (Edit, CheckBox, GroupBox) das schon mitbekommen, um weitere Hintergrundsprozesse zu deaktivieren, die sonst meine Komponente auslöst.

Geändert von hellion (16. Okt 2018 um 14:44 Uhr)
  Mit Zitat antworten Zitat