TLabel und die XP 'Luna' Shell

Hallo Experten,

es ist schon erstaunlich wie man unter Windows an Trivialitäten die Stunden verplempern kann. Das Problem: ich habe ein Form, darauf ein Label1 (TLabel). Ich gebrauche es innerhalb einer Schleife als Ausgabe für den Schleifenzähler i:


if (i mod 100) = 0 then Label1.text := intToStr(i);
Application.ProcessMessages;

Der Sinn ist denke ich klar zu erkennen: alle hundert Durchläufe gibt das Label den Zähler mal wieder aus, damit der Benutzer sieht, dass etwas vorwärts geht. Das klappt ausgezeichnet.

Das Problem kommt, wenn ich auf XP statt der Windows „klassisch“ Shell die XP „Luna“ Shell einstelle. Dann werden die Zeichen des Labeltextes nicht mehr bei jedem Durchlauf neu auf den Hintergrund geschrieben, sondern übereinander/ineinander. Wie wenn man durchsichtige Folien mit den Ziffern aufeinander legen würde. Im Endeffekt führt das dazu, dass aus den übereinandergeschriebenen Zahlen schwarze Vierecke werden. Das schaut zwar lustig aus, ist aber auf Dauer nicht sehr informativ.

Hat jemand außer mir das Problem schon bemerkt (es könnt ja auch eine Fehleinstellung auf meiner XP Maschine sein?), und wenn ja, was kann dagegen getan werden?

Thx,

AL.

Hallo,

wenn ja, was kann dagegen getan werden?

Vielleicht hilft es, nach der aktualisierung des Textes mal Invalidate, Repaint, InvalidateRect o.ä. aufzurufen, bei InvalidateRect womöglich besser mit dem DC des den Label enthaltenden Steuerelements.

LG
Jochen

Hallo,

wenn ja, was kann dagegen getan werden?

Vielleicht hilft es, nach der aktualisierung des Textes mal
Invalidate, Repaint, InvalidateRect o.ä. aufzurufen, bei
InvalidateRect womöglich besser mit dem DC des den Label
enthaltenden Steuerelements.

Danke für den Tipp. Invalidate, Repaint usw. haben alle keinerlei Wirkuzng gehabt. InvaludateRect hat funktioniert, ich bin aber am BEsorgen eiens Handles für das Label hängen geblieben.

WÄhrend des Probierens habe ich aber eine einfachere Lösung gefunden: es genügt, die Eiganschaft „Transparent“ des Labels auf „true“ (!) zu setzen. Verstehen muss man das wahrscheinlich nicht (kopfschüttel), eigentlich sollte das das genaue Gegenteil von dem tun was es tut. Aber wenn es funktioniert, und zwar unter XP klassisch, XP Luna und Vista dann kann es nicht ganz schlecht sein :smile:

Danke für Deine Hilfe,

AL.