AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anfängerfrage, TStringGrid - Rows[Row]

Ein Thema von MaGe · begonnen am 29. Jan 2007 · letzter Beitrag vom 30. Jan 2007
Antwort Antwort
MaGe

Registriert seit: 19. Jan 2007
18 Beiträge
 
#1

Anfängerfrage, TStringGrid - Rows[Row]

  Alt 29. Jan 2007, 21:35
Moin, moin,

ich versuche gerade mein Wissen zu erweitern und wie ich im Forum schon gesehen habe ist wohl das StringGrid ein leidiges Thema.
Dachte ich mir also ran an den Speck und frimmelte gestern und heute Abend dran rum, mein tolles Delphi7-Buch (von W.Doberenz&T.Kowalski) hatte mir auch verraten dass man mit:
"Rows[i] ... Zugriff auf den Inhalt einr kompletten Zeile"
erhält. Weiter fand ich mit der Offlinehilfe folgendes:
property Rows[Index: Integer]: TStrings; Somit bekomme ich wohl eine Liste von TStrings, zumindest verstehe ich das so. Damit müsste ich also mit:
Delphi-Quellcode:
MeineTStringListe := TStringList.Create;
MeineTStringListe := Rows[Row]; // Übergabe an MeineTStringliste
.. do something ...
MeineTStringListe.free;
doch die Stringliste von Rows an MeineTStringListe übergeben oder nicht?
Somit könnte ich zum auslesen der Zeile, die ganze Zeile als StringListe geben lassen und mich dann drauf stürzen wie ich auf einzelne Elemente einer TStringListe zugreife.
Kann mir einer vielleicht erklären wo ich meinen Gedankenfehler habe?

Gruß

Ma.Ge
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#2

Re: Anfängerfrage, TStringGrid - Rows[Row]

  Alt 29. Jan 2007, 21:41
Vielleicht eine Schleife nehmen und alle Zeilen einzeln übergeben ?
  Mit Zitat antworten Zitat
MaGe

Registriert seit: 19. Jan 2007
18 Beiträge
 
#3

Re: Anfängerfrage, TStringGrid - Rows[Row]

  Alt 29. Jan 2007, 21:46
Geht das nicht eleganter anstatt mit einer Schleife alles mühsam durch zugehen?
Kann nicht der Inhalt von Objekt A an B zugewiesen werden?

Gruß

Ma.Ge
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Anfängerfrage, TStringGrid - Rows[Row]

  Alt 29. Jan 2007, 22:16
Hiermit kannst du du alle Spalten und Zeilen an die StringList überegeben

Delphi-Quellcode:
Vertrpl:= TStringlist.Create; // Stringliste erzeugen
    Vertrpl.Add(IntToStr(StringGrid1.Colcount));
    Vertrpl.Add(IntToStr(StringGrid1.Rowcount));
      for x:= 0 to StringGrid1.ColCount-1 do
        for y:= 0 to StringGrid1.RowCount-1 do
        Vertrpl.Add(StringGrid1.Cells[x,y]);

      for x:= 0 to StringGrid1.ColCount-1 do
        Vertrpl.Add(IntToStr(StringGrid1.ColWidths[x]));
          for x:= 0 to StringGrid1.RowCount-1 do
          Vertrpl.Add(IntToStr(StringGrid1.RowHeights[x]));
          Vertrpl.Add(IntToStr(StringGrid1.Clientwidth));
          Vertrpl.Add(IntToStr(StringGrid1.Clientheight));
          Vertrpl.Add(IntToStr(Ord(StringGrid1.ScrollBars)));
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Anfängerfrage, TStringGrid - Rows[Row]

  Alt 30. Jan 2007, 13:22
Hi,

be careful with that axe, Eugene Ma.

Zitat von MaGe:
Somit bekomme ich wohl eine Liste von TStrings, zumindest verstehe ich das so. Damit müsste ich also mit:
Delphi-Quellcode:
MeineTStringListe := TStringList.Create;
MeineTStringListe := Rows[Row]; // Übergabe an MeineTStringliste
.. do something ...
MeineTStringListe.free;
doch die Stringliste von Rows an MeineTStringListe übergeben oder nicht?
Du erhältst einen Zeiger auf die Row, den du natürlich in einer beliebigen Zeiger-Variable ablegen kannst, aber du darfst nicht einfach Objekte freigeben, welche du nie erzeugt hast.

Delphi-Quellcode:
var
  sl: TStrings;
begin
  // Referenz übernehmen
  with StringGrid do
  begin
    Cells[Col, Row] := 'Hokus';
    sl := Rows[Row];
    Cells[Col, Row] := 'Pokus';
    ShowMessage(sl[Col]);
  end;
  
  // Daten übernehmen
  with StringGrid do
  begin
    sl := TStringList.Create;
    Cells[Col, Row] := 'Hokus';
    sl.Assign(Rows[Row]);
    Cells[Col, Row] := 'Pokus';
    ShowMessage(sl[Col]);
    sl.Free;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
MaGe

Registriert seit: 19. Jan 2007
18 Beiträge
 
#6

Re: Anfängerfrage, TStringGrid - Rows[Row]

  Alt 30. Jan 2007, 18:33
Zitat von marabu:
Delphi-Quellcode:
var
  sl: TStrings;
begin
  // Referenz übernehmen
  with StringGrid do
  begin
    Cells[Col, Row] := 'Hokus';
    sl := Rows[Row];
    Cells[Col, Row] := 'Pokus';
    ShowMessage(sl[Col]);
  end;
  
  // Daten übernehmen
  with StringGrid do
  begin
    sl := TStringList.Create;
    Cells[Col, Row] := 'Hokus';
    sl.Assign(Rows[Row]);
    Cells[Col, Row] := 'Pokus';
    ShowMessage(sl[Col]);
    sl.Free;
  end;
end;
Grüße vom marabu
Das ist die Antwort die ich erhoft hatte! Vielen Dank Marabu, Du bist mein "Hero of the Day!"
Wenn ich das Richtig verstehe, kann man mit Referenzübernahme den Inhalt der Row gleich ändern ohne diesen wieder an der Stelle zurückschreiben zu müssen?
Wenn ja, wäre das ja praktisch, ich würde die 'Orginaldaten' sozusagent dirket verändern ohne, eine procedure zu schreiben die die veränderten Daten an der Stelle der Orginaldaten schreibt.
Wenn ich das jetzt richtig verstanden habe macht OOP ja richtig Spass

Gruß

Ma.Ge
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:41 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