AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponente "vergißt" OI-Einstellung

Ein Thema von freejay · begonnen am 5. Jan 2007 · letzter Beitrag vom 9. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Eigene Komponente "vergißt" OI-Einstellungen

  Alt 5. Jan 2007, 17:37
Du hast die Properties auch nicht für die Persistenz konfiguriert (stored)
Markus Kinzler
  Mit Zitat antworten Zitat
freejay

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

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 17:43
Was bedeutet das oder was muss ich konkret anders machen (neue/erweiterte Komponenten sind nicht gerade mein "täglich Brot"...)?
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 17:48
Also ich würde am Ende der Routine SetColumnHeader noch einen Aufruf der geerbten Methode update einfügen, so das die Komponente neu gezeichnet wird und die Spaltenüberschriften entsprechend gezeichnet werden können.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 17:50
property ColumnHeader: TStrings read FColumnHeader write SetColumnHeader stored True;
Markus Kinzler
  Mit Zitat antworten Zitat
freejay

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

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 17:57
Zitat von mkinzler:
property ColumnHeader: TStrings read FColumnHeader write SetColumnHeader stored True;
Hilft leider nix. Die Daten wurden bereits vorher brav im dfm-File abgelegt. Nur geladen werden sie wohl nicht.

Nachtrag: Außerdem kann man "stored true" weglassen (ist der Default-Wert), wie ich gerade in der Hilfe entdeckt habe.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 18:05
Hi,

wie bereits vorher von Ghostwalker gesagt. In der SetColumnHeader-Methode zum schluß ein Invalidate. Dann wird nach dem setzen der eigenschaft die Kompo neu gezeichnet und alles ist ok.

Stored stellt nur sicher, dass die Werte in der dfm abgelegt werden.

Gruß oki
  Mit Zitat antworten Zitat
freejay

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

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 18:11
Ich habe das ausprobiert. Leider bringt ein Invalidate oder auch ein Repaint, und was es da alles noch so gibt, nichts.
Die Daten werden ja auch problemlos übernommen und angezeigt, wenn ich sie im OI bearbeitet und dann mit OK bestätigt habe.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 5. Jan 2007, 18:15
Dann sind beim Laden der form und lesen der Titel die Columbs noch nicht da. Rufe nach dem Erstellen der Kompo explizit das Laden der titel auf.

So nach dem Motto, Titeltexte sind vor den Spalten da, also nach erstellung spalten kein Laden der schon vorhandenen titel. Sorry muß jetzt mal weg, deshalb so kurz.

gruß oki
  Mit Zitat antworten Zitat
freejay

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

Re: Eigene Komponente "vergißt" OI-Einstellung

  Alt 6. Jan 2007, 19:09
OK, werde ich am Montag probieren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:34 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