![]() |
TStringgrid - Spalte ausblenden
Gibt es eine Möglichkeit beim TStringgrid eine Spalte zu erstellen, die nicht angezeigt wird?
|
Re: TStringgrid - Spalte ausblenden
willst du diese Spalte irgendwann einblenden, oder soll diese nur "Hintergrund-Daten" enthalten.
beim 1. würde ich die breite der spalte auf 0 setzen (colwidths). für den 2. fall ist
Delphi-Quellcode:
gedacht.
property Objects [ACol, ARow: Integer]: TObject;
HTH Frank |
Re: TStringgrid - Spalte ausblenden
und wie genau kann ich dann damit eine Spalte erzeugen?
|
Re: TStringgrid - Spalte ausblenden
Hallo smepal,
Zitat:
Die verborgenen Zellen sind mit der Tastatur trotzdem noch erreichbar, deshalb sollte das Ereignis "OnSelectCell" behandelt werden:
Delphi-Quellcode:
Ganz ohne Nebenwirkungen ist das aber nicht. Mit obigem Code wird nur eine Spalte übersprungen, ein Markieren von Zellenblöcken mit der Tastatur wird unterbrochen, und der Code funktioniert nicht mehr nach dem Vertauschen von Spalten.
const
HiddenColumn = 3; procedure TForm1.FormCreate (Sender: TObject); begin Grid1.ColWidths[HiddenColumn] := -1; end; procedure TForm1.Grid1SelectCell (Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin if (ACol = HiddenColumn) then with Grid1 do begin // verborgene Spalte überspringen, dabei Richtung beachten if (ACol > Col) then Col := Succ(ACol) else Col := Pred(ACol); CanSelect := False; end; end; Gruß Hawkeye |
Re: TStringgrid - Spalte ausblenden
gut, dann ich mit den unsichtbaren Daten...(welche nicht sichtbar sein sollen)
objects erzeugt keine spalte sonder hängt ein beliebiges Objekt an eine bestehende Zelle an mal eine einfache Klasse (ggf. noch constructor/destructor hinzufügen)+initialisierung und freigabe (ungetestet) ich weise nur der ersten Spalte ein Object zu...kannst das aber auch ausbauen
Delphi-Quellcode:
HTH Frank
type
TMyObject = class FInt:integer; FStr:string; public property int:integer read FInt write FInt; property Str:string read FStr write FStr; end; procedure TForm1.FormCreate(Sender:TObject); var mo:TMyObject; i:integer; begin //die größe des Grids festlegen Stringgrid1.ColCount:=5; Stringgrid1.RowCount:=5; for i:=0 to pred(stringgrid1.rowcount) do begin mo:=TMyObject.create; mo.int:=i; mo.Str:='evtl. Backuptext'; Stringgrid1.Objects[0,i]:=mo end; end; procedure TForm1.FormDestroy(Sender:TObject); var i:integer; begin for i:=0 to pred(stringgrid1.rowcount) do begin //diesmal mit softcast ;) if assigned(Stringgrid1.Objects[i]) then (Stringgrid1.Objects[0,i] as TMyObject).free; end; end; |
Re: TStringgrid - Spalte ausblenden
Danke das reicht mir schon funktioniert auch sehr gut!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz