Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Sich selbst ausblendendes Label (https://www.delphipraxis.net/51077-sich-selbst-ausblendendes-label.html)

Khabarakh 5. Aug 2005 17:22

Re: Sich selbst ausblendendes Label
 
Zitat:

Zitat von hanselmansel
Delphi-Quellcode:
constructor TDelayLabel.Create; //<-
begin
  inherited; //<-

Du sparst ja wie Dagobert Duck :mrgreen: .
Aber es heißt trotzdem nicht TTimer.Create(FTimer) :wink: .

glkgereon 5. Aug 2005 18:46

Re: Sich selbst ausblendendes Label
 
also erstens geht das mit FTimer als Owner auch...

das problem ist das er die Create Methode bei einer Kompo so nicht aufruft.

es funktioniert auf jeden fall (bei mir) wenn der Timer in SetHide erstellt, initialisiert und in Tmr_Hide wieder freigegeben wird...

meierotto 8. Aug 2005 08:09

Re: Sich selbst ausblendendes Label
 
Guten Morgen und vielen Dank für die Hilfe!

glkgereon hat Recht, es funzt auch mit FTimer als Owner. Ich hab in meinem Fall das Problem so gelöst, dass ich dass DelayLabel erst zur Laufzeit erzeuge, dann klappt auch mit dem Create. Wieso es im anderen Fall nicht geht, ist mir zwar unklar, aber Hauptsache es funktioniert.

:dp:

BlackJack 8. Aug 2005 13:29

Re: Sich selbst ausblendendes Label
 
Zitat:

Zitat von glkgereon
also erstens geht das mit FTimer als Owner auch...

also bitte, selbst wenn das geht ist das ist ja wohl total mies:
1. die Komponente ist ihr eigener Owner?!? was soll dabei rauskommen?
2. Zu dem moment, als FTimer als AOwner-Parameter an Create weitergegeben wird, ist FTimer völlig uninitialisiert. und das solls bringen?

ich verstehe nicht warum man nicht Self als Owner angeben sollte, aber wenn man das schon nicht machen will, dann doch bitte lieber nil oder so als irgendeinen Speichermüll. :roll:

meierotto 9. Aug 2005 07:35

Re: Sich selbst ausblendendes Label
 
Eine letzte Bemerkung noch von mir, dabei muss ich mich selbst zitieren:
Zitat:

Zitat von meierotto
Wieso es im anderen Fall nicht geht, ist mir zwar unklar...

Bei der ganzen Diskussion um Self oder FTimer hat wohl keiner (inclusive mir) gemerkt, dass create und destroy nicht override deklariert sind?! Wenn man das tut kann man das Ganze prima als Komponente verwenden.

Nochmals Danke an alle und @BlackJack: Ich werde Self verwenden :wink:

glkgereon 9. Aug 2005 11:46

Re: Sich selbst ausblendendes Label
 
Zitat:

Zitat von BlackJack
Zitat:

Zitat von glkgereon
also erstens geht das mit FTimer als Owner auch...

also bitte, selbst wenn das geht ist das ist ja wohl total mies:
1. die Komponente ist ihr eigener Owner?!? was soll dabei rauskommen?
2. Zu dem moment, als FTimer als AOwner-Parameter an Create weitergegeben wird, ist FTimer völlig uninitialisiert. und das solls bringen?

ich verstehe nicht warum man nicht Self als Owner angeben sollte, aber wenn man das schon nicht machen will, dann doch bitte lieber nil oder so als irgendeinen Speichermüll. :roll:

ho, is sicher nicht die stylistich beste lösung. aber ich sehe nicht warum nil besser sein sollte?

letztendlich ist es in diesem fall doch echt egal welchen owner der timer hat, oder?
hauptsache das create klappt...

BlackJack 9. Aug 2005 12:35

Re: Sich selbst ausblendendes Label
 
Zitat:

Zitat von glkgereon
ho, is sicher nicht die stylistich beste lösung. aber ich sehe nicht warum nil besser sein sollte?

natürlich ist nil nicht besser, aber dadurch sieht man wenigstens, dass man sich gedanken gemacht hat und zu dem schluss gekommen ist, dass der Timer in diesem fall keinen Owner benötigt (warum auch immer).
wenn man aber FTimer als Owner angibt dann denkt man nachher "och der hat ja einen korrekten owner", obwohl das natürlich totaler quatsch ist, da FTimer ja wie gesagt nicht initialisiert ist und speichermüll enthält.

teebee 9. Aug 2005 12:49

Re: Sich selbst ausblendendes Label
 
Zitat:

Zitat von BlackJack
... da FTimer ja wie gesagt nicht initialisiert ist und speichermüll enthält.

Stimmt so nicht, da Objektfelder immer mit 0 bzw. Nil oder '' initialisiert werden. D.h. hier hat man den Owner "von hinten durch die Brust ins Auge" auf Nil gesetzt und muss den Timer deshalb selber freigeben. Wenn FTimer auf Müll zeigen würde, gäbe es eine AV im Constructor. (s. TComponent.Create in der VCL)

Im übrigen gebe ich Dir vollkommen recht: Entweder der Owner wird explizit auf Nil gesetzt, was mir sofort signalisiert, ich muss selber die Freigabe vornehmen, oder ich gebe einen sinnvollen Owner an, sprich eine existierende Komponente. (Hier am besten self.)

Gruß, teebee

BlackJack 9. Aug 2005 13:05

Re: Sich selbst ausblendendes Label
 
Zitat:

Zitat von teebee
Zitat:

Zitat von BlackJack
... da FTimer ja wie gesagt nicht initialisiert ist und speichermüll enthält.

Stimmt so nicht, da Objektfelder immer mit 0 bzw. Nil oder '' initialisiert werden.

oh, das wusste ich noch nicht. man lehrnt nie aus ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 Uhr.
Seite 2 von 2     12   

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