![]() |
Setzen von Font.Style funzt nicht wirklich
Hallo Wissende!
Ich habe ein Label und 3 Checkboxen zum de-aktivieren von Fett,Unterstrichen und Kursiv. Folgendes mache ich, wenn zum Beispiel die Checkbox für Fett geklickt wird.
Delphi-Quellcode:
Folgendes passiert, wenn ich auf die Checkbox für Unterstreichung klicke:
if chk_bold.Checked then
((form2.FormDesigner1.Control as TLabel).Font.Style:= (form2.FormDesigner1.Control as TLabel).Font.Style + [fsBold]) else ((form2.FormDesigner1.Control as TLabel).Font.Style:= (form2.FormDesigner1.Control as TLabel).Font.Style - [fsBold]);
Delphi-Quellcode:
Leider muss hier irgendwo ein fehler sein, denn die Zuweisung funktioniert nicht wirklich bzw nicht immer und ich habe keine Idee warum das so ist. Ich weiss nun auch nicht, ob dass mit dem + und - bei dem Zuweisen der Styles so korrekt ist.
if chk_bold.Checked then
((form2.FormDesigner1.Control as TLabel).Font.Style:= (form2.FormDesigner1.Control as TLabel).Font.Style + [fsUnderline]) else ((form2.FormDesigner1.Control as TLabel).Font.Style:= (form2.FormDesigner1.Control as TLabel).Font.Style - [fsUnderline]); Natürlich soll es so sein, dass die Schriftart im Label auch Fett und kursiv zusammen möglich sein muss und alle möglichen Kombinationen möglich sein müssen. Ich will aber auch nicht unbedingt den Weg über den FontDialog gehen, da mir das zu umständlich ist. Wer hat einen Tipp für mich? |
Re: Setzen von Font.Style funzt nicht wirklich
edit: vergiss es, hast du ja schon. sorry für den fehler.
was ist denn "form2.FormDesigner1.Control"? |
Re: Setzen von Font.Style funzt nicht wirklich
Zitat:
Mache ich was falsch? |
Re: Setzen von Font.Style funzt nicht wirklich
naja, so genau kann ich dir das leider nicht sagen.
die zuweisung mit font.style := font.style +/- [fsirgendwas] ist ansich schon korrekt. ich kenne nur keinen formdesigner, hab auch in der hilfe nix gefunden. welche prozedur löst denn den o.g. code aus? OnCheckboxClick? was willst du fett/unterstrichen darstellen, ein label? |
Re: Setzen von Font.Style funzt nicht wirklich
FormDesigner ist eine externe Komponente. Deshalb wirst Du nix finden in der Hilfe.
Und ja das Ereignis wir OnClick der Checkbox ausgelöst:
Delphi-Quellcode:
Die Checkbox ist nur dann sichtbar, wenn es sich bei dem Control wirklich um Label handelt. Wie gesagt ich will dem Label je nach Checkboxzustand was zuweisen und das klappt schon teilweise, aber leider nicht immer und ich habe keine Ahnung warum. Ich werde mal ein Testprojekt stricken...
procedure Tobj_properties.chk_lineClick(Sender: TObject);
begin if chk_bold.Checked then ((form2.FormDesigner1.Control as TLabel).Font.Style:= (form2.FormDesigner1.Control as TLabel).Font.Style + [fsUnderline]) else ((form2.FormDesigner1.Control as TLabel).Font.Style:= (form2.FormDesigner1.Control as TLabel).Font.Style - [fsUnderline]); end; |
Re: Setzen von Font.Style funzt nicht wirklich
Also es muss wohl doch an der Komponente liegen, da es ohne sie mit statischem Code wunderbar funktioniert, siehe:
Delphi-Quellcode:
procedure TForm1.chk_boldClick(Sender: TObject);
begin if chk_bold.Checked then form1.Label1.Font.Style:= form1.Label1.Font.Style + [fsBold] else form1.Label1.Font.Style:= form1.Label1.Font.Style - [fsBold] end; procedure TForm1.chk_ulClick(Sender: TObject); begin if chk_ul.Checked then form1.Label1.Font.Style:= form1.Label1.Font.Style + [fsUnderline] else form1.Label1.Font.Style:= form1.Label1.Font.Style - [fsUnderline] end; procedure TForm1.chk_kursivClick(Sender: TObject); begin if chk_kursiv.Checked then form1.Label1.Font.Style:= form1.Label1.Font.Style + [fsitalic] else form1.Label1.Font.Style:= form1.Label1.Font.Style - [fsitalic] end; |
Re: Setzen von Font.Style funzt nicht wirklich
Liste der Anhänge anzeigen (Anzahl: 1)
ja, hab gerade auch ein testprojekt, klappt wie gesagt wunderbar.
evtl. kannst du es ja mal so ähnlich probieren:
Delphi-Quellcode:
with Sender as TLabel do
begin if fsBold in {(Sender as TLabel).}Font.Style then {(Sender as TLabel).}Font.Style := {(Sender as TLabel).}Font.Style - [fsBold] else {(Sender as TLabel).}Font.Style := {(Sender as TLabel).}Font.Style + [fsBold] end; |
Re: Setzen von Font.Style funzt nicht wirklich
Moment mal, der "Formdesigner" gibt dir das aktuell aktive Control zurück?
Wenn du eine Checkbox anklickst, ist diese aber das aktuell Aktive, oder habe ich das nun falsch verstanden? |
Re: Setzen von Font.Style funzt nicht wirklich
Zitat:
Delphi-Quellcode:
Form2 ist das Formular des Labels und das Formular der Checkbox heisst obj_properties. Daran kann es also nicht liegen. Das Problem ist, dass die Styles gesetzt werden und das setzen und Löschen von fsbold IMMER funktioniert, aber das Setzen und Löschen von fsUnderline und fsItalic nur teilweise und ich kapier nicht warum. Es kann eigentlich nur an der Komponente liegen!? Vielleicht sollte ich mal die Erzeuger der Kompo anschreiben...!?
form2.FormDesigner1.Control as TLabel
@dahead Danke für Deine Mühe, ich werde den Code mal probieren! |
Re: Setzen von Font.Style funzt nicht wirklich
Zitat:
Zitat:
Schönen Tag noch und viel Spass beim :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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-2025 by Thomas Breitkreuz