Navigatorbuttons
21. Apr 2006, 17:57
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos-Komponenten
Hallo,
ich arbeite gerade mit TDBEditfeldern und der Navigatorbuttonleiste (TDBNavigator), und das ist immer etwas tricky. Zur Zeit habe ich folgendes, kleines Problem:
Beim Insertbefehl, also beim Neuanlegen eines Datensatzes, möchte ich bestimmte Felder vorbelegen.
Zum Beispiel bei der Angabe einer Internetadresse soll das DBEditFeld schon mal mit "http://www." gefüllt werden.
Da ich keine Texteigenschaft bei den TDBEditFeldern gefunden habe, sie zeigen ja auf die Datenbank, weise ich dem Feld des neuen Datensatzes, der dann zu der Zeit noch im Puffer steht, über FieldValues diesen String zu.
Problem bei der Sache: Normalerweise ist der Delete-Button im Insertmodus immer deaktiviert. Dadurch wird der nbDelete-Button der Navigatorbutton aber aktiviert, wodurch unvorhersehbare Probleme - wie ich beim Testen feststellen mußte - auftauchen können, da man anscheinend damit den im Puffer stehenden Datensatz nicht löschen kann. So genau weiß ich das auch noch nicht, wie das geht. Bei State dsEdit kann ich Cancel sagen, bei dsInsert nicht. Löschen scheint auch nicht zu gehen. Das scheint glaube ich nur für bereits gespeicherte Datensätze zu gelten.
Nun suche ich nach einer Lösung, wie ich dieses Problem umgehen kann. Am besten durch Deaktivieren des Navigatorbuttons bei der Stringzuweisung, aber ich weiß nicht, wie man den Button anspricht und bei welchem Ereignis ich ihn wieder aktivieren kann, wenn das nicht automatisch geht.
Ich habe versucht, den einzelnen Button über VisibleButton oder FindComponent anzusprechen, aber das war wohl beides falsch. Wie macht man das?
Dazu habe noch einige Fragen zu den Bearbeitungsmodi: dsInsert führt entweder zu Post oder zu welchem Ereignis, wenn der Datensatz verworfen wird?
Also normalerweise kommt immer erst Post, Cancel, oder Delete und dann Before und After Scroll, ist das richtig?
|