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
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 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
44.316 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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 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
44.316 Beiträge
 
Delphi 12 Athens
 
#4

AW: QuantumGrid abgeleitete Views

  Alt 9. Jul 2012, 10:42
Zeig doch einfach mal die DFM.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 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
44.316 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)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

 
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 11:17 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