Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Label Caption mehrmals innerhalb einer Procedure ändern


Danny87 - Do 22.09.16 14:24
Titel: Label Caption mehrmals innerhalb einer Procedure ändern
Hey Leute,

wenn ich in einer Procedure mehrmals die Caption eines Labels ändern möchte, werden die Änderungen erst nach Abschluss der Procedure angezeigt.
Ich weiß, dass man irgendwie dafür sorgen konnte, dass Änderungen sofort angezeigt werden, aber ich weiß nicht mehr wie (hab schon seit 'ner halben Ewigkeit kein Delphi mehr programmiert) und weiß auch nicht wirklich wonach ich da Googlen soll :oops:.

Könnt ihr mir da vielleicht auf die Sprünge helfen, bitte?

Beispiel (Label = lblLots):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TfrmMain.calcLots();
var sHTML : string;
    objRegEx : TRegEx;
    objMatch : TMatch;
begin
lblLots.Caption := '...'// Das hier sofort angezeigt werden.
sHTML := GetPage('https://www.google.de/search?q='+edRisk.Text+'.'+edRiskDecimal.Text+'%20'+edAccountCurrency.Text+'%20to%20'+edQuotedCurrency.Text);

objRegEx := TRegEx.Create('', []);
objMatch := objRegEx.Match(sHtml, '\>(.*)\<');

if objMatch.Success then
  begin
    lblLots.Caption := 'Ergebnis und so';
  end
else
  lblLots.Caption := 'ERROR';
end;


Danke schonmal :)


Nersgatt - Do 22.09.16 15:41

Das liegt daran, dass der Mainthread keine Zeit hat, das Label neu zu zeichnen (er ist ja mit Deiner Procedure beschäftigt). Ein Application.ProcessMessages nach dem Ändern der Caption würde hier Abhilfe schaffen.


Danny87 - Do 22.09.16 16:09

Ah ja, genau das war's :) Ich wusste, es war irgendwas mit "proc" :D Vielen Dank! :)