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 Spalten zu Grid hinzufügen (https://www.delphipraxis.net/120911-spalten-zu-grid-hinzufuegen.html)

tgutgu 18. Sep 2008 19:51


Spalten zu Grid hinzufügen
 
Hallo

Irgendwie gelingt es mir nicht, zur Laufzeit Spalten einem Grid hinzuzufügen.

Ich verwende ein Grid aus dem TMS Component Pack (AdVStringGrind und AdVColumnGrid)

Versucht hab' ich mit grid.rows[0].append, grid.columnheaders.add und ähnlichen, funktioniert nicht.

Hat jemand ein Codebeispiel parat?

Viele Grüße

Thomas

mkinzler 18. Sep 2008 19:56

Re: Spalten zu Grid hinzufügen
 
Einfach durch Setzen von .ColCount

toms 18. Sep 2008 19:59

Re: Spalten zu Grid hinzufügen
 
Hallo Thomas

Eine Spalte kann so hinzugefügt werden (Spaltenzahl erhöhen)

Delphi-Quellcode:
 AdvStringGrid1.ColCount := AdvStringGrid1.ColCount + 1;

tgutgu 18. Sep 2008 20:21

Re: Spalten zu Grid hinzufügen
 
Zitat:

Zitat von toms
Hallo Thomas

Eine Spalte kann so hinzugefügt werden (Spaltenzahl erhöhen)

Delphi-Quellcode:
 AdvStringGrid1.ColCount := AdvStringGrid1.ColCount + 1;

Vielen Dank für die schnelle Antwort. Im Prinzip klappt das so. Ergänzend würde ich gerne wissen, wie ich eine Spalte mit einem bestimmten Header erst finde und dann lösche oder eine Spalte an einer bestimmten Position hinzufüge.

Viele Grüße

Thomas

toms 18. Sep 2008 20:44

Re: Spalten zu Grid hinzufügen
 
Anbei einige Beispiele:

Delphi-Quellcode:
type
  TAdvGrid = class(TAdvStringGrid); // für Zugriff auf protected MoveColumn() Methode

// Spalte rechts von Spalte ACol einfügen
procedure AdvStringGrid_InsertColumn(Grid: TAdvStringGrid; ACol: Integer);
begin
  with Grid do
  begin
    if ACol <= Grid.ColCount then
    begin
      ColCount := ColCount +1;
      TAdvGrid(Grid).MoveColumn(ColCount - 1, ACol);
    end;
  end;
end;

// Spalte mit Index ACol löschen
procedure AdvStringGrid_DeleteColumn(Grid: TAdvStringGrid; ACol: Integer);
begin
  with Grid do
  begin
    if ACol < Grid.ColCount then
    begin
      TAdvGrid(Grid).MoveColumn(ACol - 1, ColCount -1);
      ColCount := ColCount - 1;
    end;
  end;
end;

// SpaltenIndex anhand des ColumHeaders ermitteln
function AdvStringGrid_GetColumnIndexByName(Grid: TAdvStringGrid; SHeaderName: string) : Integer;
begin
  Result := Grid.ColumnHeaders.IndexOf(SHeaderName) + 1;
end;


Beispiel: Neue Spalte rechts neben Spalte "SpalteXYZ" hinzufügen
procedure TForm1.Button1Click(Sender: TObject);
var
 iColIndex: Integer;
begin
  iColIndex := AdvStringGrid_GetColumnIndexByName(AdvStringGrid1, 'SpalteXYZ');
  AdvStringGrid_InsertColumn(AdvStringGrid1, iColIndex)
end;


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