![]() |
Mehrere StringGrids über Schleife befüllen?
Hallo,
ich habe mal die Boardsuche gequält aber nichts passendes gefunden. Zunächst zu mir, ich bin kein Programmierer, mache das nur so als Hobby und bitte von daher schon jetzt um Verzeihung wenn mein Code nicht so professionell aussieht ;-) Also zu meinem Problem: Ich habe eine Funktion, ich habe es hier exemplarisch kurz gehalten, der werden Daten übergeben und dann wird in das StringGrid eingetragen.
Delphi-Quellcode:
Das ist alles kein Problem. Nur, eigentlich möchte ich die Funktion dazu nutzen, 4 StringGrids nacheinander zu befüllen, mit verschiedenen Daten.
With StringGrid1 do
begin Cells[1, Zeile] := 'Trage was ein'; ... viel mehr end; Ich könnte das so machen:
Delphi-Quellcode:
Aber dann würde ich die eigentliche Funktionalität vervierfachen...Case Variable of do 1: begin With StringGrid1 do begin Cells[1, Zeile] := 'Trage was ein'; ... viel mehr end; end; 2: begin With StringGrid2 do begin Cells[1, Zeile] := 'Trage was ein'; ... viel mehr end; end; usw. Ich suche eher nach einer Möglichkeit es so zu mache, also eine Funktionalität für verschiedene StringGrids zu nutzen:
Delphi-Quellcode:
Function TReport.Test(Zeile, Strg_Nr: Integer): String;
begin With StringGrid[Strg_Nr] do begin Cells[1, Zeile] := 'Trage was ein'; ... viel mehr end; end; Vielleicht habt Ihr ja einen einfachen Tipp... Danke schon mal |
AW: Mehrere StringGrids über Schleife befüllen?
Delphi-Quellcode:
procedure TReport.SchreibeZeile(AGrid: TStringGrid; AZeile: Integer);
begin with AGrid do begin Cells[1, Zeile] := 'Trage was ein'; ... viel mehr end; end; SchreibeZeile(StringGrid1, Zeile); SchreibeZeile(StringGrid2, Zeile); SchreibeZeile(StringGrid3, Zeile); SchreibeZeile(StringGrid4, Zeile); // oder: function TReport.GetStringGrid(AIndex: Integer): TStringGrid; begin case AIndex of 0: Result := StringGrid1; 1: Result := StringGrid2; 2: Result := StringGrid3; 3: Result := StringGrid4; else raise Exeption.Create('Bereichsüberschreitung'); end; end; for i := 0 to 3 do SchreibeZeile(GetStringGrid(i), Zeile); |
AW: Mehrere StringGrids über Schleife befüllen?
Danke Blup für deine schnelle Antwort.
Nun, die erste Lösung ist auf den ersten Blick das was ich nicht machen will da
Delphi-Quellcode:
sich alles 4 mal wiederholt.
SchreibeZeile(StringGrid1, Zeile);
SchreibeZeile(StringGrid2, Zeile); SchreibeZeile(StringGrid3, Zeile); SchreibeZeile(StringGrid4, Zeile); Die zweite Lösung sieht da schon deutlich interessanter aus. Ich werde mich mal damit befassen und es mal ausprobieren und würde mich jedenfalls melden. Ich danke Dir erst mal dafür. EDIT: Ich sagte ja, ich bin kein Programmierer... Wenn ich das jetzt so richtig verstehe, wird auch hier alles 4 mal wiederholt. Mit der Zeile
Delphi-Quellcode:
rufe ich die folgende Funktion auf
for i := 0 to 3 do
SchreibeZeile(GetStringGrid(i), Zeile);
Delphi-Quellcode:
...und bei jedem "Result := " wird der auszuführende Code rein geschrieben.
function TReport.GetStringGrid(AIndex: Integer): TStringGrid;
begin case AIndex of 0: Result := StringGrid1; 1: Result := StringGrid2; 2: Result := StringGrid3; 3: Result := StringGrid4; else raise Exeption.Create('Bereichsüberschreitung'); end; end; Somit vervierfache ich ihn auch hier. Leider ist auch das nicht die Lösung die ich suche. |
AW: Mehrere StringGrids über Schleife befüllen?
Nicht so ganz. GetStringGrid(i) liefert dir das StringGrid in das etwas eingentragen werden soll und zwar abhängig von dem Index i.
Das entspricht dem Pseudocode aus deinem ersten Beitrag: With StringGrid[Strg_Nr] do SchreibeInZeile wird das StringGrid übergeben (der Proz. ist es egal welches) und schreibt einfach an die gewünschte Stelle was rein. Somit gibt es den Code nicht vierfach, oder ich verstehe nicht, was du meinst. Da du in 4 Grids was schreiben willst, muss der Code dafür auch viermal ausgeführt werden. Da das in einer Schleife passiert muss das aber nur einmal hingeschrieben werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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-2025 by Thomas Breitkreuz