![]() |
Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringgrid
Hallo,
ich möchte die ausgewählten Zeilen eines TAdvStringgrids in ein anderes kopieren. Allerdings soll die erste Zeile (Überschriften) und die erste Spalte (Checkboxen) nicht in das zweite Stringgrid übertragen werden. Ich habe von TMS folgendes Beispiel gefunden, dort werden die gecheckten Zeilen in eine Listbox übertragen und auch nicht ganz so wie ich es brauche.
Delphi-Quellcode:
procedure TForm1.AdvStringGrid1CheckBoxClick(Sender: TObject; ACol,
ARow: Integer; State: Boolean); begin advstringgrid1.RowSelect[Arow] := State; end; var i: Integer; state: boolean; begin Listbox1.Items.Clear; for i := 1 to AdvStringGrid1.RowCount - 1 do begin if Advstringgrid1.GetCheckBoxState(0,i,state) then begin if state then begin AdvStringGrid1.SetCheckBoxState(0,i,false); ListBox1.Items.Add(AdvStringgrid1.Cells[1,i]); end; end; end; if listbox1.Items.Count = 0 then ShowMessage('No items selected'); AdvStringGrid1.Invalidate; end; ![]() Viele Grüße Aaron |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Und was ist genau deine Frage?
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
;-)
Hallo Wie kann ich die ausgewählten Zeilen eines TAdvStringgrids unter Ausschluß der ersten Zeile (da stehen die Überschriften) und der erste Spalte (da sind die Checkboxen enthalten) in ein zweites TAdvstringgrid kopieren? Besser formuliert? Gruß Aaron |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Ja wenn du die beiden Schleifen von 1 beginnen lässt
Delphi-Quellcode:
for zeile = 1 to Grid1.RowCount -1 do
for spalte := 1 to Grid1.ColCount-1 do |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Hallo
meinst du so?
Delphi-Quellcode:
Falls ja, wie bekomme ich den Inhalt in das zweite Stringgrid?
procedure Tform1.Button2Click(Sender: TObject);
var i, x2: integer; begin for i := 1 to StringGrid1.RowCount -1 do for x2 := 1 to StringGrid1.ColCount-1 do begin if stringgrid1.GetCheckBoxState(0,i,state) then begin if state = true then StringGrid2.Cells[i - 1, x2 - 1]:=StringGrid1.Cells[x2 - 1, i - 1]; // ??? end; end; end; Ich denke ich habe ein Brett vorm Kopf, sitze schon seit Stunden an diesem Problem. ^^ Aaron |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Ja, vorher ab die Dimensionen des 2. Grids setzten.
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Habe ich gemacht, bekomme immer nur die ersten beiden Zeilen übertragen.
Meinst du mit Dimensionen, dem zweiten Stringgrid genau so viele Zeilen und Spalten hinzuzufügen? Grüße Aaron |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Bist du sicher die Größe des Zielgrids gesetzt zu haben?
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Meinst du mit Dimensionen, dem zweiten Stringgrid genau so viele Zeilen und Spalten hinzuzufügen wie ich im ersten Stringgrid ausgewählt habe, wenn ja wie muss ich das machen?
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
.RowCount und .ColCount entsprechend setzen.
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Liste der Anhänge anzeigen (Anzahl: 1)
Habe Colcount bei beiden bei 3 und Rowcount bei beiden bei 2.
So sieht der Code gerade aus:
Delphi-Quellcode:
Freundliche Grüße
procedure Tform1.Button2Click(Sender: TObject);
var i, x2: integer; begin for i := 1 to StringGrid1.RowCount -1 do for x2 := 1 to StringGrid1.ColCount-1 do begin if stringgrid1.GetCheckBoxState(0,i,state) then begin if state = true then StringGrid2.Cells[i, x2-1]:=StringGrid1.Cells[i, x2-1]; end; end; end; Aaron [EDIT] schau dir mal bitte das Bild an. Außerdem ist mir aufgefallen, wenn das zweite stringgrid wieder die gleichen Dimensionen hat bekomme ich beim Ausdruck genau die gleichen Felder angezeigt. Das will ich ja danach damit machen, habs bislang nicht erwähn weil ich nicht wußte wie es weiter geht. ![]() |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Lass mal die Abfrage der Checkboxen weg.
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Dann wird immer noch eine Zeile angezeigt.
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab es mal mit normalen StringGrids getestet, funktioniert
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type TForm1 = class(TForm) Button1: TButton; StringGrid1: TStringGrid; StringGrid2: TStringGrid; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i, x2: integer; begin for i := 1 to StringGrid1.RowCount -1 do for x2 := 1 to StringGrid1.ColCount-1 do begin //if stringgrid1.GetCheckBoxState(0,i,state) then begin //if state = true then StringGrid2.Cells[i, x2]:=StringGrid1.Cells[i, x2]; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.rows[0].CommaText := 'Spalte1, Spalte2, Spalte3'; StringGrid1.rows[1].CommaText := 'blabla, a , b, c'; StringGrid1.rows[2].CommaText := 'ablabl, 1 , 2, 3'; end; end. |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Liste der Anhänge anzeigen (Anzahl: 1)
Stimmt, das funktioniert.
Ich bau das jetzt auf einer anderern Form mal mit den Checkboxen, bin ja gespannt. Gruß Aaron [Edit] Mit den Checkboxen funktioniert es wieder nicht. (Screenshot) |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Das mit der Listbox klappt:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i: Integer; state: boolean; begin Listbox1.Items.Clear; for i := 1 to StringGrid1.RowCount - 1 do begin if stringgrid1.GetCheckBoxState(0,i,state) then begin if state then begin StringGrid1.SetCheckBoxState(0,i,false); ListBox1.Items.Add(Stringgrid1.Cells[1,i]+Stringgrid1.Cells[2,i]); end; end; end; if listbox1.Items.Count = 0 then ShowMessage('No items selected'); StringGrid1.Invalidate; end; |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
So komme ich nun auch ans Ziel, obwohl ich ja gerne gewußt hätte was ich falsch mache:
Delphi-Quellcode:
Freundliche Grüße
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; state: boolean; begin Listbox1.Items.Clear; for i := 1 to StringGrid1.RowCount - 1 do begin if stringgrid1.GetCheckBoxState(0,i,state) then begin if state then begin StringGrid1.SetCheckBoxState(0,i,false); ListBox1.Items.Add(Stringgrid1.Cells[1,i]+';'+Stringgrid1.Cells[2,i]); ListBox1.Items.SaveToFile(extractfilepath(application.exename)+'data\tmp.txt'); end; end; end; if listbox1.Items.Count = 0 then ShowMessage('No items selected'); StringGrid1.Invalidate; StringGrid2.Clear; Form1.StringGrid2.Delimiter := ';'; StringGrid2.loadfromCSV(extractfilepath(application.exename)+'data\tmp.txt'); end; Aaron |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Ich kenne die TMS-Komponente leider nicht.
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Die sind echt gut, erleichtern "manchmal" die Arbeit.
Ich möchte mich für deine Hilfe nochmal bei dir bedanken. Gruß Aaron |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Ich werde mir mal die Demoversion herunterladen.
Könntest du mir dein Testprojekt mal einstellen? |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Liste der Anhänge anzeigen (Anzahl: 1)
Klar. :)
|
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i, x2, j: integer; begin j := 0; for i := 1 to StringGrid1.RowCount - 1 do begin if stringgrid1.GetCheckBoxState(0, i, state) then begin if state = true then begin Inc(j); for x2 := 1 to StringGrid1.ColCount - 1 do begin StringGrid2.Cells[x2, j] := StringGrid1.Cells[x2, i]; end; end; end; end; end; |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Jepp, das funktioniert.
Ich hatte zwar auch in der Richtung probiert aber letztenendes das Inc(j); und StringGrid2.Cells[x2-1, j-1] nicht gewußt. :-) Danke Aaron |
Re: Ausgewählte Zeilen e. Stringgrid's i.e. anderes Stringg
Die weitere Variable j hab ich eingeführt, um keine Leerzeilen im Grid zu erhalten.
Bei .Cells hast du einfach übersehen, dass hier Zeilen und Spalten vertauscht ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:26 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