![]() |
StringGrid Spalte mit Namen "ansprechen"
Guten Tag zusammen.
Ich arbeite momentan mit einem StringGrid, welches mit Daten aus einer Datenbank gefüllt wird. Daher möchte ich zum Beispiel die Header der Spalten anders beschriften. Das kann ich ja beispielsweise so machen:
Delphi-Quellcode:
StringGrid1.Columns[0].Header := 'Nachname'
Aber ist auch so etwas wie:
Delphi-Quellcode:
StringGrid1.Columns['LAST_NAME'].Header := 'Nachname'
möglich? Die Spalten des Grids sollen für den Nutzer nämlich verschiebbar sein, was zum Beispiel ein Auslesen von Zellen, anhand eines Spaltenindexes, unmöglich macht. Oder kann ich, wenn die oben gezeigte Überlegung nicht funktioniert, anhand des Spaltennamens den Index herausfinden? Ich verwende Firemonkey mit XE5. Danke schonmal im Voraus. |
AW: StringGrid Spalte mit Namen "ansprechen"
Hallo,
Zitat:
Delphi-Quellcode:
Gruß
type
TStringGridHelper = class helper for TStringGrid private function GetColumnByName (Name : TComponentName) : TColumn; public property ColumnByName [Name : TComponentName] : TColumn read GetColumnByName; end; TForm1 = class(TForm) StringGrid1: TStringGrid; LastName: TStringColumn; StringColumn2: TStringColumn; StringColumn3: TStringColumn; StringColumn4: TStringColumn; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; function TStringGridHelper.GetColumnByName (Name : TComponentName) : TColumn; var i : Integer; c : TColumn; begin Result := nil; for i := 0 to ColumnCount - 1 do begin c := Columns [i]; if c.Name = Name then begin Result := c; Break end end; if not Assigned (Result) then raise Exception.Create ('Fehlermeldung') end; procedure TForm1.Button1Click(Sender: TObject); begin StringGrid1.ColumnByName ['LastName'].Header := 'Nachname' end; |
AW: StringGrid Spalte mit Namen "ansprechen"
Wenn man die Ahnung hat, dann ist es natürlich nur ein bisschen Handarbeit.
Leider bin ich da noch nicht so fit. Vielen Dank schonmal dafür. Ich schaue mir das mal in Ruhe an und werde mich dann bestimmt nochmal mit ein, zwei Fragen melden. :) |
AW: StringGrid Spalte mit Namen "ansprechen"
ich denke so würds auch gehen
Delphi-Quellcode:
Du kannst immer mit indexOf die Spalte/Zeile rausfinden. du kannst auch mittels rows und cols die Zeile/Spalte als ganzes lesen und schreiben indem du delimiter setzt und den Text als delimitertext abgreifst, oder eben als text also sowas wie stringgrid1.rows[0].text gibt dir die gesamte erste Zeile zurück
StringGrid1.Columns[stringgrid1.rows[0].indexof('LAST_NAME')].Header := 'Nachname'
Bei stringgrid1.rows[0].delimitertext inklusive der gesetzten trennzeichen Gruß Matthias |
AW: StringGrid Spalte mit Namen "ansprechen"
Was macht man nicht alles, damit endlich das letzte Stück Performance hin ist ... :stupid:
|
AW: StringGrid Spalte mit Namen "ansprechen"
irgendwas braucht man ja damit wieder neue Hardware gekauft werden muss. Für den 0815 Bürokram reicht doch auch die 10 Jahr alte Kiste, aber wenn dann ne solche Resourcen Hammerapplication kommt.....:twisted::twisted:
|
AW: StringGrid Spalte mit Namen "ansprechen"
So etwas in der Art habe ich auch schon probiert.
Leider gibt es bei mir für das StringGrid weder .Rows, noch ein .IndexOf. Liegt wahrschienlich an Firemonkey oder hast Du das auch mit Firemonkey getestet/gemacht? Wobei die Variante mit der separaten Klasse wahrscheinlich eh eleganter ist oder? |
AW: StringGrid Spalte mit Namen "ansprechen"
In einem StringGrid haben die spalten einen Namen?
Nja, man kann die Namen zumindestens als Hashlist anlegen. [edit] Achso, in FM ... in der VCL gibt's da jedenfalls Keine. PS: Ohne Performanceverlust: Konstanten für die Spaltenindize. :zwinker: (man kann die auch als Record/Class-Const anlegen und hatt dann auch noch einen Namespace davor ... siehe die neuen TColor) |
AW: StringGrid Spalte mit Namen "ansprechen"
Zitat:
Delphi-Quellcode:
von der 3. auf die 1. Position wechselt und
Name
Delphi-Quellcode:
dann sprichst du die falsche Spalte an ;)
const Name_Col_Idx = 3;
|
AW: StringGrid Spalte mit Namen "ansprechen"
Nja, entweder man pflegt das, oder löst es über variablen, welche man befüllen lässt
und in der VCL gibt es eh keinen Namen, wo es dann egal wäre. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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