AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language eigenartiges Verhalten von tlabel u. a. in for - to Schleifen
Thema durchsuchen
Ansicht
Themen-Optionen

eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

Offene Frage von "himitsu"
Ein Thema von DrUArn · begonnen am 31. Mai 2011 · letzter Beitrag vom 1. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2      
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#1

eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:02
Delphi-Version: XE
Hallo,

habe bisher immer 'mal beim Testen tlabels u.a. genutzt, um
Variablenänderungenzu beobachten (bisher in Turbodelphi), z.B.


Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  I: Integer;
begin
for I := 0 to 10 do
 begin
    caption:=inttostr(i);
    Button2.Caption:=inttostr(i);
    edit1.text:=inttostr(i);
    label1.Caption:=inttostr(i);
    RichEdit1.Lines.Add(inttostr(i));
    sleep(250);
 end;
end;
Jetzt beobachte ich, daß tform.caption und Button2.Caption die i's alle darstellen, bei den anderen wird nur i= 10 dargestellt - also das Ende der Schleife. Zwischendurch erfolgt keine Neudarstellung.
Manchmal -insbesonder wenn ich tbutton benutze, kommt kurzfritig - "Das programm antwortet nicht" - mag aber an sleep liegen!

Weiß jemand, woran das liegt - irgendeine Delphi- oder Windows-Optimierung (Windows 7 64 bit) ? Muß man eine Neudarstellung erzwingen?

Mit gespannten Grüßen
Uwe

Geändert von DrUArn (31. Mai 2011 um 16:05 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:04
Erzwinge ein Neuzeichnen bzw. gib dem Formular die Chance

Application.ProcessMessages;
Markus Kinzler
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:07
in die Schleife vor Sleep:

Application.ProcessMessages; // Edit: Moderator war schneller
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:13
Das ist es,
mir war dieser Befehl entfallen!

danke , Bjoerk und Markus Kinzler!

Warum geht das ohne Application.ProcessMessages bei einigen "Darstellern", bei anderen nicht?

Es ist mir auch schon passiert aus einem trichedit.onchange - jeder tastenclick solte im Tlabel etwas darstellen - da wurde nur das erste Klicken bearbeitet und dann kein weiteres!

MfG
Uwe
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:14
Es wird keine Rechenzeit an den "zeichenen" Prozess abgegeben
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#6

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:16
Zitat:
Warum geht das ohne Application.ProcessMessages bei einigen "Darstellern", bei anderen nicht?
Bei welchen Komponenten funktioniert das denn? Weißt du ungefähr, wie das Messaging-System funktioniert/was ProcessMessages() tut? Ich konnte noch nie beobachten, dass das ohne klappt (in einer Situation wie von dir beschrieben).
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:21
Danke Markus,
verstehe ich - dann muß den Knecht eben zwingen!

Klappt aber auch nicht immer - benutzt man in einem etwas umfangreicheren Programm obiges Konstrukt, erweist sich tlabel als am stursten - will sich nicht neu darstellen, auch wenn man sofort nach der string-Zuordnung zu caption ein application.processmessages auslöst!

Hier beim Testen funktionierte es (siehe mein Delphi-Beispiel) in tform.caption und tbutton.caption (da nicht immer) ohne application.processmessages! - Wie dieses Messaging funktioniert, weiß ich auch nicht!

Danke für's mitdenken
Uwe

Geändert von DrUArn (31. Mai 2011 um 16:32 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 16:30
Das Fenter ( Ein Control ist unter Windows ein fenster) bekommt eine Nachricht gesendet, dass es sich neu Zeichnen soll.
Application.ProcessMessages; sogt dafür, dass alle untergeordneten "Fenster" ihre "Messages" abarbeiten.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#9

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 31. Mai 2011, 18:00
Einige Komponenten zeichnen sich bei jeder Kleinigkeit neu, was schonmal ganz schön Zeit fressen kann, wenn man Mehreres ändert.

TLabel sendet sich nur eine Nachricht "zeichne dich mal neu", welcher immer nur einmal in der Nachrichtenschlange landet.
Somit wird das Label quasi nur neu gezeichnet, wenn sich Form das nächtes Mal reagiert und alle bisherigen Nachrichten verarbeitet hat.
PS: Das TLabel kennt noch die Methoden Refresh und Repaint, um sich sofort neu zu zeichnen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: eigenartiges Verhalten von tlabel u. a. in for - to Schleifen

  Alt 1. Jun 2011, 10:08
Einige Komponenten zeichnen sich bei jeder Kleinigkeit neu, was schonmal ganz schön Zeit fressen kann, wenn man Mehreres ändert.
PS: Das TLabel kennt noch die Methoden Refresh und Repaint, um sich sofort neu zu zeichnen.

Hallo, in scheinbar rechenaufwändigen Programmen läßt sich als einziges tlabel von den genannten nicht einmal durch direktes Aufrufen von refresh oder repaint zu einer Neudarstellung vor Ende der Schleife zwingen!

Gruß Uwe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:31 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