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
Benutzerbild von wicht
wicht

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

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

  Alt 31. Mai 2011, 17: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
 
#2

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

  Alt 31. Mai 2011, 17: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 17:32 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

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

  Alt 31. Mai 2011, 17: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
44.336 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 31. Mai 2011, 19: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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
DrUArn

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

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

  Alt 1. Jun 2011, 11: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
mkinzler
(Moderator)

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

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

  Alt 1. Jun 2011, 11:11
Zitat:
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!
Dann wird aber auch nur ein Message an das Control gesendet.
Markus Kinzler
  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
 
#7

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

  Alt 1. Jun 2011, 11:31
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
Darum packt man sowas rechenaufwändiges in einen Thread und schon ist die Anzeige schick
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 himitsu
himitsu

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

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

  Alt 1. Jun 2011, 12:19
@DrUArn: Hab mal nachgesehn und teilweise hast du Recht.

@mkinzler: Stimmt ebenfalls nur halb.

@Sir Rufo: Recht hast du.


Wenn das Label nicht transparent ist, dann zeichnet es sich komplett selber und beim Repaint zeichenet es sich sofort.

Idt das Label dageben transparent, schickt es dem Parent eine Nachricht, daß dieses sich neu zeichnen soll und wenn das geschieht, dann malt sich das Label dann wieder über alles drüber.
Denn es kennt die Hintergrundfarbe nicht, bzw. es weiß nicht vielleicht ob ein Bild dahinterliegt und kann demnach seinen Hintergrund nicht zeichnen, da es nicht sein Hintergrund ist.

Label ist ein Spezialfall, denn es ist kein WinControl, sondern eine delphieigene Komponente, ohne eigener Zeichenfläche ... es zeichnet sich immer nur auf dem Canvas des Parents.
Das echte WinControl, welches einem Label entspricht, wäre das TStaticText, welches dem Label (STATIC) von Windows entspricht.
Ein Therapeut entspricht 1024 Gigapeut.
  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 03:19 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