Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Checkbox verändert im XP-Design die Position (https://www.delphipraxis.net/76641-checkbox-veraendert-im-xp-design-die-position.html)

Sourcemaker 7. Sep 2006 13:41


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

Namenloser 7. Sep 2006 14:08

Re: Checkbox verändert im XP-Design die Position
 
Vielleicht wäre es am einfachsten, eine checkbox (ohne text) und ein label zu verwenden?

Sourcemaker 7. Sep 2006 14:21

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.

uligerhardt 7. Sep 2006 15:17

Re: Checkbox verändert im XP-Design die Position
 
Hi!

Ich habe gerade mal folgendes
Delphi-Quellcode:
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;
ausprobiert und es scheint zu funktionieren.

Uli.

Sourcemaker 7. Sep 2006 18:01

Re: Checkbox verändert im XP-Design die Position
 
Danke Uli,

damit geht es:
Delphi-Quellcode:
   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;
Im Gegensatz zu Deinem Code habe ich statt Controls Components benutzt um die ganze Form abzugrasen.
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 03:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf