| Autor |
Beitrag |
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 15.04.05 16:52
Moin!
Schreibe atm an einer Kompo, die sich standhaft jeglicher (korrekter) Einbindung in den Formulardesigner widersetzt. Werd das mal etwas näher erläutern: hab alle Eigenschaften, die ordinal sind per default initialisiert und jene, die nicht ordinal sind in OnCreate gesetzt. Wenn ich die Kompo jetzt in ein Package gebe, das ganze kompiliere und die Compo auf eine Form setze sieht sie erstmal recht schön aus. Ändere ich z.B. die Hintergrundfarbe wird die Einstellung übernommen und die Compo hat eine gelbe Hintergrundfarbe.
Wenn ich dann allerdings kompiliere ist die Compo wieder weiß. Eigentlich nicht unlogisch, weil ich die Hintergrundfarbe ja im OnCreate der Compo setze, aber eigentlich müsste die Property doch standardgemäß stored true sein, sprich sie sollte sich das, was ich zur Designzeit einstelle, auch bis zur Laufzeit merken. Oder hab ich da irgendwo einen Denkfehler?
AXMD
|
|
GSE
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: Fr 15.04.05 17:13
also eigentlich "merkt" sich Delphi ja die veränderten Einstellungen.
Vielleicht könntets du mal einen "property" Eintrag einer Eigenschaft zeigen.
Vielleicht wird sie auch einfach nich tneu gezeichnet?
mfg
GSE
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
AXMD 
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 15.04.05 17:40
GSE hat folgendes geschrieben: | also eigentlich "merkt" sich Delphi ja die veränderten Einstellungen.
Vielleicht könntets du mal einen "property" Eintrag einer Eigenschaft zeigen. |
Klar:
Property: property SelectionBackgroundColor: TColor read FSelectionBackgroundColor write SetSelectionBackgroundColor default clSkyBlue;
Initialisierung: FSelectionBackgroundColor := clSkyBlue;
Anmerkung: lass ich das zweite weg, is FSelectionBackGroundColor schwarz.
GSE hat folgendes geschrieben: | | Vielleicht wird sie auch einfach nich tneu gezeichnet? |
Doch, sie wird nach dem Initialisieren automatich neu gezeichnet.
AXMD
|
|
GSE
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: Fr 15.04.05 18:12
hast du es schon mal ohne das "default" probiert.
mal abgesehen dass ich es bis jetzt nicht kannte (*schäm*) hab ich's mal bei meiner
Komponente ausprobiert und es hat nicht funktioniert, wenn ich das default weg lasse und
die Eigenschaft nur im constructor initialisiere funktioniert es.
(vielleicht mach ich auch was falsch?)
// edit: setzt du die EIgenschaft im OnCreate oder im constructor im OnCreate dürfte es nicht funktionieren, da der ja nach dem erstellen der Klasse aufgerufen wird
//edit2: da haben wir doch den Fehler gefunden (warum das defautl nicht funktioniert)
| Delphi OH hat folgendes geschrieben: | | Hinweis: Eigenschaftswerte werden nicht automatisch auf den Standardwert initialisiert, d. h. die Standarddirektive steuert nur das Speichern von Eigenschaftswerten in der Formulardatei und nicht das Speichern des ersten Werts der Eigenschaft in einer neu erstellten Instanz. |
mfg
GSE
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 15.04.05 19:22
Das "Default" setzt die Eigenschaft nicht auf den Default-Wert.
Das passiert erst bei der Initialisierung.
Warum also "Default" benutzen?
Ganz einfach. Der Designer weiß über Default, welcher Wert per Initialisierung gesetzt wird. Daher wird dieser Wert nicht vom Designer gespeichert. Erst wenn ein anderer Wert eingetragen wird, speichert das auch der Designer.
So in etwa wurde es mir mal erklärt.
|
|
AXMD 
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 15.04.05 19:57
jasocul hat folgendes geschrieben: | Das "Default" setzt die Eigenschaft nicht auf den Default-Wert.
Das passiert erst bei der Initialisierung.
Warum also "Default" benutzen?
Ganz einfach. Der Designer weiß über Default, welcher Wert per Initialisierung gesetzt wird. Daher wird dieser Wert nicht vom Designer gespeichert. Erst wenn ein anderer Wert eingetragen wird, speichert das auch der Designer.
So in etwa wurde es mir mal erklärt. |
So kenn ich's auch  Tja, was soll ich jetzt tun? Oder wollt ihr den ganzen Code?
AXMD
|
|
GSE
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: Fr 15.04.05 22:26
dann versteh ich aber das Problem bei | Zitat: | | Anmerkung: lass ich das zweite weg, is FSelectionBackGroundColor schwarz. |
nicht.
und du hast ja gesagt du initialisierst im OnCreate, meinst du damit nun den constructor der Klasse oder das OnCreate Ereignis der Komponente, letzteres wird nämlich definitv erst nach dem Erzeugen der Kompo ausgeführt (jedenfalls mit Standardeinstellungen) und die gesetzten Werte werden dann wieder mit deinen "Initialisierungswerten" überschrieben.
mfg
GSE
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
AXMD 
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 15.04.05 22:48
GSE hat folgendes geschrieben: | dann versteh ich aber das Problem bei | Zitat: | | Anmerkung: lass ich das zweite weg, is FSelectionBackGroundColor schwarz. | nicht.
und du hast ja gesagt du initialisierst im OnCreate, meinst du damit nun den constructor der Klasse oder das OnCreate Ereignis der Komponente, letzteres wird nämlich definitv erst nach dem Erzeugen der Kompo ausgeführt (jedenfalls mit Standardeinstellungen) und die gesetzten Werte werden dann wieder mit deinen "Initialisierungswerten" überschrieben.
mfg
GSE |
Ich mein den Constructor. Die Frage ist nur: wie kann ich dann dafür sorgen, dass die Eigenschaften initialisiert werden, zur Laufzeit aber trotzdem erhalten bleiben?
AXMD
|
|
GSE
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: Fr 15.04.05 22:52
also eigentlich sollte das so funktionieren (bei mir funktioniert es zumindest so und bei anderen Komponenten entwickeln auch)
ich denke du wirst nicht umhin kommen noch etwas mehr Code zu zeigen, weil momentan hab ich keine Idee mehr woran das liegen könnte.
mfg
GSE
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
AXMD 
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 15.04.05 22:59
Hier mal der komplette Code. Ich machs ohnehin Open Source, also bitte noch nicht verwenden!. Hat noch Bugs - vor allem bei den Hints. Pseudo-Demo liegt bei. Einfach in ein Package rein und auf die Form in einem neuen Projekt ziehen; Demo is nur zwecks Funktionsweise.
AXMD
Einloggen, um Attachments anzusehen!
|
|
GSE
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: Sa 16.04.05 08:20
also ich hab die Komponentejetzt mal bei mir getestet und was soll ich sagen, sie funktioniert.
alle EInstellungen die ich verändere werden auch zur Laufzeit wieder so hergestellt.
könnte es sein dass es irgendwie ein EInstellungsproblem ist?
mfg
GSE
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
AXMD 
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 16.04.05 10:34
GSE hat folgendes geschrieben: | also ich hab die Komponentejetzt mal bei mir getestet und was soll ich sagen, sie funktioniert.
alle EInstellungen die ich verändere werden auch zur Laufzeit wieder so hergestellt.
könnte es sein dass es irgendwie ein EInstellungsproblem ist?
mfg
GSE |
Seltsam  Ich werd mal im Laufe des Tages Delphi neu installieren und mir das nochmal anschauen.
Thx
AXMD
|
|
AXMD 
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 16.04.05 11:22
Hab Delphi grade neu installiert und es funzt
Danke in jedem Fall für eure/deine Hilfe
AXMD
|
|