Hallo !,
ich habe seit drei Tagen ein Riesenproblem mit einigen TEdit Komponenten.
Ich baue derzeit an einer Db Applikation mit Firebird als Datenbank und verwende dafür die IB-Komponenten, die in meinem Delphi 5 C/S vorhanden sind.
DB Inhalte werden in einfachen Edit Komponenten dargestellt. Um die Daten da hinein zu bekommen verwende ich zuweisungen der Art
TEdit.Text := Dataset.FieldbyName( Spaltenname ).Text
Der Dataset ist eine IBTable Komponente, die tatsächlich auch Daten liefert (s.u.)
Nachdem die Datenbank das erste Mal geöffnet ist, zeigt die Edit Komponente auch den ersten Datensatz an. Bewegt man aber nun den Db Cursor in der Tabelle des Datasets, so passiert gar nichts, obwohl die Zuweisung für jeden Wechsel aufgerufen wird.
Zur Kontrolle habe ich bei jeden DB Wechsel über einen kleinen Dialog den Inhalt von TEdit.Text abgefragt, und dort steht tatsächlich im das richtige drin !!, es wird aber auch der Oberfläche nicht angezeigt.
Löst man die DB Verbindung, kann man in die TEdit Komponente wieder etwas reinschreiben, und es wird auch angezeigt.
Zur weiteren Kontrolle habe ich einfach ein DBGrid auf die Oberfläche gelegt udn lasse mirt den Dataset direkt nochmal anzeigen. Das geht auch.
Der Hammer ist aber, das ich eine Label Komponente, die ebenfalls zum Testen eingerichtet ist, und die nur einmal angesprochen wird ( label.caption := datetimetostr( now )
das gleiche Verhalten wie die TEDits zeigt. Bei geöffneter Datenbank tut sich nichts, ansonsten funktionierts.
Prozeduren wie Repaint oder Refresh haben keine Auswirkungen auf das Verhalten.
Ich hatte auch überlegt, ob der Frame auf dem die Komponenten sind, das Neuzeichnen irgendwie verhindert, aber das Kontrollgrid läuft auf dem gleichen Frame problemlos.
Ich hatte noch den Verdacht, dass mein Delphi evtl. einen Fehler hat, aber mit einer Paradox DB funktioniert die Sache in einer anderen Applikation.
Ich bin für jeden Tip dankbar !!
Carsten
ich habe seit drei Tagen ein Riesenproblem mit einigen TEdit Komponenten.
Ich baue derzeit an einer Db Applikation mit Firebird als Datenbank und verwende dafür die IB-Komponenten, die in meinem Delphi 5 C/S vorhanden sind.
DB Inhalte werden in einfachen Edit Komponenten dargestellt. Um die Daten da hinein zu bekommen verwende ich zuweisungen der Art
TEdit.Text := Dataset.FieldbyName( Spaltenname ).Text
Der Dataset ist eine IBTable Komponente, die tatsächlich auch Daten liefert (s.u.)
Nachdem die Datenbank das erste Mal geöffnet ist, zeigt die Edit Komponente auch den ersten Datensatz an. Bewegt man aber nun den Db Cursor in der Tabelle des Datasets, so passiert gar nichts, obwohl die Zuweisung für jeden Wechsel aufgerufen wird.
Zur Kontrolle habe ich bei jeden DB Wechsel über einen kleinen Dialog den Inhalt von TEdit.Text abgefragt, und dort steht tatsächlich im das richtige drin !!, es wird aber auch der Oberfläche nicht angezeigt.
Löst man die DB Verbindung, kann man in die TEdit Komponente wieder etwas reinschreiben, und es wird auch angezeigt.
Zur weiteren Kontrolle habe ich einfach ein DBGrid auf die Oberfläche gelegt udn lasse mirt den Dataset direkt nochmal anzeigen. Das geht auch.
Der Hammer ist aber, das ich eine Label Komponente, die ebenfalls zum Testen eingerichtet ist, und die nur einmal angesprochen wird ( label.caption := datetimetostr( now )
das gleiche Verhalten wie die TEDits zeigt. Bei geöffneter Datenbank tut sich nichts, ansonsten funktionierts.
Prozeduren wie Repaint oder Refresh haben keine Auswirkungen auf das Verhalten.
Ich hatte auch überlegt, ob der Frame auf dem die Komponenten sind, das Neuzeichnen irgendwie verhindert, aber das Kontrollgrid läuft auf dem gleichen Frame problemlos.
Ich hatte noch den Verdacht, dass mein Delphi evtl. einen Fehler hat, aber mit einer Paradox DB funktioniert die Sache in einer anderen Applikation.
Ich bin für jeden Tip dankbar !!
Carsten
Comment