combobox aktualisieren

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
snoopy219
Beiträge: 11
Registriert: So 28. Okt 2012, 12:20

combobox aktualisieren

Beitrag von snoopy219 »

Hey!
Ich programmiere gerade ein Programm, wo man sich am Anfang als Spieler anmelden muss. Am Ende wird dann der Highscore angezeigt.
Mein Problem: Ich habe auf dem Anmelde-Formular eine Combobox, wo Namen angezeigt werden von den Spielern, die sich bereits einmal angemeldet haben. Daneben den Button mit dem man zum Hauptmenü gelangt.
Wenn man sich aber zum ersten Mal anmeldet habe ich dafür ein EditFeld, wo man den Namen eingibt. Wenn man nun auf den danebenstehenden Button klickt, soll der Name in der angebundenen Datenbank gespeichert werden (was funktioniert). Allerdings soll der Name auch in der Combobox angezeigt werden, was nicht funktioniert. Es erscheint aber auch keine Fehlermeldung.
Hier ist meine Prozedur:

Code: Alles auswählen

procedure TfmWelcome.cbAktualisieren;
begin
 //Combobox aktualisieren
 try
  cb.Items.Clear;
  dm.qSpieler.Open;
  while not (dm.qSpieler.EOF) do begin
    cb.Items.Add(dm.qSpieler.FieldByName('SName').AsString);
    dm.qSpieler.Next;
  end;
 except
   ShowMessage('SQL-Fehler');
   exit;
 end;
 cb.Update;
end;         
ich rufe die Prozedur bereits einmal auf, wenn sich die Form Aktiviert. Da funktioniert alles problemlos. Wenn ich die Prozedur aber in dem ButtonClick Ereignis aufrufe, wo der neue Name auch in der Datenbank gespeichert wird klappt es nicht..

Kann mir jemand von euch vielleicht helfen? Einen Tipp geben, was ich falsch gemacht haben könnte..

Danke..

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: combobox aktualisieren

Beitrag von baumina »

In solchen Fällen kommst du dem Fehler am schnellsten mit dem Debugger auf die Schliche. Setz dir einen Haltepunkt und steppe durch. Falls du dich mit dem Debugger nicht auseinandersetzen magst, kannst du auch (so habe ich das früher gemacht, als es noch keinen Debugger gab :D ) ein Showmessage von z.B. dm.qSpieler.RecordCount oder dm.qSpieler.FieldByName('SName').AsString einbauen, um erstens zu sehen ob er überhaupt an die Stelle kommt und zweitens zu sehen, ob die Daten das hergeben, was du vermutest.
.

snoopy219
Beiträge: 11
Registriert: So 28. Okt 2012, 12:20

Re: combobox aktualisieren

Beitrag von snoopy219 »

den Debugger hab ich schon benutzt ;) ging Fehlerfrei
die Prozedur funktioniert ja in einem anderem Zusammenhang auch..das ist das merkwürdige ;D

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: combobox aktualisieren

Beitrag von baumina »

Es geht nicht darum ob der Debugger "fehlerfrei" läuft, sondern es geht darum welche Daten zu diesem Moment im Dataset bzw. in den Items der Combobox stehen. Das könntest du dir im Debugger Schritt für Schritt anzeigen lassen.
.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: combobox aktualisieren

Beitrag von Komoluna »

baumina hat geschrieben:so habe ich das früher gemacht, als es noch keinen Debugger gab :D ) ein Showmessage von z.B. dm.qSpieler.RecordCount oder dm.qSpieler.FieldByName('SName').AsString einbauen.
Ich verwende für solche Fälle immer WriteLn/DebugLn.
(Man muss natürlich in die lpr {$apptype Console} einbauen, aber dafür ist es übersichtlicher als showmessage)

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: combobox aktualisieren

Beitrag von hde »

dumme Frage? Warum nimmst du nicht einfach eine DBComboBox?

Antworten