Hallo
Zitat:
Diese Textänderung beim Tippen wird (leider) nur durch Application.Processmessages sichtbar (oder wenn die Schleife abgearbeitet ist), es gibt in den WPTools nichts was die Anzeige neu erzwingt
Doch natürlich. Normalerweise passiert bei WPTools der Bildschirmaufbau erst in Paint, also in der nächsten Idle Phase, man kann aber sowohl das Text formatieren als auch die Bildschirmausgabe erzwingen. Dafür einfach
Paint direkt aufrufen.
Kleiner Test:
Code:
for i := 1 to 100 do
begin
WPRichText1.ActiveParagraph.Append(IntToStr(i));
WPRichText1.ReformatAll;
WPRichText1.Paint;
Sleep(50);
end;
Um das besagte Problem zu lösen würde ich den Event
ChangeSelection und nicht OnChange, da erstere asynchron aufgerufen wird, also nicht unmittelbar nach der Eingabe. Dadurch wird dieser Event das Programm nicht so stark blockieren.
Anschliessend kann man in dem Event den Text analysieren und die Werte in der Tabelle auslesen.
Ich nehme an die Werte in der Tabelle werden anhand der ID der Zelle lokalisiert.
Anmerkung: WPTools 8 Bundle enthält Komponenten names "
TWPTableProducer" bzw "
TWPTableProducerDB" welche eine Tabelle im Text anhand der Daten in einem TDataset erzeugt. Auch hier wird -optional- das Dataset upgedated bei Änderungen im Text. Für kleinere Datenbestände kann man damit eine Tabelle im Text generieren, die sich sofort drucken lässt, oder auch bereichsweise kopieren für die Weiterverarbeitung, z.b. in MS Word.
Viel Erfolg
Julian
WPCubed GmbH