AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCheckBox, Caption leer - 200%

Ein Thema von hoika · begonnen am 20. Apr 2017 · letzter Beitrag vom 20. Apr 2017
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

TCheckBox, Caption leer - 200%

  Alt 20. Apr 2017, 20:38
Hallo,
ich habe ein CheckBox ohne Caption, etwas weiter daneben ein Label.
Bei 200% Skalierung überschreibt der nicht vorhandene Text (Caption) der CheckBox das Label.

Bei 150% geht es gerade noch so.
Es siht so aus, als ob die CheckBox trotzdem eine minimale Caption zeichnet,
die mit steigernder Skalierung immer größer wird.

Wie kann ich das verhindern?
Die CheckBox, also das Symbol selbst soll natürlich größer werden,
aber was soll das mit der Caption ?

PS: Der Abstand ist zwischen CheckBox und Label ist schon extra etwas größer.
Heiko
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: TCheckBox, Caption leer - 200%

  Alt 20. Apr 2017, 22:20
Wenn Du die beiden auf ein randloses TPanel legst und für die TCheckBox Align auf alLeft setzt und für das Label auf alClient, dürfte die "Überlagerung" weg sein.

Die Frage die sich dann stellt ist nur: "Wie berechnet man die richtige Breite für das Panel?"
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: TCheckBox, Caption leer - 200%

  Alt 20. Apr 2017, 22:25
Die Frage die sich dann stellt ist nur: "Wie berechnet man die richtige Breite für das Panel?"
Was würde denn das auslesen der Größe einer CheckBox unter 200% Skalierung ausgeben? Das skalierte Maß oder das originale, kleine Maß?
Wenn das skalierte, dann würde ich einfach die Größe der CheckBox auslesen.

Weiß leider nicht mehr wie es funktioniert sonst würde ich es hier schreiben.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: TCheckBox, Caption leer - 200%

  Alt 20. Apr 2017, 22:26
Prinzipiell ja, aber bei welchen Ereignissen?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: TCheckBox, Caption leer - 200%

  Alt 20. Apr 2017, 22:52
OnResize, wenn man den Font setzt?
und dann Client....?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: TCheckBox, Caption leer - 200%

  Alt 20. Apr 2017, 23:21
Wäre möglich, was ich nur absolut nicht weiß ist, wie verhält sich das, wenn zur Laufzeit die Systemeinstellungen verändert werden.

Bei meinen Programmen ist es mir bisher nie gelungen dann noch ein (halbwegs) vernünftiges Aussehen hinzubekommen.

Nach 'nem Neustart der Applikation passt es dann meist wieder.

Ansonsten hab' ich mir angewöhnt alles auf (randlose) Panels zu legen. Die haben AutoSize = True. Labels haben ebenfalls AutoSize = True.

ParentFont ist ebenfalls True.

Der Anwender kann über's Menü die Schriftgröße der Application selbst verändern. Der Rest passt sich dann eigentlich automatisch an.

Ggfls. müssen in der "Schriftveränderungsroutine" noch einzelnen Komponenten, bei denen Parentfont nicht sinnvoll einsetzbar ist (z. B. Editorkomponenten, Memos ... mit Font Courier New ...), angepasst werden.

Für Buttons ... nutze ich so 'ne Spielerei:
Delphi-Quellcode:
Type
  tDimension = record
    Height : Integer;
    Width : Integer;
  end;

function GetDimension(s : String; f : TFont) : tDimension;
var
          lb : TLabel;
begin
  lb := TLabel.Create(Nil);
  lb.Font := f;
  lb.AutoSize := True;
  lb.Caption := s;
  Result.Height := lb.Height;
  Result.Width := lb.Width;
  lb.Free;
end;

// Button.Align ist entweder alLeft oder alRight.
procedure TFormXY.SetButton(btn : TSpeedButton; pn : TPanel);
var
          d : TDimension;
begin
  d := GetDimension(btn.Caption,pn.Font);
  btn.Width := d.Width + 16;
  pn.Height := d.Height + (pn.BorderWidth * 2) + 8;
  // Hat man mehrere "Sachen" auf dem Panel, muss man
  // die hier ebenfalls anpassen ... und die Parameterlist ergänzen ...
end;

procedure TFormXY.SetButtons(pn : TPanel);
var
          d : TDimension;
          i : Integer;
begin
  for i := 0 to pn.ComponentCount - 1 do begin
    if pn.Components[i] is TSpeedButton then begin
      d := GetDimension(TSpeedButton(pn.Components[i]).Caption,pn.Font);
      TSpeedButton(pn.Components[i]).Caption).Width := d.Width + 16;
      pn.Height := d.Height + (pn.BorderWidth * 2) + 8;
    end;
  end;
end;
Passt --- meistens
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TCheckBox, Caption leer - 200%

  Alt 20. Apr 2017, 23:43
Lösung: Du nimmst statt des Labels die Caption der Checkbox zum Anzeigen des Textes.

Oder TStaticText (das echte Label von Windows) statt des TLabel (dem Pseudocontrol der VCL).
TLabel, TImage und andere sind keine eigenständigen Controls, malen sich nur auf den Canvas ihres Parents und alle anderen Komponenten liegen somit immer davor.
$2B or not $2B

Geändert von himitsu (20. Apr 2017 um 23:47 Uhr)
  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 22:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz