AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Standardwert einer Eigenschaft

Ein Thema von Cicaro · begonnen am 22. Feb 2005 · letzter Beitrag vom 28. Feb 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.345 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:10
Zitat von Binärbaum:
Zitat von Jasocul:
imho ist das "default" ohne Wirkung. Irgendwo in der OH steht das drin, glaube ich. Man muss den Default-Wert ins Create des Objektes packen.
Steht es bei mir etwa nicht im OnCreate
Schon, aber der einzige Unterschied zum Source von Cicaro war das "default". Den Rest hatte ich nur zur Vollständigkeit geschrieben.

Das mit der Speicherung im DFM wusste ich nicht. Bringt zumindest beim Arbeiten mit Default-Werten ein bisschen Performance. Zumindest theoretisch.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:11
Zitat von Cicaro:
Außerdem setzt du im Constructor (auch zur Runtime) den Wert nochmal, wenn die Komponente erstellt wird. Der soll aber aus dem Design übernommen werden.

Wenn man das Setzen des Wertes im Constr. weglässt steht da 0.
Meines Erachtens wird das bei allen Komponenten so gemacht (zumindest sollte man es so machen). Den Zweck des default-Schlüsselwortes hat maximov ja schon erklärt. Daraus folgt, dass man im OnCreate immer den Standardwert setzen muss. Sonst funktioniert es nicht. (Außer wenn der Standardwert null ist, dann geht es evtl., aber darauf würde ich mich nicht verlassen )

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#13

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:16
Zitat von Binärbaum:
Daraus folgt, dass man im OnCreate immer den Standardwert setzen muss.
Lässt du wohl die Finger vom OnCreate-Event!!!
Das event ist dafür da, etwas auszuführen, was der Benutzer deiner Komponente nach ihrem Erstellen tun möchte.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#14

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:17
Das Problem ist aber, das das Create (zur laufzeit) der im OI gesetzten eigenschaft wieder durch die im OnCreate überschreibt...
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#15

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:21
Zitat von Binärbaum:
(Außer wenn der Standardwert null ist, dann geht es evtl., aber darauf würde ich mich nicht verlassen)
Das versteh' ich nicht.

Aber in der Delphi-Hilde steht:
Zitat:
Die optionalen Direktiven stored, default und nodefault sind Speicherbezeichner. Sie haben keinerlei Auswirkungen auf die Funktionsweise des Programms, sondern bestimmen, ob die Werte der published-Eigenschaften in Formulardateien gespeichert werden.
Bei mir werden die besagten Werte zur Runtime nicht geladen.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#16

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:25
Zitat von Pseudemys Nelsoni:
schau mal nach ComponentState, mir war so das es damit ging...

ca so:

if ([csDesigning] in ComponentState) then...


so gehts doch -____-....
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#17

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:38
Sorry Leute, aber das ist doch alles Quatsch!!!

Delphi-Quellcode:
unit MyComponent;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics;

type
  TMyComponent = class(TComponent)
  private
    FColor: TColor;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Color: TColor read FColor write FColor default clBlack;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TMyComponent]);
end;

{ TMyComponent }

constructor TMyComponent.Create(AOwner: TComponent);
begin
  inherited;
  FColor := clBlack;
end;

end.
Designzeit:
- Platzieren der Komponente auf dem Formular --> Aufruf des Konstruktors (setzen der Standard-Werte durch Source im Create)
- Speichern des Formulars (Eigenschaften, die mit dem Default-Wert übereinstimmen, werden nicht gespeichert)
- Ändern der Eigenschaft
- Erneutes Speichern (Eigenschaften, die vom Default-Wert abweichen werden gespeichert)

Laufzeit:
- Erzeugen des Formulars --> Aufruf des Konstruktors
- Laden der dfm-Datei --> erzeugen aller auf dem Formular liegenden Komponenten --> Aufruf des Konstruktors jedes einzelnen --> Setzen der Eigenschaftswerte aus der Formulardatei
- Aufruf des OnCreate-Events des Formulars

Ich hoffe, das hilft etwas aus dieser allgemeinen Ratlosigkeit heraus.

Wer Interesse hat, sollte sich eingehender mit dem Resourcen-Streaming-System von Delphi beschäftigen. Dann kommen auch so Sachen, wie ComponenteState zum Tragen, die hier noch nix zu suchen hatten. Das wird nur benutzt, wenn z.B. im Konstruktor etwas gemacht wird, was nur zur Laufzeit geschehen soll (z.B. Öffnen einer Verbindung zur Datenbank oder so).

MfG
Stevie
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 12:41
Zitat von Pseudemys Nelsoni:
Das Problem ist aber, das das Create (zur laufzeit) der im OI gesetzten eigenschaft wieder durch die im OnCreate überschreibt...
Nur mal so zwischengefragt: Ihr vermischt aber jetzt nicht zufällig das Ereignis OnCreate mit dem Konstruktor???
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Standardwert einer Eigenschaft

  Alt 22. Feb 2005, 13:04
Zitat von IngoD7:
Nur mal so zwischengefragt: Ihr vermischt aber jetzt nicht zufällig das Ereignis OnCreate mit dem Konstruktor???
Doch, leider. Mit dem Create meinte ich eigentlich den Konstruktor, nicht das Ereignis OnCreate.
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#20

Re: Standardwert einer Eigenschaft

  Alt 23. Feb 2005, 18:33
Sorry, Leute aber mein Problem lag woanders, weshalb ich auch mit den Default-Wert Probleme hatte.
Jetzt ist alles klar. Die meisten von euch hatten auch recht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 15:24 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