Einzelnen Beitrag anzeigen

freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#1

Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 17:04
Hallo,

ich habe mir eine von TSTringGrid abgeleitete Komponente geschaffen, der ich nun noch die Möglichkeit geben wollte, im Objektinspektor die Spaltenüberschriften (ColumnHeader) eingeben zu können.

Das klappt auch alles. Die Daten werden auch im DFM-File gespeichert. Dummerweise werden die Spaltenüberschriften aber nicht wieder in das Formular geladen, wenn man das Projekt geschlossen hatte und wieder neu öffnet. Die Daten stehen zwar im OI, aber erst wenn man sie neu bestätigt, werden sie auch in das Grid geschrieben.

Was fehlt mir da noch oder was mache ich falsch?

Danke im Voraus!

Freejay

Hier der relevante Code:

Delphi-Quellcode:
  TMyStringGrid = class(TStringGrid)
  private
    FColumnHeader: TStrings;
    procedure SetColumnHeader(Value: TStrings);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property ColumnHeader: TStrings read FColumnHeader write SetColumnHeader;
  end;

constructor TMyStringGrid.Create(AOwner: TComponent);
begin
    inherited create(AOwner);
    FColumnHeader := TStringList.Create;
end;

destructor TMyStringGrid.Destroy;
begin
    FColumnHeader.Free;
    inherited destroy;
end;

procedure TMyStringGrid.SetColumnHeader(Value: TStrings);
var
    iCol: integer;
begin
    FColumnHeader.Assign(Value);

    for iCol := 0 to ColCount - 1 do

        if iCol < FColumnHeader.Count then
            Cells[iCol,0] := FColumnHeader[iCol]
        else
            Cells[iCol,0] := '';
end;
  Mit Zitat antworten Zitat