AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Inhaltsänderg. direkt in OnChange-Ereignis rückgängig machen
Thema durchsuchen
Ansicht
Themen-Optionen

Inhaltsänderg. direkt in OnChange-Ereignis rückgängig machen

Ein Thema von little-x · begonnen am 4. Sep 2007 · letzter Beitrag vom 4. Sep 2007
Antwort Antwort
little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#1

Inhaltsänderg. direkt in OnChange-Ereignis rückgängig machen

  Alt 4. Sep 2007, 11:20
Hallo!

Ich habe ein Feld einer TTable. Diese Komponente (TStringField) hat ja auch sein eigenes OnChange-Event. Wenn das Feld jetzt den Wert erster Wert besitzt, und ich gehe rein und ändere den Wert in zweiter Wert, wird das Ereignis ja ausgelöst. Jetzt soll in dem Ereignis dafür gesorgt werden, dass wenn der Wert der Plausibilitätsprüfung nicht standhält, der ursprüngliche Wert, also erster Wert wiederhergestellt wird.

Ich wüsste mir nicht anders zu helfen, als mir den Wert in einer anderen Variable zu speichern und diesen dann dem Control wieder zuzuweisen. Das ist aber doch recht umständlich (da brauche ich ja bei einer Form mit 20 Controls 20 Variablen, bei denen ich auch noch ständig aufpassen muss dass diese auch ja immer den richtigen Wert haben).

Einfacher wäre eine Standardmethode, die ich aber nicht gefunden habe. Gibt es eine solche, oder hat jemand eine ganz andere Idee?

Danke und Viele Grüße!

ps. Hab die Suche schon bemüht, aber ich habe nichts in der Richtung gefunden...
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: Inhaltsänderg. direkt in OnChange-Ereignis rückgängig ma

  Alt 4. Sep 2007, 14:04
Zitat von little-x:
Hallo!

Ich habe ein Feld einer TTable. Diese Komponente (TStringField) hat ja auch sein eigenes OnChange-Event. Wenn das Feld jetzt den Wert erster Wert besitzt, und ich gehe rein und ändere den Wert in zweiter Wert, wird das Ereignis ja ausgelöst. Jetzt soll in dem Ereignis dafür gesorgt werden, dass wenn der Wert der Plausibilitätsprüfung nicht standhält, der ursprüngliche Wert, also erster Wert wiederhergestellt wird.

Ich wüsste mir nicht anders zu helfen, als mir den Wert in einer anderen Variable zu speichern und diesen dann dem Control wieder zuzuweisen. Das ist aber doch recht umständlich (da brauche ich ja bei einer Form mit 20 Controls 20 Variablen, bei denen ich auch noch ständig aufpassen muss dass diese auch ja immer den richtigen Wert haben).

Einfacher wäre eine Standardmethode, die ich aber nicht gefunden habe. Gibt es eine solche, oder hat jemand eine ganz andere Idee?

Danke und Viele Grüße!

ps. Hab die Suche schon bemüht, aber ich habe nichts in der Richtung gefunden...
Hallo,

der richtige Weg, aber aufwendig: die Ableitung einer eigenen Komponente von TStringField mit einem Feld für den letzten gültigen Wert und einer eingebauten Plausibilitätsprüfung, die diesen Wert bei ungültigen Eingaben wiederherstellt. Dann herrscht Ordnung: Field1.LastValidEntry gehört eben zum Objekt Field1, und man kann den Zugriff mit den üblichen Verfahren regeln (private, protected usw.). Externe Variablen sind für den Zweck ziemlich fehleranfällig.

Gruss Reinhard
  Mit Zitat antworten Zitat
little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Inhaltsänderg. direkt in OnChange-Ereignis rückgängig ma

  Alt 4. Sep 2007, 15:47
Zitat:
Externe Variablen sind für den Zweck ziemlich fehleranfällig.
Dem stimme ich zu. Die Sache mit der abgeleiteten Komponente hatte ich inzwischen auch im Sinn - wäre sauberer. Zwar umständlich, aber wenn es einmal läuft, sind Fehler eigentlich ausgeschlossen.

Die Faulheit hat aber inzwischen gesiegt... hab es inzwischen mit externen Variablen gelöst. Wenn ich das Problem noch öfter kriege, werd ich aber wohl eine Komponente ableiten.

Viele Grüße!
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Inhaltsänderg. direkt in OnChange-Ereignis rückgängig ma

  Alt 4. Sep 2007, 19:41
Hallo,

Zitat von little-x:
... Einfacher wäre eine Standardmethode, die ich aber nicht gefunden habe. Gibt es eine solche, oder hat jemand eine ganz andere Idee? ...
vielleicht möchtest du dir das Ereignis OnValidate() des Feldes (TField) anschauen? In dem Zusammenhang werden dich auch die Eigenschaften OldValue und NewValue interessieren.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 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