Autor |
Beitrag |
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: So 22.04.07 18:45
Hallo,
Ich habe eine Eigenschaft, zB.
Delphi-Quelltext 1: 2:
| public property NoTimeOut: Boolean read FNoTimeOut write SetNoTimeOut; |
Nun will ich einen Standardwert haben. Den kann ich natürlich im Konstruktor festlegen, aber es gibt ja auch dieses Wörtchen default, das man zB. so nutzt:
Delphi-Quelltext 1: 2:
| public property NoTimeOut: Boolean read FNoTimeOut write SetNoTimeOut default False; |
Meine Frage jetzt: Wie, wo und wann wird dieser Standard-Wert gesetzt? Beim Erzeugen? Und wird dann auch zum Setzen SetNoTimeOut aufgerufen?
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: So 22.04.07 18:51
Default ist nur dafür zuständig, dass Eigenschaften, die auf der Standardeinstellung bleiben, nicht in der Formulardatei gespeichert werden. Darum, dass der in default angegebene Wert auch tatsächlich der Standardwert ist, musste dich selbst kümmern.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Jakob Schöttl 
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: So 22.04.07 18:54
Ah, ok, danke!
jakobwenzel hat folgendes geschrieben: | Default ist nur dafür zuständig, dass Eigenschaften, die auf der Standardeinstellung bleiben, nicht in der Formulardatei gespeichert werden. |
Aber das würde doch dann bedeuten, dass bei jedem Neustart von Delphi die geänderten Eigenschaften von zB. Form1 verloren gehen. Was hätte das für einen Sinn?
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 22.04.07 19:00
Jain ...
Drücken wir das mal anders aus:
Wenn ich ein Formular habe, so ändere ich ganz selten die Einstellung für den FormStyle. Da aber das explizit Speichern dieser Eigenschaft Speicher belegt, selbst wenn dieser Wert sowieso bereits eingetragen ist, erleichtert man sich die Aufgabe dahingehend, dass man nur dann den Wert speichert, wenn es 1. Wichtig ist, dass dieser Wert vorhanden ist (z.B. bei Left und Top) ODER die Eigenschaft gegenüber der am häufigsten benutzen Einstellung (dem Default-Wert) veränder wurde.
Nichts anderes zeigt Dir z.B. Delphi im Objekt-Inspektor mit dem Fettdruck bestimmter Eigenschaften an: Ist eine Eigenschaft fett markiert, so wird diese explizit in der DFM gesetzt.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Jakob Schöttl 
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: So 22.04.07 19:02
achso, Eigenschaften mit default werden also nur dann gespeichert, wenn sie Nicht-Standart-Werte haben.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 22.04.07 19:07
Genau ... Anders sieht's bei Default und Arrays aus, da hat Default aber auch ne andere Bedeutung 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Jakob Schöttl 
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: So 22.04.07 19:11
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 22.04.07 20:05
Du solltest ausserdem im Create der Komponente NoTimeout auf False setzen, so dass beim Create immer erstmal der default wert gesetzt ist. Der wird ja dann beim Laden der dfm überschrieben. ausserdem solltest du bei kritischen eigenschaften mit set-methode das Ausführen von Code in der Set-Methode verhindern, wenn die Komponente gerade ihre Daten lädt und es auf die procedure Loaded verschieben (also in loaded die kritische Eigenschaft nochmal setzen um die Set-Methode aufzurifen).
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
|