![]() |
Labels überschreiben sich
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich lasse zur Laufzeit den Text meines Labels ändern. Dazu verwende ich folgenden Code:
Delphi-Quellcode:
Den selben Code mit anderen Text rufe ich noch weitere 4 mal auf. Leider bleibt am Ende des Labels immer ein Stück Text vom vorherigen Text übrig (siehe Anhang). Anstatt repaint habe ich auch schon refresh probiert. Bei Application.processmessages wechselt der Text nicht.
lblInitalize.caption:='Fertig!';
lblInitalize.Repaint; Muss ich das irgendwie anders aufrufen? Muss ich noch irgendwas machen? |
Re: Labels überschreiben sich
Verwende mal TLabel.Update, das sollte klappen
|
Re: Labels überschreiben sich
Wahrscheinlich hängt das damit zusammen das ich meinen Code im onPaint des Forms aufrufe. Leider weiß ich nicht wo ich es sonst hinpacken soll. Im onCreate und onShow gehts nicht.
Hier der Code den ich aufrufen möchte:
Delphi-Quellcode:
Wo kann ich das noch hinpacken. Ist für einen Splash-Screen ;-)
var
config: Tinifile; begin lblInitalize.Caption:='Überprüfe Einstellungenverzeichnis...'; lblInitalize.Update; sleep(1000); //checks the config file if FileExists(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\config.ini')=false then //create config directory and copy default config file if it does not exist begin ForceDirectories(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\'); CopyFile(pchar(extractfilepath(application.ExeName)+'config.bak'),pchar(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\config.ini'), true); end; pgbInitalize.Position:=pgbInitalize.Position+20; lblInitalize.Caption:='Lade Einstellungen...'; lblInitalize.Update; sleep(1000); //load configuration config:=Tinifile.Create(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\config.ini'); frmManager.language:=config.ReadString('Application','Language','English'); pgbInitalize.Position:=pgbInitalize.Position+20; lblInitalize.Caption:='Lade Sprache...'; lblInitalize.Update; sleep(1000); //load language if frmManager.LoadLanguage(frmManager.language)=false then begin if frmManager.language<>'English' then begin //if it does failure, load english language if frmManager.LoadLanguage('English')=false then begin //if english language cannot be loaded display a message and exit the program if MessageDLG('Die Sprachdatei konnte nicht geladen werden!'+#13#10+'Klicken Sie auf OK um die Anwendung zu beenden!',mtError, [mbOK],0)=mrOK then begin config.Free; Application.Terminate; end end end else begin //if english language cannot be loaded display a message and exit the program if MessageDLG('Die Sprachdatei konnte nicht geladen werden!'+#13#10+'Klicken Sie auf OK um die Anwendung zu beenden!',mtError, [mbOK],0)=mrOK then begin config.Free; Application.Terminate; end end end else begin pgbInitalize.Position:=pgbInitalize.Position+30; lblInitalize.caption:='Abschließende Schritte...'; lblInitalize.Update; sleep(1000); end; //free memory config.Free; pgbInitalize.Position:=pgbInitalize.Position+10; lblInitalize.caption:='Fertig!'; lblInitalize.Update; sleep(1000); frmManager.Show; frmSplash.Close; |
Re: Labels überschreiben sich
Der Fehler ist denke ich mal, dass der Textaufruf zu oft aufgerufen wird.
Die Methode von Matze könnte dir helfen: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz