![]() |
QuantumGrid abgeleitete Views
Hallo,
ich habe hier einen abgeleiteten QuantumGrid 2011 Vol2.x mit eigenen abgeleiteten TableViews. Soweit ist alles im grünen Bereich, jedoch werden zur Designtime die Properties - die im Constructor der View gesetzt werden, zb. "OptionsView.GridLineColor := clGreen" - leider nicht gesetzt, dh. die View behält ihre alten Werte. Wird diese View zur Laufzeit erstellt, so werden diese Werte aus dem Constructor berücksichtigt, der zur DesignTime erstellte View ignoriert diese Werte :( Die Ableitungen sind wirklich nicht der Rede wert, siehe Programmcode
Code:
constructor TMyView.Create(AOwner: TComponent);
begin inherited; OptionsView.GridLineColor := clGreen; OptionsView.HeaderHeight := 80; end; destructor TMyView.Destroy; begin inherited; end; initialization RegisterClasses([TMyView]); cxGridRegisteredViews.Register(TMyView, 'DB Table MyView'); Leider verstehe ich den Grund nicht für dieses Verhalten nicht. Setzt ausser mir noch jemand diesen Grid ein? Vielen Dank und |
AW: QuantumGrid abgeleitete Views
Wie sieht es mit den Default-Werten dieser Property aus?
Dieses solltest du unbedingt an deine Werte anpassen. Wurde der View erst normal erstell und dann durch deine Ableitung ersetzt? (Klasse in PAS/DFM umbenannt) Eventuell/Vermutlich/Bestimmt gibt es nun in der DFM schon Werte für diese Property, welche natürlich deine Vorgaben "ordnungsgemäß" überschreiben. :stupid: |
AW: QuantumGrid abgeleitete Views
Diese werden doch im constructor gesetzt und mit meinen beiden Werten überschrieben (Farbe und Höhe des Headers). Der Grid hat die Möglichkeit, für den Level eine View zur Design-Time erstellen zu lassen (rechte Maustaste auf Level, "Create view" und in der Liste den eigenen View auswählen. Theoretisch müsste dieser View jetzt die beiden Optionen gesetzt haben, leider ist das nicht der Fall.
Vielleicht liegt es auch an der "alten" Delphi-Version? Der View wird nur über die eigenen Möglichkeiten des Grids erstellt. Wie gesagt, wird alles (Grid, Level und View) zur Runtime erstellt, so sieht es richtig aus, nur werden meine Forms immer in der IDE erstellt. [Runtime Erstellung]
Code:
procedure TForm1.Button1Click(Sender: TObject);
var MyGrid : TMyGrid; MyLevel : TcxGridLevel; MyView : TMyView; begin MyGrid := TMyGrid.Create(self); MyGrid.Parent := self; MyGrid.SetBounds(24, 24, 500, 200); MyView := MyGrid.CreateView(TMyView) as TMyView; MyView.DataController.DataSource := DataSource1; MyView.DataController.CreateAllItems; MyLevel := MyGrid.Levels.Add; MyLevel.GridView := MyView; Table1.Open; end; |
AW: QuantumGrid abgeleitete Views
Zeig doch einfach mal die DFM.
|
AW: QuantumGrid abgeleitete Views
Hier ist die PAS
Code:
type
TForm2 = class(TForm) MyView: TMyView; MyGridLevel1: TcxGridLevel; MyGrid: TMyGrid; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} end. und hier ist die DFM
Code:
object Form2: TForm2
Left = 596 Top = 278 Width = 807 Height = 529 Caption = 'Form2' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object MyGrid: TMyGrid Left = 192 Top = 56 Width = 250 Height = 200 TabOrder = 0 object MyView: TMyView Navigator.Buttons.First.Visible = True Navigator.Buttons.PriorPage.Visible = True Navigator.Buttons.Prior.Visible = True Navigator.Buttons.Next.Visible = True Navigator.Buttons.NextPage.Visible = True Navigator.Buttons.Last.Visible = True Navigator.Buttons.Insert.Visible = True Navigator.Buttons.Append.Visible = False Navigator.Buttons.Delete.Visible = True Navigator.Buttons.Edit.Visible = True Navigator.Buttons.Post.Visible = True Navigator.Buttons.Cancel.Visible = True Navigator.Buttons.Refresh.Visible = True Navigator.Buttons.SaveBookmark.Visible = True Navigator.Buttons.GotoBookmark.Visible = True Navigator.Buttons.Filter.Visible = True DataController.Summary.DefaultGroupSummaryItems = <> DataController.Summary.FooterSummaryItems = <> DataController.Summary.SummaryGroups = <> OptionsBehavior.FocusCellOnTab = True OptionsBehavior.FocusFirstCellOnNewRecord = True OptionsBehavior.ImmediateEditor = False OptionsView.GridLineColor = clSilver OptionsView.HeaderHeight = 40 OptionsView.Indicator = True OptionsView.IndicatorWidth = 14 end object MyGridLevel1: TcxGridLevel GridView = MyView end end end |
AW: QuantumGrid abgeleitete Views
Zitat:
Im Create gibst du nur die Grundeinstellung vor und nach dem Create werden aus der DFM die aktuellen/geänderten Werte. Lösung: - manuell diese Werte aus der DFM löschen - im OI die Werte manuell anpassen Zuzätzlicher Hinweis: Der Default-Wert des Property gibt an, was gespeichert werden soll und genau deswegen mußt du das anpassen, da es sonst mit der DFM probleme gibt. Ein Beispiel, welches ich selbst schon so in unserem Programm erlebt hab. - in der Originalklasse gibt es ein Color-Property, wo der Standardwert (Initialisierung im Create) und der Default-Wert auf clRed stehen - in der Ableitung wurde es im Create auf clBlue geändert - im Form-Designer wurde es wieder aus clRed geändert - beim Speichern erkennt Delphi daß dieses mit dem Default-wert übereinstimmt und speichert es somit nicht in der DFM (denn dort werden nur Änderungen gespeichert, um die DFM klein zu halten) - da nun nichts mehr in der DFM steht, wird beim Laden das überschriebene clBlue geladen und dieses nicht mehr von der DFM überschrieben - ergo, du kannst in der Form clRed einstellen wie du willst, es wird immer wieder auf clBlue geändert, solange der Default-Wert nicht angepasst wurde (alle anderen Farben gehn aber) |
AW: QuantumGrid abgeleitete Views
Vielen Dank für deine Hilfe...
Richtig, im Create möchte ich die Einstellungen vorgeben, aber mein Problem ist doch, das ich keinerlei Defaultwerte für meine Ableitung setzen kann. Natürlich würde dies über das Anpassen der Einstellungen im OI funktionieren, aber gerade diesen Weg möchte ich nicht gehen, da es wie vorgesehen im Constructor geschehen muß - sonst wäre ein zusätzlicher Aufwand gegeben, von den "vergessenen" Properties ganz zu schweigen. Deshalb war die Frage, ob jemand auch einen QuantumGrid einsetzt und bei dem diese Ableitungen funktionieren, sonst muss ich doch noch über den Sourcecode des Quantums meditieren :( |
AW: QuantumGrid abgeleitete Views
Zitat:
|
AW: QuantumGrid abgeleitete Views
Zitat:
Trotzdem Danke. |
AW: QuantumGrid abgeleitete Views
Das ist aber die einzige "richtige" Lösung, im Umgang mit den zu ladenden Werten aus der DFM.
Du kannst auch das Loaded überschreiben und dort die DFM-Änderungen rückgängig machen (nochmals diese Werte setzen), aber das solltest du danach auch wieder ausbauen, da man sonst dort nichts mehr über die DFM angeben könnte. (ich kenn da eine Komponente, da war z.B. mal jemand auf die gloreiche Idee gekommen quasi im OnPaint bestimmte Dinge zurückzusetzen, was sehr unpraktisch war, als wir doch mal etwas Anderes brauchten und uns wunderten warum es nicht geht) Man könnte sich aber einen "setze Standardwerte"-IDE-Helper schreiben, welchen man einmal aufrufte und der dann alles zurücksetzt, was man will. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr. |
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 by Thomas Breitkreuz