Programmierung mittels Delphi 5 unter Windows 2000,
Paradox 7 - Tabellen
Problem beim Erstellen von Angebots-/Rechnungsbelegen in unserem Programm:
Die Belege werden in 2 Tabellen gespeichert: eine Tabelle enthält die Belegkopfdaten, die zweite die Positionsdaten. Zum Erfassen der Positionsdaten existiert ein Formular, welches ein DBCtrlGrid enthält. Auf diesem DBCtrlGrid sind mehrere DBEDIT angeordnet, um Mengen, Preise, Positionstexte usw. zu erfassen. An jedes DBEdit ist eine OnExit-Prozedur angebunden. In dieser Prozedur wird nach Verlassen des Eingabefeldes die Gesamtbelegsumme Netto/Brutto über alle Positionen neu berechnet
und in der Tabelle mit den Belegkopfdaten gespeichert. Eine Tabulatorreihenfolge für die DBEdit-Felder wurde festgelegt. Wenn nun der Cursor mittels Tabulatortaste in das nächste Eingabefeld bewegt werden soll, kommt es zu Problemen. Erfolgte KEINE neue
Eingabe in das DBEdit, funktioniert das Weiterschalten ganz normal. Trage ich aber einen neuen Wert in ein DBEdit ein und drücke dann die Tabulatortaste, ist der Cursor erstmal garnicht mehr sichtbar. Nach erneutem Druck auf die Tabulatortaste erscheint er wieder,
dann aber im übernächsten Eingabefeld. In dem Moment, in dem der Cursor nicht mehr sichtbar ist, kann ich sogar Eingaben über die Tastatur vornahmen, sie werden sogar im richtigen Eingabefeld angezeigt (obwohl kein Cursor darin steht). Wechsele ich aber zu einem anderen Datensatz oder schliesse ich ein Eingabefeld mit der ENTER-Taste ab, so sind diese Änderungen wieder verschwunden, werden also nicht abgespeichert.
Ich habe schon diverse Versuche unternommen, das Problem zu lösen. habe mir beim Start der OnExit-Prozedur das aktive Steuerelement gemerkt und versucht, es nach Abschluss der Prozedur mittels SetFocus, FocusControl o.ä. wieder herzustellen. Der Effekt ist der gleiche wie oben beschrieben. Habe auch Teile der OnExit-Prozedur auskommentiert, um die Quelle des Problemes zu finden. Der Fehler tritt demnach immer dann auf, wenn ich in der Positionstabelle scrolle oder in die Positions- oder Kopftabelle schreibe (wobei die Kopftabelle in diesem Formular garnicht genutzt wird). Habe auch versucht, die DBEdit-Felder direkt auf dem Formular anzuordnen (ohne DBCtrlGrid) und die OnExit-Prozeduren beizubehalten. In diesem Fall gibt es keine Probleme, das Weiterschalten klappt einwandfrei.
Bin für jede Hilfe DANKBAR !!!!