![]() |
AW: Windows Message bei Änderung?
Ich habe mir das nun alles durchgelesen und bin ein wenig verwundert ...wenn man in der DP etwas erfragt und von wirklich, langjährig erfolgreichen, Entwicklern Konzepte vorgeschlagen bekommt sollte man wenigstens mal in sich gehen und darüber nachdenken.
In deinem Falle, und so lange Du dir keine Ableitungen von den Komponenten machst, würde ich mir, wenn es schnell gehen soll, einen Dictionary mit den Start- und aktuellen Werten anlegen. In einer zentralen OnChange-Routine kannst Du dann prüfen, ob es überhaupt Änderungen gibt und entsprechend deine Buttons einstellen. Es könnte ja auch sein, dass der User eine Eingabe wieder zurückstellt ... Oder Du nimmst halt gleich daten-sensitive Controls (da kann man auf xxx.OldValue <> xxx.NewValue prüfen) und checkst in einer zentralen Rotine, ob sich etwas geändert hatte ... |
AW: Windows Message bei Änderung?
@IdeFix2: ich glaube, dass ich mich jetzt da auch raushalte, denn ich finde es unmöglich, wie Du hier mit den Foren-Usern sprichst, denn man versucht Dir zu helfen und es sind ausgesprochen patzige Antworten. Ich kann auch nicht erkennen, dass Du nach 30 Jahren Berufserfahrung (egal welche Sprache) dein Problem in ein einfaches, aber sicheres, Konzept umsetzt.
|
AW: Windows Message bei Änderung?
Zitat:
Delphi-Quellcode:
Ein Problem hätte ich dann nur, wenn es Komponenten gibt, die eine eigene Onchange-Routine brauchen, in der noch irgend etwas anderes passieren soll.
for i:=0 to componentcount-1 do
if component[i]=Tedit then Tedit(component[i]).onchange:=tne else if component[i]=Tcheckbox then TCheckbox(component[i]).onchange:=tne ... |
AW: Windows Message bei Änderung?
Zitat:
Delphi-Quellcode:
Für diese eine Komponente (ComboBox) gibt's in der Ereignisbehandlung zusätzlich eine Besonderheit.
procedure TForm1.SetPropertiesChanged(Sender: TObject);
begin btnApply.Enabled:= True; if Sender = comboLocation then checkCopyStartup.Enabled:= True; end; MfG Dalai |
AW: Windows Message bei Änderung?
Zitat:
Hängt natürlich immer davon ab, wie man so arbeitet. Ich persönlich arbeite bei Formularen, denen ich einen solche Logik spendieren möchte, im Formular mit einer Kopie der Originaldaten. Bei Änderungen vergleiche ich dann die Kopie komplett mit dem Original und erkenne so Änderungen, aber auch wenn Änderungen wieder zurückgenommen wurde, und setze meine Buttons entsprechend. |
AW: Windows Message bei Änderung?
Zitat:
Zitat:
Zitat:
|
AW: Windows Message bei Änderung?
@Dalai
Das würde heissen, dass man individuelle Onchange-Behandlungen auch in der zentralen Routine erledigen muss, wenn man wirklich einmal ausnahmsweise solche braucht, und den einzelnen Kompos eben keine Onchange Ereignisse zuordnen darf - Ja, das scheint mir ganz praktikabel zu sein, die Lösung gefällt mir immer besser :-D . Und wenn irgendwer, der zwei Jahre später am Formular eine Änderung macht, auf diese Einschränkung vergisst, dann könnte man im OnCreate des Forms eine passende Warnmeldung ausgeben, wenn OnChange bei einer Komponente schon zugeordnet ist. Und hoffen, dass er das Programm nach der Änderung zumindest einmal startet, bevor es an die Kunden ausgeliefert wird :) Zitat:
|
AW: Windows Message bei Änderung?
Zitat:
Noch eine Idee: Du könntest das Tag jedes Controls nutzen. In einer zentralen Routine addierst du die Tag's aller Komponenten. Wenn das Ergebnis größer 0 ist, dass speichern. Dann musst du zwar immer noch für alle Controls ein Ereignis haben, was den Tag verändert und dann die zentrale Routine aufruft, aber du brauchst in der Zentralen Routine nix ändern. |
AW: Windows Message bei Änderung?
Zitat:
Zitat:
|
AW: Windows Message bei Änderung?
Die Prüfung mache ich eben für das eine Feld auch in der zentralen Routine:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz