![]() |
Checkbox verändert im XP-Design die Position
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich passe gerade ein Projekt an das Windows-XP-Design an, soll heißen ich habe das XP-Manifest eingebunden und schaue mir alle Masken an und korrigiere eventuelle Fehldarstellungen. Nun ist mir aufgefallen das sich die Position der Checkbox im XP-Design um 2 Pixel nach links verschiebt. Das ist in sofern störend da ich Labels und Edits sowie Checkboxen untereinander habe und im klassischen Design mußte man die Checkbox 2 Pixel weiter nach links setzen damit die Buchstaben mit den darüber und darunter liegenden Labels in einer Flucht sind. (Die CheckBox hat Alignment=taLeftJustify) Das man das machen mußte erachte ich übrigens als Fehler der Vorgänger-Windowsversionen oder der Umsetzung von Delphi. Nichtsdestotrotz hätte ich gerne im klassischen als auch im XP-Design eine korrekte Darstellung. Ein Einfall von mir war die Caption der Checkbox wegzunehmen und stattdessen ein Label ordnungsgemäß zu positionieren, nur sehe ich dann nicht mehr das die Checkbox den Focus bekommt. Zum anderen habe ich die TJvCheckbox probiert aber die verhält sich leider genau wie Originale. Zuletzt fällt mir nur noch ein festzustellen welches Design eingestellt ist und dann alle Checkboxen der Form zu durchlaufen und die Position entsprechend zu korrigieren. Wie stellt man das XP-Design eingeschaltet ist fest bzw. welchen anderen Weg gibt es ? Grüße Frank |
Re: Checkbox verändert im XP-Design die Position
Vielleicht wäre es am einfachsten, eine checkbox (ohne text) und ein label zu verwenden?
|
Re: Checkbox verändert im XP-Design die Position
Ein Label kann man nicht über die Checkbox legen da die CheckBox AlwaysStayOnTop ist.
Selbst wenn es gehen würde wäre wieder kein Focus zu erkennen. |
Re: Checkbox verändert im XP-Design die Position
Hi!
Ich habe gerade mal folgendes
Delphi-Quellcode:
ausprobiert und es scheint zu funktionieren.
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; begin if not ThemeServices.ThemesEnabled then for i := 0 to Pred(ControlCount) do if Controls[i] is TCheckBox then Controls[i].Left := Controls[i].Left - 2; end; Uli. |
Re: Checkbox verändert im XP-Design die Position
Danke Uli,
damit geht es:
Delphi-Quellcode:
Im Gegensatz zu Deinem Code habe ich statt Controls Components benutzt um die ganze Form abzugrasen.
if ThemeServices.ThemesEnabled then
begin for i := 0 to Pred(ComponentCount) do if Components[i] is TCheckBox then begin TCheckBox(Components[i]).Left := TCheckBox(Components[i]).Left + 2; TCheckBox(Components[i]).Width := TCheckBox(Components[i]).Width - 2; end; end; Außerdem habe ich noch die Breite korrigiert. Und Unit Themes einbinden nicht vergessen. Grüße Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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 by Thomas Breitkreuz