Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Aktualisierung eines Fensters mit Delphi

Dragon (Anonym) / 3 Antworten / Baumansicht Nickles

Hallo Leute,

ich schreibe gerade mit Delphi 5.0 eine Software zur Ansteuerung einer Meßanlage, die über die serielle Schnittstelle mit dem Rechner verbunden ist.
Die Maschine sendet in gewissen Abständen Daten, die ich im Hauptfenster in einem String Grid darstellen möchte. Dazu muß ich die Schittstelle in einer Schleife ständig nach neuen Daten abfragen. Dies blockiert jedoch die Aktualisierung im Hauptformular. Deshalb sind die neuen Werte erst nach beendigung der Messung sichtbar...
Wie kann ich Delphi dazu veranlassen kurz ne Pause zu machen, damit der Fensterinhalt aktualisiert wird?

Vielen Dank im Voraus

Dragon

bei Antwort benachrichtigen
aaf Dragon (Anonym) „Aktualisierung eines Fensters mit Delphi“
Optionen

hi,
du fragst die schnittstelle mit nem timer ab, oder ? du kannst doch im selben timer den string grid aktualisieren....
oder du erstellst noch eine prozedur die für die aktualiesierung der form zuständig ist, und rufst sie nach jeder
messung auf...

pause machen kannst du indem du folgende prozedur in dein projekt integrierst, und sie dann mit delay(pauseinms)
aufrufst...

procedure TForm1.Delay(ms:integer);
var
FirstTCount:longint;
begin
FirstTCount:=GetTickCount;
repeat
Application.ProcessMessages; { Dieser Befehl gibt Systemressourcen für andere Programme frei, du kannst ihn
natürlich auch außerhalb dieser schleife benutzen. }
until ((GetTickCount-FirstTCount) >= Longint(ms));
end;

gruß aaf

bei Antwort benachrichtigen
Dragon (Anonym) aaf „hi,du fragst die schnittstelle mit nem timer ab, oder ? du kannst doch im selben...“
Optionen

Vielen Dank fuer den Tipp aaf.

Ich werde es gleich mal ausprobieren.

Gruß Dragon

bei Antwort benachrichtigen
(Anonym) Dragon (Anonym) „Aktualisierung eines Fensters mit Delphi“
Optionen

ich würde die abfrageschleife nicht im hauptfenster sondern in einem Thread durchlaufen lassen.

Datei --> Neu --> Thread

Dann erzeugst du dein Formular, dort deinen thread, der die messstation ständig abfragt (in der Execute-Methode).
Das Formular bleibt so immer bedienbar.
Bekommt der Thread Daten, dann ruft er einfach eine Procedure auf, die den Inhalt des Formulars aktualisiert. Diese
Prozedur muss mittels synchronize aufgerufen werden.

tschau ka

bei Antwort benachrichtigen