![]() |
Kompo ableiten: Visible bei Show und Hide ?
Hi,
folgendes Problem: Habe eine Komponente vom TEdit abgeleitet. Dazu gehört noch eine weitere, die auch sichtbar ist. Wenn ich also Visible auf False stelle werden beide Komponenten unsichtbar, bei True beide sichtbar. Klappt soweit ganz gut, hab also einfach bei der property Visible folgenden Code:
Delphi-Quellcode:
Aber leider klappt das ganze nicht bei den Aufrufen Show/Hide :(
procedure VonTEditAbgeleitet.SetVisible(const Value: Boolean);
begin inherited Visible := Value; MeineZweiteKompo.Visible := Value; end; Und ich dachte immer, bei Show würde nur Visible auf True und bei Hide auf False gesetzt werden, so dass also die obige Prozedur auch bei Show/Hide aufgerufen werden müsste: Zitat:
Dass beim Setzen der Eigenschaft Visible Show bzw. Hide aufgerufen wird? Bitte helft mir... |
Re: Kompo ableiten: Visible bei Show und Hide ?
Versuch mal Hide und Show der ersten Komponente zu überschreiben.
Florian |
Re: Kompo ableiten: Visible bei Show und Hide ?
Hilf mir mal auf die Sprünge, ist SetVisible virtual? Wenn nicht, musst du Show und Hide auch noch neuschreiben.
|
Re: Kompo ableiten: Visible bei Show und Hide ?
Zitat:
Kann ich mir dann die Prozedur bei der Eigenschaft Visible sparen? Also wo wird jetzt was aufgerufen??? :wiejetzt: //Edit: Zitat:
Hab halt nur PE. Wurde der rote Kasten abgeschafft ??? //nochmal Edit: SetVisible hab ich mir in private selber definiert, ohne Virtual.
Delphi-Quellcode:
private
function GetVisible: Boolean; procedure SetVisible(const Value: Boolean); published property Visible: Boolean read GetVisible write SetVisible default True; |
Re: Kompo ableiten: Visible bei Show und Hide ?
Die Methoden Show und Hide setzen das Property "Visible". Das Property Visible ruft SetVisible auf welches man jedoch nicht überschreiben kann weil es nicht virtuell ist. SetVisible führt allerdings ein
Delphi-Quellcode:
aus. Man könnte also die Message abfangen und darin die zweit-Compo benachrichtigen.
Perform(CM_VISIBLECHANGED, Ord(Value), 0);
mit überschreiben durch das Schlüsselwort "override" ist hier nichts zu machen da die Methoden Show, Hide und SetVisible alle nicht virtual sind. Also bleibt wirklich nur übrig die Message "CM_VISIBLECHANGED" abzufangen |
Re: Kompo ableiten: Visible bei Show und Hide ?
Danke :thumb: , werd's gleich mal versuchen...
Auch wenn's ein wenig OT ist, aber dasselbe gilt auch für die Eigenschaft Enabled. Kann ich da auch irgendeine Message abfangen? |
Re: Kompo ableiten: Visible bei Show und Hide ?
Wie muss ich denn die Prozedur deklarieren?
Hab es so versucht:
Delphi-Quellcode:
Doch egal ob Show oder Hide - als Message wird immer 11 übergeben :gruebel:
procedure CMVisibleChanged(var Message: Byte); message CM_VisibleChanged;
|
Re: Kompo ableiten: Visible bei Show und Hide ?
Hallo Martin,
die korrekte Signatur der Behandlungsroutine siehe so aus:
Delphi-Quellcode:
Aber vielleicht ist es einfacher, die PROTECTED-Methode
procedure CMVisibleChanged (var Message: TMessage); message CM_VISIBLECHANGED;
![]() Gruß Hawkeye |
Re: Kompo ableiten: Visible bei Show und Hide ?
Danke, jetzt hab ich's :thumb:
So klappt's:
Delphi-Quellcode:
Für Enabled gibt es übrigens die virtuelle Protected-Methode SetEnabled.
procedure VonTEditAbgeleitet.VisibleChanging;
begin inherited; MeineZweiteKompo.Visible := not Visible; // weil Visible erst nach der Prozedur geändert wird end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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