Update Hilfe

Started by SpEEDY, May 07, 2009, 02:04:41 AM

Previous topic - Next topic

SpEEDY

Hallo Forum.

Bin neu hier und bin verdammt froh das ich ein Deutsches Forum gefunden hat das sich mit OpenDCL beschäftig. :)
Als erstes ein riesen Dank von mir an euch ist das bestes Programm was ich kenne. :)

Kommen wir direkt zu meiner Frage.
Ich wollte wissen ob es geht ,dass man nach der Ã,,nderung eines Textfeldes ein Update durch geführt wird. Es gibt die Funktion EditChanged und OnUpdate beide führen Ã,,nderungen direkt durch. Das heißt wenn man eine Zahl einträgt. Wird der Befehl ausgeführt. Wollte wissen ob es so geht das erst nach dem verlassen des Textfeldes z.B in ein anders der Befehl sich ausführt. Vielleicht habe ich auch was falsches gemacht.

Code:

(defun c:Straßenbau_Tool_FB_Haupt_TX_HBL_OnUpdate (strNewValue /)
   (setq Halbmesser (atof (dcl_Control_GetText Straßenbau_Tool_FB_Haupt_TX_HBL)))
)

Danke für die Hilfe noch mal. Und macht weiter so.

Mit freundlichen Grüßen

SpEEDY








Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!

Fred Tomke

Hallo SpEEDY,

erst mal mein herzlichstes Willkommen.

Damit wir auch alle Deine Sonderzeichen lesen können, stelle doch mal in Deinem Forum-Profil Deutsch ein.
Das machst Du so:

- oben Profil klicken
- in der linken Navigation den Eintrag Benutzerkonto anklicken
- rechts unter Verwendete Sprachdatei gaaanz unten Deutsch auswählen (nicht das obere Deutsch).
- dann auf Profil ändern

Jetzt zu Deiner Frage:

Ich selbst verwende je nach Anforderung unterschiedliche Arten der Reaktion auf Textänderungen:

Beispiel 1: kontrollierte Namensgebung
Das mache ich mit OnEditChanged. Bei jedem Tastendruck prüfe ich, ob der Name gültig ist und villeicht nicht bereits anderweitig vergeben wurde. Man sollte parallele Grafikänderungen in der Zeichnung vermeiden, weil es ganz schön performanceeinschränkend sein kann.

Beispiel 2: Zahlenwerte eingeben
In diesem Fall aktiviere ich OnReturnPressed und OnKillFocus, denn in beiden Fällen soll natürlich die Änderung angewandt werden. Im Vergleich zu OnEditChanged wird hier allerdings nicht der aktuelle Textwert zurückgegeben, den musst Du Dir mit dcl_Control_GetText holen.

Bitte beachte, dass beim Drücken der Eingabetaste innerhalb des Textfelds der Dialog automatisch geschlossen wird (bzw. werden kann). Das kannst Du mit dem Ereignis OnCancelClose abfangen.

Viel Spaß!

Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

SpEEDY

Danke Fred,

mit dem Befehl OnKillFocus hat es geklappt.  ;D

Zu dem befehl OnReturnPressed hätte ich mal einen Frage.
Der Code nach dem Kopieren lautet so:

(defun c:Straßenbau_Tool_FB_Haupt_TX_ST1_OnReturnPressed /)
)

Das kann aber nicht sein den einen Klammer fehlt da.
Ist das ein Bug oder hab ich was falsch verstanden.

Mit freundlichen Grüßen

Speedy
Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!

Fred Tomke

Ja, das war ein Bug. Füge einfach eine Klammer hinzu. Das Problem sollte mit der aktuellen Version 5.1.0.4 behoben sein.

Wenn ich schonmal dabei bin, noch ein persönlicher Tipp:

Da eigentlich innerhalb von OnKillFocus und OnReturnPressed das selbe passieren soll, verwende ich in beiden Fällen die gleiche Event-Funktion. Das geht natürlich genau dann nicht, wenn bei OnReturnPressed der Dialog durchaus geschlossen werden soll. Das kommt bei mir aber nur in 2 von 1000 Fällen vor.

VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]