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:
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;
Der Quelltext unten ist etwas reduziert, es werden noch andere Properties wie beispielsweise die Speltenbreite über den Objektinspektor abgefragt. Das geht!
Viele Grüße,
Foggy