Einzelnen Beitrag anzeigen

jziersch

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

AW: Mehrfachen Schleifenaufruf verhindern

  Alt 8. Feb 2018, 14:43
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
  Mit Zitat antworten Zitat