Radiobutton auf aligned TPanel.

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Radiobutton auf aligned TPanel.

Beitrag von siro »

vorab:
Lazarus Version 1.6.4
Windows 8.1 64Bit

Ich habe einen Radiobutton auf ein Panel gesetzt, das Panel mit Align Top ausgerichtet.
Wenn man jetzt das Fenster (rechts) in der Breite ändert, so übermalt die rechte Schattenkante des Panels
den Text vom Radiobutton, bzw. restauriert ihn danch nicht richtig.

Das brauche ich auch garnicht, aber es war mir beim Experimentieren aufgefallen.
Ich habe das Mini Projektchen mal angehangen.

wobei das im Nu ausprobiert ist.

Panel auf Formular.
Align :alTop setzten
Radiobutton aufs Panel und Programm starten
Den Radiobutton am besten etwas unter das Caption "Panel" setzen.

So habe grade gemerkt, dass der Text vom Panel dann auch den Text vom Radiobutton zerstört und nicht
richtig restauriert.

Siro

Radio_auf_Panel.zip
(126.47 KiB) 52-mal heruntergeladen


bei Windows 10 grad gegengetestet, das gleiche Problem
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wp_xyz
Beiträge: 3252
Registriert: Fr 8. Apr 2011, 09:01

Re: Radiobutton auf aligned TPanel.

Beitrag von wp_xyz »

TRadioButton (und TCheckbox) sind "transparent", d.h. sie löschen beim Neuzeichnen den Hintergrund nicht. Daher bleiben bei Aktionen, wie von dir beschrieben, evtl. störende Reste im Hintergrundbereich übrig. Man könnte wahrscheinlich die Komponente so ändern, dass sie den Hintergrund automatisch löscht, nur bewirkt dann jedes Neuzeichnen ein kurzes Flackern. Delphi zeigt übrigens denselben Effekt. Ich erinnere mich an einige Programme, bei denen ich das als sehr lästig empfunden habe.

Du kannst die Reste vermeiden, indem du entweder im OnResize des Panels, auf dem sich der Radiobutton befindet, einfach Panel.Invalidate aufrufst - das zeichnet den Hintergrund neu. (Es reicht aber auch nur ein Radiobutton.Invalidate - was meiner oben geäußerten Theorie, dass der Hintergrund nicht gelöscht wird, widerspricht ...).

Oder du kompilierst das Projekt ohne Theme-Unterstützung ("Projekteinstellungen" > "Anwendung" > "Themen mit Manifest-Datei einschalten" wegklicken)

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Radiobutton auf aligned TPanel.

Beitrag von siro »

Hallo wp_xyz:
Mit RadioButton.invalidate bei OnResize läuft es einwandfrei.
Erstaunlich: während der Designphase taucht das Problem garnicht auf.

Mit Theme Uunterstützung und Manifest sagt mir leider garnichst. Keine Ahnung was das ist.... :shock:
Aber das sollte ich dann in einem separaten Thread fragen, wobei ich da jetzt keinen Bedarf für sehe. :lol:

Ich danke Dir.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 4861
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Radiobutton auf aligned TPanel.

Beitrag von Mathias »

Ich habe die ZIP, beim ersten Post getestet, bei mir läuft dies fehlerfrei.

Verwende Lazarus 1.9 und Linux Mint 64Bit.

So wie es scheint, ist dies ein Windows-Bug.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Radiobutton auf aligned TPanel.

Beitrag von siro »

Oho, vielleicht wirklich ein Windowsproblem
ich habs bisher auf Win 8.1 und 10 probiert, ich mach das morgen nochmal in der Firma mit Winows 7...
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 4861
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Radiobutton auf aligned TPanel.

Beitrag von Mathias »

Mit WinXP und Lazarus 1.6.4 sieht es auch gut aus,. Einzig, der Text "RadioButton1" überdeckt den Text "Panel1".
Aber etwas von Schattenkanten, etc, kann ich nicht feststellen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Radiobutton auf aligned TPanel.

Beitrag von siro »

So, ich habe es auf Windows 7 probiert, da tritt auch das Problem auf:

ich habe mal ein Video gemacht und bei DropBox hochgeladen.
Das Problem ist ja soweit gelöst, mittels invalidate bei Resize, lediglich zum Anschauen, was ich meinte mit der Schattenkante:

https://www.dropbox.com/s/l7bcbhfuq1a4q9u/Panel_Radio.mp4?dl=0

Siro
Zuletzt geändert von siro am Di 9. Mai 2017, 18:09, insgesamt 1-mal geändert.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 4861
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Radiobutton auf aligned TPanel.

Beitrag von Mathias »

Ich habe gerade das Video angeguckt, die Schatten sehen unschön aus. Da sieht man, das Windows wieder einem eine Rückschritt gemacht hat.

So, ich habe es auf Windows 7 probiert, da tritt auch das Problem auf:
Hast du Win7 auch mal mit dem Classic-Thema probiert, welche aussieht wie die von Win95 ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Radiobutton auf aligned TPanel.

Beitrag von siro »

Classic-Thema ?? das sagt mit jetzt nix ? was meinst Du damit.
Du meinst die klassiche Ansich denke ich mal. Ich glaube die habe ich generell.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 4861
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Radiobutton auf aligned TPanel.

Beitrag von Mathias »

Classic-Thema ?? das sagt mit jetzt nix ? was meinst Du damit.
Du meinst die klassiche Ansich denke ich mal. Ich glaube die habe ich generell.

Die graue Oberfläche, wie im folgenden Link.

http://www.guidebookgallery.org/pics/gu ... /win95.png
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Radiobutton auf aligned TPanel.

Beitrag von siro »

Achso, nee die hab ich auch nicht mehr.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 4861
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Radiobutton auf aligned TPanel.

Beitrag von Mathias »

siro hat geschrieben:Achso, nee die hab ich auch nicht mehr.

Die ist bei Win7 dabei.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Radiobutton auf aligned TPanel.

Beitrag von siro »

mal gucken ob ich ds umgestellt bekomme zum probieren morgen...
Dann einen schönen Abend
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wp_xyz
Beiträge: 3252
Registriert: Fr 8. Apr 2011, 09:01

Re: Radiobutton auf aligned TPanel.

Beitrag von wp_xyz »

siro hat geschrieben:mal gucken ob ich ds umgestellt bekomme zum probieren morgen...

Du musst nur, wie ich gaaaaanz oben schon geschrieben habe, in die Projekteinstellungen (Menü "Projekt") gehen, und das Häkchen bei "Für Windows" "Themen mit Manifestdatei verwenden" wegmachen. Dann neu kompilieren. Damit hat dein Programm den Stil von Windows95 und der Fehler ist weg. Aber ob du so einfach 20 Jahre in den Wind blasen willst?

siro
Beiträge: 386
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Re: Radiobutton auf aligned TPanel.

Beitrag von siro »

Achso, jetzt habe ich den "Haken" gefunden... :P (den Windowsproblembehebenhaken) :lol:

und siehe da, dann ist der Fehler auch weg, dann läuft es einwandfrei. :)

Supi, danke euch nochmals.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten