![]() |
Überschriften für TStringGrid / neue Komponente
Hallo,
ich habe ein Problem bei der Ableitung von TStringGrid. Ziel ist es Überschriften für die einzelnen Spalten im Objektinspektor einstellen zu können (welche dann auch zur Laufzeit zu sehen sind). Das geht soweit auch, sobald ich das Form allerdings kompliliere und anzeige sind die Überschriften wieder weg. Ich schätze mal es ist ein Streaming Problem? Ich habe bislang keine Lösung gefunden. Irgendwie schaffen die Daten es nicht aus dem Objektinspektor in das Form zur Laufzeit. Auch beim Einladen ist das AdvStringGrid leer, allerdings liegen die Daten noch im Objektinspektor. Was mache ich falsch? Plattform: Win7 mit Delphi 2010 Pro.
Delphi-Quellcode:
Der Quelltext unten ist etwas reduziert, es werden noch andere Properties wie beispielsweise die Speltenbreite über den Objektinspektor abgefragt. Das geht!
TAdvStringGrid = class(TStringGrid)
private { Private-Deklarationen } fHeadlines: TStringList; fColWidth: integer; fFixedColWidth: integer; function rdHeadlines: TStringList; procedure wrHeadlines(Value: TStringList); procedure wrColWidth(Value: integer); procedure wrFixedColWidth(Value: integer); protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(aOwner: TComponent); override; destructor Destroy; override; published { Published-Deklarationen } property Headlines: TStringList read rdHeadlines write wrHeadlines; property ColWidth: integer read fColWidth write wrColWidth; property FixedColWidth: integer read fFixedColWidth write wrFixedColWidth; end; ... procedure Register; implementation procedure Register; begin RegisterComponents('Adv Components', [TAdvStringGrid]); ... end; constructor TAdvStringGrid.Create(aOwner: TComponent); var i: integer; begin inherited; self.fHeadlines := TStringList.Create; self.DrawingStyle := gdsGradient; end; destructor TAdvStringGrid.Destroy; begin inherited; self.Headlines.Destroy; end; function TAdvStringGrid.rdHeadlines: TStringList; begin result := fHeadlines; end; procedure TAdvStringGrid.wrHeadlines(Value: TStringList); var i: integer; begin fHeadlines.Assign(Value); for i:=0 to fHeadlines.Count-1 do begin if self.ColCount > i then begin self.Cells[i, 0] := fHeadlines.Strings[i]; end; end; end; Viele Grüße, Foggy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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-2025 by Thomas Breitkreuz