AGB  ·  Datenschutz  ·  Impressum  







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

Listbox mit StrinGrid vergleichen!?

Ein Thema von RX3 · begonnen am 27. Jun 2005 · letzter Beitrag vom 29. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
RX3

Registriert seit: 2. Jun 2004
42 Beiträge
 
#1

Listbox mit StrinGrid vergleichen!?

  Alt 27. Jun 2005, 14:10
hallo ich hab folgendes Problem,

ich habe eine Listbox mit verschiedenen Einträgen. Diese Einträge können per Doppelklick ins Stringgrid EINZELN hinzugefügt werden(allerdings wird NUR der Spaltentitel in die Listbox kopiert!).

bis hierhin hab ich es schon allein hingekriegt, aber...

Jetzt sollen zu jedem Eintrag in der Listbox, die dazugehörigen Spalten inkl. Spaltenüberschriften komplett in ein Memo kopiert werden!
Dazu muss ich doch die String-Einträge der Listbox mit Spaltenüberschirften vergleichen und bei jedem gefundenen Übereinstimmung die komplette Spalte kopieren! Aber wie mache ich das?
Hat jmd ein Codebeispiel?

Kann mir einer dabei helfen ?
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Listbox mit StrinGrid vergleichen!?

  Alt 27. Jun 2005, 14:26
Hi,

versuche mal sowas:
Delphi-Quellcode:

// Y ist hier die jeweilige Spalte

for x:= 1 to stringGrid.RowCount-1 do
  Memo.Text:= Memo.Text + StringGrid.Cells[x, y]+ #13#10;
Hab grad kein Delphi da, daher aus dem Kopf und ohne Gewähr
Ansgar
  Mit Zitat antworten Zitat
RX3

Registriert seit: 2. Jun 2004
42 Beiträge
 
#3

Re: Listbox mit StrinGrid vergleichen!?

  Alt 27. Jun 2005, 14:33
Zitat von angos:
Hi,

versuche mal sowas:
Delphi-Quellcode:

// Y ist hier die jeweilige Spalte

for x:= 1 to stringGrid.RowCount-1 do
  Memo.Text:= Memo.Text + StringGrid.Cells[x, y]+ #13#10;
Hab grad kein Delphi da, daher aus dem Kopf und ohne Gewähr
hmm, ich sehe da absolut nix was den Inhalt der Listbox mit dem Inhalt des StringGrid vergleicht!??

und was bedeuten die Zeichen #13#10 ??
  Mit Zitat antworten Zitat
RX3

Registriert seit: 2. Jun 2004
42 Beiträge
 
#4

Re: Listbox mit StrinGrid vergleichen!?

  Alt 27. Jun 2005, 15:18
Habe jetzt folgenden Code, aber es wird immer nur die Spaltenüberschirft ins memo geschrieben, nich die komplette Spalte...

Delphi-Quellcode:
begin
for i:=0 to ListBox1.items.count-1 do // für jedes element der listbox
 begin
  for x:=0 to StringGrid1.ColCount-1 do // für jede Spalte des grids
   begin
    for y:=0 to StringGrid1.RowCount-1 do // für jede Zeile
     begin
       if ListBox1.items[i] = StringGrid1.cells[y,x] then
        begin
          vZeile := vZeile + StringGrid1.Cells[y,x] + vTrennzAus;
          memo1.Lines.Add(vZeile);
          vZeile := '';
        end;
      end;
    end;
  end;
end;
wer weiß weiter ??
  Mit Zitat antworten Zitat
RX3

Registriert seit: 2. Jun 2004
42 Beiträge
 
#5

Re: Listbox mit StrinGrid vergleichen!?

  Alt 27. Jun 2005, 15:50
Delphi-Quellcode:
begin
for i:=0 to ListBox1.items.count-1 do // für jedes element der listbox
 begin
  for x:=0 to StringGrid1.ColCount-1 do // für jede Spalte des grids
   begin
    for y:=0 to StringGrid1.RowCount-1 do // für jede Zeile
     begin
       if ListBox1.items[i] = StringGrid1.cells[y,x] then
        begin
.
.
.
          for y := global_col to StringGrid1.Col do
          begin
           for x := 0 to StringGrid1.RowCount - 1 do
           begin
             vZeile := vZeile + StringGrid1.Cells[y,x] + vTrennzAus;
           end;
           memo1.Lines.Add(vZeile);
           vZeile := '';
          end;
        end;
      end;
    end;
  end;
end;

Jetz hab ich das hier, aber es wird nur die Spalte ins Memo kopiert, die aktuell ausgewählt ist!

Kann denn keiner helfen ???
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Listbox mit StrinGrid vergleichen!?

  Alt 27. Jun 2005, 16:23
Oh, ich dachte das wär klar, und du müsstest nur noch die Spalte ins memo schreiben.#13#10 macht einen zeilenumbruch im memo, aber natürlich habe ich nicht an lines.add gedacht.

Delphi-Quellcode:
var mylbxText: string;
begin
  for i:=0 to ListBox1.items.count-1 do begin // für jedes element der listbox
    mylbxTEXT:= ListBox1.items[i].Text; //die Vairable mit dem aktuellen ListBoxeintrag füllen. Hab nicht ganz im kopf wie die Eigenschaft hier heisst.
    for x:=0 to StringGrid1.ColCount-1 do // für jede Spalte des grids
      if StringGrid1.cells[0,x] = mylbxText then // erste Zeile nach dem Listboxeintrag durchsuchen
      begin
        for y:= 0 to StringGrid1.RowCount-1 do
          memo1.Lines.Add(StringGrid1.cells[y,x]);
      end;
  end;
Ansgar
  Mit Zitat antworten Zitat
RX3

Registriert seit: 2. Jun 2004
42 Beiträge
 
#7

Re: Listbox mit StrinGrid vergleichen!?

  Alt 27. Jun 2005, 18:32
funzt auch nich!!


so das hier is jetz der komplette code des buttonClick ereignis:
Delphi-Quellcode:
begin
for i:=0 to ListBox1.items.count-1 do // für jedes element der listbox
begin
  for x:=0 to StringGrid1.ColCount-1 do // für jede Spalte des grids
   begin
    for y:=0 to StringGrid1.RowCount-1 do // für jede Zeile
     begin
       if ListBox1.items[i] = StringGrid1.cells[y,x] then
       begin
         if Edit2.Text = 'TABthen
           vTrennzAus := chr(vk_tab)
         else
           vTrennzAus := Edit2.Text;
         for y := global_col to StringGrid1.Col do
         begin
           for x := 0 to StringGrid1.RowCount - 1 do
           begin
             vZeile := vZeile + StringGrid1.Cells[y,x] + vTrennzAus;
           end;
           memo1.Lines.Add(vZeile);
           vZeile := '';
          end;
        end;
      end;
    end;
  end;
end;
Der Fehler muss meiner Meinung nach hier liegen:
         for y := global_col to StringGrid1.Col do da eigentlich genau das gemacht wird was ich haben will, allerdings nur für die aktuell selektierte StringGrid-Spalte bzw Zelle...

Ich werd noch verrückt mit dem schiss hier
  Mit Zitat antworten Zitat
RX3

Registriert seit: 2. Jun 2004
42 Beiträge
 
#8

Re: Listbox mit StrinGrid vergleichen!?

  Alt 29. Jun 2005, 09:25
Leute kann mir denn keiner mehr helfen, das Programm ist soweit komplett fertig, nur noch dieser eine Fehler, ich muss es am 30.06. abgeben :-/

Delphi-Quellcode:
for i:=0 to ListBox1.items.count - 1 do // für jedes element der listbox
begin
  for x:=0 to StringGrid1.ColCount - 1 do // für jede Spalte des grids
   begin
    for y:=0 to StringGrid1.RowCount - 1 do // für jede Zeile
     begin
       if ListBox1.items[i] = StringGrid1.cells[y,x] then
       begin
         if Edit2.Text = 'TABthen
           vTrennzAus := chr(vk_tab)
         else
           vTrennzAus := Edit2.Text;
         for j := Listbox1.ItemIndex to Listbox1.Items.IndexOf(StringGrid1.Cells[i,x])do //der Fehler müsste hier liegen !!??
         begin
           for x := 0 to StringGrid1.RowCount do
           begin
             vZeile := vZeile + StringGrid1.Cells[i,x] + vTrennzAus;
           end;
           memo1.Lines.Add(vZeile);
           vZeile := '';
          end;
        end;
      end;
    end;
  end;
  end;
Zur Zeit wird der erste ListboxEintrag inkl. zugehörige Spalte ausm StringGrid 1x ins Memo geschrieben, der zweite Listboxeintrag 2mal, der dritte 3mal, etc ...
dafür wird der letzte und vorletzte gar nich mehr ins Memo geschrieben !??
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Listbox mit StrinGrid vergleichen!?

  Alt 29. Jun 2005, 09:36
hi,

versuche mal

if ListBox1.items[i] = StringGrid1.cells[y,x] then mal in

if ListBox1.items[i] = StringGrid1.cells[0,x] then
aendern, du willst ja nur die ueberschrift vergleichen und die steht in reihe 0 (bzw.1) oder nicht? , das ganze kannst du dann auch vor die letzte for schleife stellen
gruss
Grumble

... moege der code mit dir sein ...
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Listbox mit StrinGrid vergleichen!?

  Alt 29. Jun 2005, 09:57
Also zuallererst blicke ich

Was bezwckst du denn mit folgender Zeile?
for j := Listbox1.ItemIndex to Listbox1.Items.IndexOf(StringGrid1.Cells[i,x])do j wird später nicht benutzt, also wofür da ne for-Schleife? Diese Schleife dürfte wahrscheinlich der Grund für deine Wiederholungen sein. Ich schätze, weil du hinten i anstatt y geschrieben hast. Kann das sein? Ansonsten verstehe ich denn Sinn dieses Austausches nicht. Und warum arbeitest du hier überhaupt mit dem ItemIndex der ListBox?

Daß dir hier kaum einer hilft, dürfte daran liegen, daß man den Code einfach kaum verstehen kann. Sorry. Erklär doch nochmal ganz genau, was dein Code eigentlich machen soll. Auch aus deiner Erklärung im ersten Post werde ich nicht ganz schlau.
Aber ich versuch mal trotzdem, es nochmal so widerzugeben, wie ich es verstanden habe.
Du hast aus deinem Stringgrid bestimmte Spaltenüberschriften (fixed Columns?) in eine ListBox kopiert. Jetzt möchtest du, daß alle - in die ListBox eingefügten - Spalten in ein Memo geschrieben werden - als Zeilen. Soweit richtig?
OK, versuchen wir mal, das logisch anzugehen. Du mußt also die Zeilen der ListView durchgehen, dann jeweils die Spalten des StringGrids. Und nur, wenn eine Übereinstimmung in der Überschrift besteht, mußt du auch die restlichen Zeilen des StringGrids betrachten.
Delphi-Quellcode:
for i := 0 To ListBox1.Items.Count - 1 Do
  for x := 0 To StringGrid1.ColCount - 1 Do
    If ListBox1.Items[i] = StringGrid1.Cells[0,x] Then
    begin
      vZeile := '';
      for y := 0 To StringGrid1.RowCount - 1 Do
      begin
         if Edit2.Text = 'TABthen
           vTrennzAus := chr(vk_tab)
         else
           vTrennzAus := Edit2.Text;
      
         vZeile := vZeile + StringGrid1.Cells[i,x] + vTrennzAus;
      end;
      memo1.Lines.Add(vZeile);
    end;
Das hab ich jetzt in kurzer Zeit ungetestet hingeschludert, es sollte es aber im Groben tun. Wahrscheinlich hab ich allerdings trotzdem einige Fehlerchen eingebaut. Höchstwahrscheinlich soga dicke Verständnisfehler. Hab jetzt auch im Moment leider keine Zeit, da ich wegmuss, aber ich schaus mir nachher nochmal genauer an.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  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 19:25 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