AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi StringGrid Spalte mit Namen "ansprechen"
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid Spalte mit Namen "ansprechen"

Ein Thema von Nils S. · begonnen am 13. Mai 2014 · letzter Beitrag vom 15. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#1

StringGrid Spalte mit Namen "ansprechen"

  Alt 13. Mai 2014, 18:57
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:
StringGrid1.Columns[0].Header := 'Nachname'

Aber ist auch so etwas wie:
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.
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#2

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 13. Mai 2014, 21:10
Hallo,

[...]

Aber ist auch so etwas wie:
StringGrid1.Columns['LAST_NAME'].Header := 'Nachname'
möglich?
AFAIK gibt es das so nicht. Aber mit etwas Handarbeit ist das doch schnell zusammengebastelt, z. B. so:
Delphi-Quellcode:
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;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#3

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 12:28
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.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
478 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 12:41
ich denke so würds auch gehen

StringGrid1.Columns[stringgrid1.rows[0].indexof('LAST_NAME')].Header := 'Nachname' 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
Bei stringgrid1.rows[0].delimitertext inklusive der gesetzten trennzeichen

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.

Geändert von matashen (14. Mai 2014 um 12:44 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 12:43
Was macht man nicht alles, damit endlich das letzte Stück Performance hin ist ...
Markus Kinzler
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
478 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 12:51
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.....
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 15:10
Was macht man nicht alles, damit endlich das letzte Stück Performance hin ist ...
Man tut eine Dictionary nehmen, in die man vorher alles reinpackt, was man während der Laufzeit so alles wiederfinden will. Dann kann man den Kauf der neuen Hexa-Core-CPU auf Weihnachten verschieben.
  Mit Zitat antworten Zitat
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#8

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 15:20
Vielen Dank Volker!
Es funktioniert und ich habe es nach intensiven Überlegungen sogar verstanden.

Vielleicht noch zur Anmerkung, falls das hier mal jemand liest, der die Gleiche Überlegung hat:
Die Spalten des StringGrids haben erstmal keinen Namen.
Ich habe vermutet, dass sie direkt den Namen bekommen, welcher in der Datenbank angegeben ist.
Aber über

StringGrid1.Columns["Index"].Name := 'Spaltenname'

kann man vorher ja die Namen zuweisen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 17:03
Kann es sein, dass das alles erst in Delphi > 7 eingebaut wurde? Zumindest kenne ich das nicht.

Auch wenn es bereits eine Lösung gibt und mein Delphi keine Columns bei StringGrid kennt, ListView hat Columns und die haben eine ID. Im Gegensatz zum Index ist die ID eindeutig und wird im Laufe der Sitzung kein weiteres mal vergeben. Wird ein Column gelöscht und eine neue erstellt (so zumindest meine Beobachtung bei einigen Tests vor paar Jahren), bekommt es eine neue ID. Somit kann man immer leicht Listen erstellen die einen Namen mit einer ID verbinden.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: StringGrid Spalte mit Namen "ansprechen"

  Alt 14. Mai 2014, 17:14
@Popov

Ich nehme es stark an, denn AFAIK hat Delphi 7 noch kein Firemonkey
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 14:48 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