Stringgrid TColumn

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Stringgrid TColumn

Beitrag von DAP »

Hallo,

ich habe noch ein kleines Problem mit einem Stringgrid.

Wenn ich den folgenden Code per Button ausführe funktioniert er wie
gewünscht. Es werden Spalten eingefügt, wenn keine TGridColums
vorhanden sind.

Code: Alles auswählen

 
 
procedure TForm1.Button2Click(Sender: TObject);
var
  Spalten : Integer;
  i : Integer;
  C : TGridColumn;
begin
  if not (StringGrid1.Columns.Enabled) then
  begin
    Spalten := Stringgrid1.ColCount - Stringgrid1.FixedCols;
    For i := 0 to Spalten - 1 do
    begin
      C := StringGrid1.Columns.Add;
    end;
  end
end;
 
 
Verwende ich den gleichen Code in der Create Routine einer abgeleiteten TStringGrid Klasse,
ist Columns.Enabled immer true, auch wenn TColumns vorhanden sind. (Inherited bereits ausgeführt)

Gibt es noch eine andere Möglichkeit abzufragen, ob bereits Spalten angelegt wurden oder nicht.
Zuletzt geändert von Lori am Mi 12. Mär 2014, 13:29, insgesamt 1-mal geändert.
Grund: Bitte den richtigen Highlighter verwenden.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Stringgrid TColumn

Beitrag von Michl »

Warum nicht StringGrid1.Columns.Count?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Stringgrid TColumn

Beitrag von DAP »

columns.count ist leider 0 in der create routine, warum auch immer?

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Stringgrid TColumn

Beitrag von Michl »

Na wenn Du noch keine Columns angelegt hast, ist die Anzahl null. War das nicht Deine Frage?

Achtung, StringGrid1.Columns.Count ist nicht gleich StringGrid1.ColCount! Columns musst Du selber erstellen, wie in Deinem Beispiel.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Stringgrid TColumn

Beitrag von DAP »

Ich habe die Hälfte wieder nicht geschrieben sondern nur gedacht. :oops:

Das Column.count ist leider auch dann null, wenn zur Designzeit
bereits Column's erzeugt wurden.

Wie gesagt in der Routine mit dem Button klappt es, nur in der
Create Routine der abgeleiteten TStringgrid-Klasse klappt es nicht.

Vielleicht muss ich zu einem späteren Zeitpunkt darauf zurückgreifen,
dann stellt sich für mich aber die Frage wann, damit man beim Start
nicht erst das andere Tabellen Layout zu Gesicht bekommt.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Stringgrid TColumn

Beitrag von Michl »

K.A. was Du da im einzelnen machst?!

Ich habe eben eine Stringgrid abgeleitet und im Create der Form die Columns eingefügt. Sie werden gesetzt und wie erwartet befüllt. Ebenso habe ich probiert im Create der abgeleiteten TStringGrid die Columns zu setzen, funktioniert ebenfalls problemlos.

Kannst Du nicht ein Minimalbeispiel (per .zip) anhängen, das dieses Verhalten zeigt?!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Stringgrid TColumn

Beitrag von DAP »

Michl hat geschrieben:
Kannst Du nicht ein Minimalbeispiel (per .zip) anhängen, das dieses Verhalten zeigt?!

ich stelle heute Abend ein kleines Beispiel ein, komme vorher leider nicht dazu.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Stringgrid TColumn

Beitrag von baumina »

Im Create der geerbten Klasse weiß die Klasse noch nicht wie viele Spalten die Grid später haben wird. Ich würde es im protected der geerbten Klasse mit

Code: Alles auswählen

procedure Loaded; override;
versuchen.
.

DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Stringgrid TColumn

Beitrag von DAP »

baumina hat geschrieben:Im Create der geerbten Klasse weiß die Klasse noch nicht wie viele Spalten die Grid später haben wird. Ich würde es im protected der geerbten Klasse mit

Code: Alles auswählen

procedure Loaded; override;
versuchen.
Genau das war die Lösung vielen Dank.

Jetzt noch eine kleine Frage hinterher, wenn ich für meine StringGrid
die Formatierung der Spalten (String, Float, Integer) bereits im Objektinspektor
bearbeitbar machen möchte, wie gehe ich da am besten vor?

Antworten