Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Überschriften für TStringGrid / neue Komponente (https://www.delphipraxis.net/149323-ueberschriften-fuer-tstringgrid-neue-komponente.html)

Sirius Fog 18. Mär 2010 22:21


Ü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:
  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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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