| Autor |
Beitrag |
rob87
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 03.12.08 12:07
Hallo,
ich bin schon wieder da. Ich hoffe nun, ein letztens Mal für dieses Projekt. Aber nun gehts bissal ans Eingemachte:
Ich hab in einer ComboBox mehrere Werte enthalten. Nun soll anhand dieser Werte schleifenartig Verarbeitungen vorgenommen werden. Dabei muss die ComboBox-Auswahl immer um eins erhöht werden. Wenn man beim letzten EIntrag is, soll von vorne begonnen werden. Ich poste mal einen Code-Ausschnitt, dannn wirds hoffentlich klarer:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| var Note, i : Integer; begin for i := 0 to irgendwas do begin
repeat if (Noten_je_Schueler.Locate('Name',CB_Auswahl_Schueler.Text,[loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; until (Noten_je_Schueler.Eof) or (Note <> 0) ;
if Noten_je_Schueler.Eof then Noten_je_Schueler.First else begin Noten_je_Schueler.Next; if Noten_je_Schueler.Eof then Noten_je_Schueler.First end; end;end; |
Also es wird aus der CB_Auswahl_Schueler ein Schueler ausgewaehlt, bei welchem die Verarbeitung gestertart werden soll. Dann wird geschaut, welche Note dieser Schueler hat. Anschließend wird die Note weiterverarbeitet.
Mein Problem ist nun. Er liest aus der ComboBox immer den selben Wert! Ich bräuchte einen Code in der Art:
Delphi-Quelltext 1: 2: 3: 4:
| if CB_Auswahl_Schueler = Eof CB_Auswahl_Schueler.First; else CB_Auswahl_Schueler.Next |
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 03.12.08 12:24
dann antworte ich dir mal wieder
willst du wirklich IMMER wieder von vorne anfangen ?? das gibt dann doch eine endlosschleife ...
oder willst du immer alle einträge durchlaufen, egal an welcher stelle man anfängt ?
z.b. CoBo-inhalt
0 Name1
1 Name2
2 Name3
3 Name4
4 Name5
wenn man z.b. Name3 auswählt, sollen trotzdem alle 5 Einträge verarbeitet werden ?
dann solltest du dir mal ItemCount, itemindex von der Cobo in der hilfe angucken
und dann mal in etwa so rangehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| merker := cobo.items.itemindex; for i := 0 to cobo.items.count-1 do begin note := 0; if (Noten_je_Schueler.Locate('Name', cobo.items.strings[i], [loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; if note > 0 then end; |
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 03.12.08 12:43
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 03.12.08 12:48
ok, dann also
Delphi-Quelltext 1:
| for i := 0 to cobo.items.count-1 do |
durch deine variante ersetzen.
Delphi-Quelltext 1: 2: 3: 4:
| if (Noten_je_Schueler.Locate('Name', cobo.items.strings[i], [loPartialKey])=true) then begin Note := Noten_je_Schueler.FieldByName('Note').Value; end; |
springt natürlich immer auf den selben dS, da locate immer auf den ersten treffer jumpt.
wenn in der tabelle der name mehrfach mit unterschiedliche noten ist:
Tabelle nach Namn sortieren,
per locate auf den ersten treffer setzen, dann in der tabelle immer next, solange der name noch der gleiche ist
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 03.12.08 12:58
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 03.12.08 13:01
Dann setz doch den ItemIndex der ComboBox. Am Ende bist Du, wenn der ItemIndex Items.Count - 1 entspricht.
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 03.12.08 13:10
Combobox.items.next gibts nich, dafür machste
Delphi-Quelltext 1: 2:
| if (combobox.items.Count - 1) <= (combobox.items.index + 1) then combobox.items.index := combobox.items.index + 1; |
endeprüfung wie DeddyH bereits gesagt hat
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 03.12.08 13:59
zuma hat folgendes geschrieben : | Combobox.items.next gibts nich, dafür machste
Delphi-Quelltext 1: 2:
| if (combobox.items.Count - 1) <= (combobox.items.index + 1) then combobox.items.index := combobox.items.index + 1; |
endeprüfung wie DeddyH bereits gesagt hat |
Ok. Klar. Stimmt. Merci
Noch ne kurze Frage. Wasn der UNterschied zwischen CB.Items.Index und CB.ItemIndex ?
Des muss doch eigentlich ItemIndex heißen, oder?
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 03.12.08 15:02
jo, stimmt, tippfehler von mir,
combobox.items.index
gibts gar net
(sry, bin alt und der Kopf funzt nicht mehr so wie früher  )
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 03.12.08 15:08
|
|
|