AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular aktualisieren

Ein Thema von wallwriht · begonnen am 23. Mär 2010 · letzter Beitrag vom 23. Mär 2010
Antwort Antwort
wallwriht

Registriert seit: 23. Mär 2010
30 Beiträge
 
#1

Formular aktualisieren

  Alt 23. Mär 2010, 15:34
Hi Leute ich habe folgendes Problem:


Habe dieses Programm geschrieben

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;


begin
for i := 21 to 100 do
begin

Image1.Left:= i;
sleep(20)
end;
end;


jetzt will ich aber das das bild für den Nutzer erkennbar nach und nach verschoben wird.
Bei der Anzeige passiert dies aber auf einmal.
Wie kann ich das lösen?
Ich erinnere mich das e s einen Befehl gab mit dem man das Formular aktualisieren konnte aber welcher?

MfG

Wallwriht
  Mit Zitat antworten Zitat
AbesCid

Registriert seit: 23. Mai 2009
21 Beiträge
 
Delphi 7 Personal
 
#2

Re: Formular aktualisieren

  Alt 23. Mär 2010, 15:37
Hallo!

Das ist relativ einfach!

Application.ProcessMessages; löst dein Problem.

Soweit ich weiß müsstest du es dann so einbinden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 21 to 100 do
begin
Image1.Left:= i;
sleep(20)
Application.ProcessMessages;
end;
end;
Probiers mal aus und wenns nicht geht, dann melde dich einfach noch einmal!

abescid
  Mit Zitat antworten Zitat
wallwriht

Registriert seit: 23. Mär 2010
30 Beiträge
 
#3

Re: Formular aktualisieren

  Alt 23. Mär 2010, 15:48
der befehl funktioniert allerdings flackert es jetzt.

kann man da was dagegen tun?
  Mit Zitat antworten Zitat
AbesCid

Registriert seit: 23. Mai 2009
21 Beiträge
 
Delphi 7 Personal
 
#4

Re: Formular aktualisieren

  Alt 23. Mär 2010, 15:54
Was flackert?? Das Bild?
Du musst auch bedenken, dass sleep(20) eine sehr kurze Zeit ist! Auch hier wird die Zeit in Millisekunden angegeben!
Probiers mal mit einer höheren Zahl und schreib mal das hier:

Delphi-Quellcode:
begin
Image1.Left:= i;
Application.ProcessMessages;
sleep(20);
end;
Also nur die zwei Befehle verdreht.
Du musst kreativ sein und alle Anweisungen mal verändern und gucken, wie es dann aussieht
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Formular aktualisieren

  Alt 23. Mär 2010, 16:01
Application.ProcessMessages aktualisiert nicht das Formular (wenigstens nicht direkt)

Innherhalb des Formulars kann man mit Self.Repaint ein Neuzeichnen erzwingen.
Image1.Repaint zeichnet nur die Bildkomponente neu.

Application.ProcessMessages veranlasst die Anwendung alle anstehenden Nachrichten abzuarbeiten
u.a. wird dabei das Formual neu gezeichnet. Es passiert aber auch noch eine ganze Menge mehr.
(Übersetzen von englisch-deutsch der Begriffe ist hilfreich)

Es kommt immer darauf an, was man erreichen möchte.

Um einiges besser sollte die Bewegung mit einem Timer laufen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Formular aktualisieren

  Alt 23. Mär 2010, 16:09
Wenn Du für das Formular im Objektinspektor noch "DoubleBuffered" True einstellst, flackert das Bild auch nicht mehr.

Ich weiß allerdings nicht mehr, ab welcher Delphi-Version diese Eigenschaft erst verfügbar ist.


Steffen
Steffen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz