AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

QuantumGrid abgeleitete Views

Ein Thema von Gremlin · begonnen am 9. Jul 2012 · letzter Beitrag vom 9. Jul 2012
Antwort Antwort
Seite 1 von 2  1 2   
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#1

QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 10:01
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
Gruss Gremlin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 10:05
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 10:25
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;
Gruss Gremlin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 10:42
Zeig doch einfach mal die DFM.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 11:01
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
Gruss Gremlin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 11:23
Zitat:
Delphi-Quellcode:
OptionsView.GridLineColor = clSilver
OptionsView.HeaderHeight = 40
Wie gesagt...

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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 11:41
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
Gruss Gremlin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 12:07
Zitat:
- manuell diese Werte aus der DFM löschen
fertig
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
176 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 13:39
Zitat:
- manuell diese Werte aus der DFM löschen
fertig
Das ist leider keine Lösung, es sind ja nicht nur zwei Properties die ich setzen muss, bzw. löschen müsste.
Trotzdem Danke.
Gruss Gremlin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 14:25
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Jul 2012 um 14:29 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:41 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