Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi nochmal StringGrid, Listbox, Memo (https://www.delphipraxis.net/48801-nochmal-stringgrid-listbox-memo.html)

RX3 30. Jun 2005 15:12


nochmal StringGrid, Listbox, Memo
 
Liste der Anhänge anzeigen (Anzahl: 2)
sorry, aber ich muss das Teil nochmal ändern...

Der Code soll folgendes machen:
die ListboxEinträge mit den Zellen aus dem StringGrid vergleichen, bei Übereinstimmung sollen alle ZEILEN des StringGrids ins Memo geschrieben werden, allerdings NUR die Einträge aus der ausgewählten Spalte

hier ist der Quellcode aus dem ButtonKlick-Ereignis
Delphi-Quellcode:
procedure TArtikel_Form.Btn_ListKonvertierenClick(Sender: TObject);
var i:Integer;
begin
.
.
.

    for i := 0 to ListBox1.Items.Count - 1 do   //für jeden Listboxeintrag
    begin
      for x := 1 to StringGrid1.RowCount - 1 do  //für jede Spalte
      begin
        if ListBox1.Items[i] = StringGrid1.Cells[x,1] then
        begin
          vZeile := '';
          //y=0 : erste(leere Spalte)
          //y=1 : zweite(erste gefüllte Spalte)
          for y := 0 to StringGrid1.ColCount - 1 do
          begin
            for x := 1 to StringGrid1.Row -1 do
            begin
              vZeile := vZeile + StringGrid1.Cells[y,x] + vTrennzAus;
             memo1.Lines.Add('INVITEM' + vZeile);
           end;
          end;
        end;
      end;
    end;
    Listbox1.Clear;
  end;
end;
Bild Unbenannt1 zeigt die wie es momentan aussieht.
Bild Unbenannt2 zeigt wie es aussehen soll !

Schuster 30. Jun 2005 17:02

Re: nochmal StringGrid, Listbox, Memo
 
Wo der Fehler liegt kann ich dir zwar nicht sagen aber debbuge mal zeile für zeile.
Und schau dir immer den Wert von VZeile an.

Dann solltest du draufkommen wo der Hacken ist.

RX3 30. Jun 2005 17:56

Re: nochmal StringGrid, Listbox, Memo
 
schon ok ich habs jetz endlich !

Danke an Alle die helfen wollten/konnten! ;-)

RX3 30. Jun 2005 18:09

Re: nochmal StringGrid, Listbox, Memo
 
falls es jmd interessiert:

Delphi-Quellcode:
   
  for i:=1 to StringGrid1.RowCount - 1 do // Alle Zeilen durchlaufen
    begin
      vZeile:='';
      for j:=1 to StringGrid1.ColCount do // Alle Spalten durchlaufen
      begin
        gefunden:=false;
        for k:=0 to ListBox1.Items.Count-1 do // Alle ListboxEinträge durchlaufen
        begin
          //### Listboxeintrag mit Spaltenüberschirft vergleichen ###
          if StringGrid1.Cells[j,1]=ListBox1.Items.Strings[k] then
            gefunden:=true;
.
.
.
        end; // end Listboxeinträge

        //###  wenn Übereinstimmung Listboxeintrag = Zelleninhalt dann Zeile festlegen ###
        if gefunden = true then
          vZeile := vZeile + vTrennzAus + StringGrid1.Cells[j,i];
      end; // End ColCount
      Memo1.Lines.Add(vZeile); //festgelegte Zeilen ins Memo schreiben
    end; // End RowCount
    Listbox1.Clear;   //Listeneinträge löschen nach Konvertierung
  end;
end;
danke nochmal an alle!

Lannes 30. Jun 2005 19:00

Re: nochmal StringGrid, Listbox, Memo
 
Hallo,

darf es auch etwas kürzer sein :shock:
Delphi-Quellcode:
 
  vTrennzAus := ';';
  s := '';
  with StringGrid1 do
    for i:=1 to RowCount - 1 do // Alle Zeilen durchlaufen
      begin
      for j:=1 to ColCount -1 do // Alle Spalten durchlaufen
        if ListBox1.Items.IndexOf(Cells[j,1]) <> -1 then
          s := s + vTrennzAus + Cells[j,i];
      s := s+#13#10;//Zeilenumbruch hinzufügen
      end;
  Memo1.Text := s;//Ergebnis ins Memo
Außerdem ließt Du in deinem
Delphi-Quellcode:
for j:=1 to StringGrid1.ColCount do//<---
über den Bereich deiner StringGrid hinnaus, dort fehlt -1


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 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