AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Kompo ableiten: Visible bei Show und Hide ?

Ein Thema von Martin K · begonnen am 23. Jul 2006 · letzter Beitrag vom 23. Jul 2006
Antwort Antwort
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 16:38
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:
procedure VonTEditAbgeleitet.SetVisible(const Value: Boolean);
begin
  inherited Visible := Value;
  MeineZweiteKompo.Visible := Value;
end;
Aber leider klappt das ganze nicht bei den Aufrufen Show/Hide
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 von Delphi-Hilfe:
Durch den Aufruf der Methode Show wird Visible auf true, durch den Aufruf von Hide auf false gesetzt.
Ist es etwa umgekehrt?
Dass beim Setzen der Eigenschaft Visible Show bzw. Hide aufgerufen wird?
Bitte helft mir...
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 16:40
Versuch mal Hide und Show der ersten Komponente zu überschreiben.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 16:41
Hilf mir mal auf die Sprünge, ist SetVisible virtual? Wenn nicht, musst du Show und Hide auch noch neuschreiben.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 16:43
Zitat von Florian Bernd:
Versuch mal Hide und Show der ersten Komponente zu überschreiben.
Ja, das werd ich dann wohl tun müssen...
Kann ich mir dann die Prozedur bei der Eigenschaft Visible sparen?
Also wo wird jetzt was aufgerufen???


//Edit:
Zitat von Dax:
Hilf mir mal auf die Sprünge, ist SetVisible virtual? Wenn nicht, musst du Show und Hide auch noch neuschreiben.
Das würde ich gern auch wissen, wie ich die überschreiben muss..
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;
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 16:49
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
Perform(CM_VISIBLECHANGED, Ord(Value), 0); aus. Man könnte also die Message abfangen und darin die zweit-Compo benachrichtigen.

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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 16:54
Danke , 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?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 17:21
Wie muss ich denn die Prozedur deklarieren?
Hab es so versucht:
    procedure CMVisibleChanged(var Message: Byte); message CM_VisibleChanged; Doch egal ob Show oder Hide - als Message wird immer 11 übergeben
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 17:34
Hallo Martin,

die korrekte Signatur der Behandlungsroutine siehe so aus:

procedure CMVisibleChanged (var Message: TMessage); message CM_VISIBLECHANGED; Aber vielleicht ist es einfacher, die PROTECTED-Methode Delphi-Referenz durchsuchenTControl.VisibleChanging zu überschreiben. Diese wird aufgerufen, bevor das Control den neuen Zustand annimmt.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Kompo ableiten: Visible bei Show und Hide ?

  Alt 23. Jul 2006, 18:00
Danke, jetzt hab ich's

So klappt's:
Delphi-Quellcode:
procedure VonTEditAbgeleitet.VisibleChanging;
begin
  inherited;
  MeineZweiteKompo.Visible := not Visible; // weil Visible erst nach der Prozedur geändert wird
end;
Für Enabled gibt es übrigens die virtuelle Protected-Methode SetEnabled.
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 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