AGB  ·  Datenschutz  ·  Impressum  







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

Default-Wert in Vererbung ändern

Ein Thema von stahli · begonnen am 13. Mai 2011 · letzter Beitrag vom 14. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 15:14
Delphi-Version: XE
Ich habe eine Ableitung von einem Panel und möchte dort Alignment standardmäßig auf taLeftJustify ändern:
Im Constructor würde ich Alignment entsprechend auch so setzen.

Delphi-Quellcode:
  TMyPanel = class(TPanel)
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Alignment: TAlignment {read GetAlignment? write SetAlignment?} default taLeftJustify;
  end;

Lässt sich das machen? Der Compiler verlangt Getter und Setter. Diese sind jedoch nicht virtuell und FAlignment ist privat.
Gibt es dafür einen Weg?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#2

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 15:17
Setz das Alignment einfach in deinem Konstruktor.
Glückauf
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 15:41
  1. Du darfst bei so etwas auch den Typ nicht mit angeben, dann sollte es gehen: property Alignment default taLeftJustify;
  2. Bedenke, dass das setzen eines Default-Wertes bei einer Property den Werte NICHT ändert, sondern nur für die Anzeige im OI und der bedingten Speicherung eventueller Änderungen in der dfm dient.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#4

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 15:42
Delphi-Quellcode:
published
  property Alignment default taLeftJustify;
end;


[add/edit]
Wird eine Property verschoben (z.B. von protected nach public) oder werden eigenschaften verändert, dann gibt man den Typen nicht mehr an (den Typen kann man eh nicht mehr ändern).

Und wo kommt denn der Post auf einmal her?
@2: Jupp, das wird nur dafür genutzt, ob der Wert im IO fett dargestellt wird und ob das Property z.B. in der DFM gespeichert wird.
Ist aktueller Wert = Default, dann ist der dünngeschrieben und wird nicht gespeichert.

Den Startwert, welcher zu deinem neuen Default paßt, wirst du eventuell im Constructor setzen müssen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Mai 2011 um 15:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 17:32
Ihr habt aber schon den ersten Beitrag gelesen oder? Dort steht doch das er im Constructor den Wert auch entsprechend ändert.
Zitat:
Im Constructor würde ich Alignment entsprechend auch so setzen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's

Geändert von SirThornberry (13. Mai 2011 um 17:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 17:42
Ok, vielen Dank! Ohne Eigenschaftstyp funktioniert es perfekt.
Die IDE hatte vorher immer meine (händischen) Einstellungen zurückgesetzt.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 17:48
zurückgesetzt ist etwas falsch ausgedrückt. Durch den abweichenden Defaultwert wurde der gesetzte Wert einfach nicht gespeichert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 17:58
[Rechthabermodus]Im Constructor gesetzt und beim Formular laden zurückgesetzt[/Rechthabermodus]
Hmm, obwohl ... Zumindest wurde die Einstellung im Objektinspektor mit dem compilieren bzw. auch nach dem Projekt öffnen von taCenter auf taLeftJustify zurück gesetzt.
Im Construktor wurde Left eingestellt, im Formular wurde aber Center als Standardwert vorgegeben.

Aber es ist ja auch gelöst!
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#9

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 21:09
Nja, Delphi speichert den Defaultwert nicht.
Beim Laden wird erst der Constructor ausgeführt, dort wird ja irgendwas voreingestellt und wenn nun die DFM geladen wird, dann bleibt der Wert unverändert, da er ja der alte Wert nicht in der DFM gespeichert wurde.

Die Default-Angabe hat praktisch zwei drei Auswirkungen:
- die DFM wird kleiner, da nur Veränderungen gepseichert werden (also nur Abweichungen vom Standard)
- der Programmierer hat im OI eine Anzeige was verändert ist
- bei Array-Property hat Default allerdings eine ganz andere Wirkung (siehe OH)

PS: bezüglich dem Speichern gibt es noch "stored", damit kann man etwas ganz von der Speicherung ausschließen, mit False (gut für berechnete Felder) oder man gibt dort eine Funktion an.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Mai 2011 um 21:15 Uhr)
  Mit Zitat antworten Zitat
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#10

AW: Default-Wert in Vererbung ändern

  Alt 13. Mai 2011, 21:23
Hallo,

warum so kompliziert? Es gibt seit längeren in Delphi die Möglichkeit,
Komponentenvorlagen (Component Templates) zu erzeugen:

Einfach ein Panel auf dem Formular plazieren, die gewünschten Eigenschaften im OI
einstellen und über Kompenten | Komponentenvorlage erzeugen ...
die abgeleitete Komponente registrieren.

Danach ist sie zu verwenden, wie jede andere Komponente auch, mit dem Vorteil,
die Settings nicht immer wieder neu eingeben zu müssen.

madtom
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:57 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