Einzelnen Beitrag anzeigen

jziersch

Registriert seit: 9. Okt 2003
Ort: München
251 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Mehrfachen Schleifenaufruf verhindern

  Alt 9. Feb 2018, 08:24
Hallo,

In meinem Test kommen bei dem Beispiel die Zeichen der Reihe nach. Evtl. gibt es da noch code in OnChange welcher daran was ändert.

Ich habe auch Paint in OnChange probiert, das geht auch.

Im Unterschied zu SendMessage, schreibt PostMessage die meldung in die Message loop und kehrt dann zurück. Ob die Meldung verarbeitet wird und wann, bekommt der Aufrufer nicht mit.

SendMessage ruft den MessageHandler sofort auf und kehrt zurück, wenn fertig.

>> Ich denke hier wird eine TList mit den zu sendenden Messages und ein Thread der sich um das Versenden kümmert, die einzige saubere Lösung sein!<<

Das hört sich kompliziert an. Letztendlich geht es doch darum die Tabelle nach einer Änderung auszulesen, die geänderten Werte in eine Datenbank zu schreiben und Summen zu bilden. Muss man dies denn für jeden Wert der sich ändert machen?

Ich meine es reicht dies zeitnah nach der Änderung zu machen, oder wenn der Anweder das Feld verlässt, CR drückt o.ä. Dann allerdings muss man alle Werte auslesen und die geänderten zurückschreiben. Nur die aktuelle Zelle zu überwachen erscheint mir keine gute Idee.

Wenn man nicht Werte in die Datenbank schreiben will, die nicht geändert wurden, kann man eine Liste mit Zellen (IDs) anlegen in OnChange welche bearbeitet werden. Immer wenn die Update Prozedur an der Reihe ist, kann sie diese Liste durchgehen und abarbeiten. Aus einem anderen Thread wird das nicht gehen, da von diesem kein Zugriff in WPTools möglich ist.

WPTools ist zwar threadsave, aber nur wenn es nicht für den Eingabe Modus erstellt wurde. Siehe Beispiele zur threadsave PDF erstellung.

Ich bin jetzt auf jeden Fall für ein paar Tage schlecht zu erreichen, der vorliegende Quellcode sollte aber einige Hilfestellungen bieten.

Grüsse,
Julian
WPCubed GmbH
  Mit Zitat antworten Zitat