MQL5 v1.51: Knopf-Schrift an die Breite anpassen (messen statt schaetzen)

User: "die Groesse stimmt jetzt aber der text ist viel zu gross fuer die
buttons" - die Beschriftungen waren abgeschnitten (Zoner, Kana, Muste).

Von der Punktgroesse auf die Pixelbreite zu schliessen geht nicht: das
Verhaeltnis haengt an der DPI-Skalierung des Rechners und ist aus dem
Quelltext nicht bekannt. Font 16 sieht auf 100 % passend aus und laeuft auf
150 % ueber. Derselbe Fall wie der Zeilenabstand der Meldungen in v1.44.

BtnFontFit() sucht die groesste Schrift, bei der ALLE 13 Beschriftungen in den
Knopf passen - ueber TextSetFont + TextGetSize, also am echten Renderer.
InpBtnFont ist damit eine Obergrenze, kein Festwert.

- TextSetFont mit NEGATIVER Groesse = 1/10 pt; nur diese Form wird DPI-korrekt
  skaliert.
- Gemessen wird MIT dem "* "-Vorsatz des aktiven Zustands, sonst passte der
  Text nur im ausgeschalteten Zustand.
- Auch die Hoehe wird geprueft, sonst schneidet der Knopf oben/unten ab.
- OBJPROP_FONT wird jetzt ausdruecklich gesetzt (InpBtnSchrift, Arial):
  gemessen wurde mit dieser Schrift, gezeichnet sonst mit MT5s Vorgabe - zwei
  verschiedene Schriften waeren zwei verschiedene Breiten.

Die Schriftgroesse gilt fuer alle Knoepfe und richtet sich nach der laengsten
Beschriftung. Wer groessere Schrift will, macht die Knoepfe breiter
(InpBtnBreite) - das ist der ehrliche Regler.

0 errors 0 warnings, .ex5 frisch, Spiegel bitgleich. Das Schriftbild selbst ist
NICHT verifiziert - dafuer braucht es den Blick auf den Chart.
This commit is contained in:
Axel Hocks
2026-08-22 13:27:47 +02:00
parent 7800b2cf05
commit d0ac160eee
2 changed files with 76 additions and 5 deletions
+30
View File
@@ -9704,3 +9704,33 @@ Praxis nicht.
löschen). Der Code-Guard verhindert nur den sichtbaren Schaden, nicht die
dreifache Last.
`0 errors, 0 warnings`, `.ex5` frisch, Spiegel bitgleich.
### ⚠⚠ „Der Text ist viel zu groß für die Buttons" — Schrift MESSEN statt schätzen (2026-08-22, v1.51)
Die Beschriftungen waren abgeschnitten (`Zoner`, `Kana`, `Muste`, `Meldur`).
⚠⚠ **Von der Punktgröße auf die Pixelbreite zu schließen geht nicht** — das
Verhältnis hängt an der **DPI-Skalierung** des Rechners und ist aus dem
Quelltext nicht bekannt. Font 16 sieht auf 100 % passend aus und läuft auf
150 % über. **Exakt derselbe Fall wie der Zeilenabstand der Meldungen in v1.44**,
wo dieselbe Schätzung zweimal danebenlag, bevor gemessen wurde.
**`BtnFontFit()`** sucht die größte Schrift, bei der **alle 13** Beschriftungen
in den Knopf passen — über `TextSetFont` + `TextGetSize`, also am echten
Renderer. `InpBtnFont` ist damit eine **Obergrenze**, kein Festwert.
`TextSetFont` mit **negativer** Größe = 1/10 pt; nur diese Form wird
DPI-korrekt skaliert.
⚠ Gemessen wird **mit dem `"* "`-Vorsatz** des aktiven Zustands — sonst passte
der Text nur im ausgeschalteten und liefe beim Einschalten über.
⚠ Auch die **Höhe** wird geprüft, sonst schneidet der Knopf oben/unten ab.
**`OBJPROP_FONT` wird jetzt ausdrücklich gesetzt** (`InpBtnSchrift`, Arial):
gemessen wurde mit dieser Schrift, gezeichnet sonst mit MT5s Vorgabe — zwei
verschiedene Schriften wären zwei verschiedene Breiten. Dieselbe
Zwei-Quellen-Falle wie bei der P(break)-Formulierung in v1.35.
⚠ Die Schriftgröße ist für **alle** Knöpfe gleich und richtet sich nach der
LÄNGSTEN Beschriftung (`Meldung`). Wer eine größere Schrift will, macht die
Knöpfe breiter (`InpBtnBreite`) — das ist der ehrliche Regler, nicht die
Schriftgröße.
`0 errors, 0 warnings`, `.ex5` frisch, Spiegel bitgleich.
**Das Schriftbild selbst ist NICHT verifiziert** — dafür braucht es den Blick
auf den Chart. Belegt sind Compile und Verdrahtung, nicht das Ergebnis.