Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Navigatorbuttons (https://www.delphipraxis.net/67906-navigatorbuttons.html)

Janek76 21. Apr 2006 16:57

Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos-Komponenten

Navigatorbuttons
 
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?

Janek76 22. Apr 2006 00:54

Re: Navigatorbuttons
 
Ich glaub ich hab mich da etwas verzettelt. Heute ist beim Testen tatsächlich etwas schief gelaufen. Aber ich muß noch mal gucken, woran es genau gelegen hat, wenn ich das noch nachstellen kann. Ich hoffe es ist nur mein Quelltext, der instabil ist, und nicht die Zeoskomponenten ;).

Wie man einen Navigatorbutton anspricht, habe ich inzwischen im Forum gefunden. Man muß wohl extra eine Klasse TDBNavigator ableiten und den DBNavigator darin umwandeln.

marabu 22. Apr 2006 09:02

Re: Navigatorbuttons
 
Guten Morgen.

Wenn ich deine Problembeschreibung richtig verstehe, dann solltest du das Ereignis OnNewRecord() der Query-Komponente verwenden um deine Felder mit Inhalten vorzubelegen.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz