Avatar billede morten_s Nybegynder
25. september 2001 - 13:10 Der er 6 kommentarer og
3 løsninger

Typecast Font.Style ?

Jeg har 3xCheckBox hvor programmets bruger skal kunne afgøre Font.Style på nogle Labels.

Jeg har bygget det op på nedenstående måde men får desværre compilerfejl på nederste linie: Font.Style := FontStyleString;, Kan FontStyleString Typecastes til Font.Style eller er jeg nødt til at skrive kode som dækker alle 9 kombinationer ?

if cbBold.Checked then
        FontStyleString := \'[fsBold\'
      else
        FontStyleString := \'\';
      if (FontStyleString <> \'\') and cbItalic.Checked then
        FontStyleString := FontStyleString + \', fsItalic\'
      else
        FontStyleString := \'[fsItalic\';
      if (FontStyleString <> \'\') and cbUnderline.Checked then
        FontStyleString := FontStyleString + \', fsUnderline\'
      else
        FontStyleString := \'[fsUnderline\';
      FontStyleString := FontStyleString + \']\';
      Font.Style := FontStyleString;
Avatar billede borrisholt Novice
25. september 2001 - 13:14 #1
Det er fordi du gør det forkert ... prøv det her :

    if cbBold.Checked then
        Font.Style := [fsBold];
      else
        Font.Style := [];

    if (Font.Style <> []) and cbItalic.Checked then
        Font.Style := Font.Style + [fsItalic]
      else
        Font.Style := [fsItalic];
osv.

JEns B
Avatar billede morten_s Nybegynder
25. september 2001 - 13:20 #2
Hvad så den anden vej ?

Følgende virker kun ved en style

if Font.Style = [fsBold] then
      cbBold.Checked := True
    else
      cbBold.Checked := False;
    if Font.Style = [fsItalic] then
      cbItalic.Checked := True
    else
      cbItalic.Checked := False;
    if Font.Style = [fsUnderline] then
      cbUnderline.Checked := True
    else
      cbUnderline.Checked := False;
Avatar billede unclebug Nybegynder
25. september 2001 - 13:36 #3
Et lille eksempel på begge veje:

procedure TMainForm.CheckBoxToLabel(Sender: TObject);
begin
  Label1.Font.Style := [];
  if CheckBox1.Checked then Label1.Font.Style := Label1.Font.Style + [fsBold];
  if CheckBox2.Checked then Label1.Font.Style := Label1.Font.Style + [fsUnderLine];
  if CheckBox3.Checked then Label1.Font.Style := Label1.Font.Style + [fsItalic];
end;

procedure TMainForm.LabelToCheckBox(Sender: TObject);
begin
  CheckBox1.Checked := fsBold in Label1.Font.Style;
  CheckBox2.Checked := fsUnderLine in Label1.Font.Style;
  CheckBox3.Checked := fsItalic in Label1.Font.Style;
end;
Avatar billede martinlind Nybegynder
25. september 2001 - 13:37 #4
Hvis du skal hente Font-Stylen fra en font og vise den som string er dette det absolut nemeste

Label1.Caption := GetSetProp(Font,\'Style\',TRUE);

husk at use TypInfo

/Martin
PS. Se også SetSetProp
Avatar billede morten_s Nybegynder
25. september 2001 - 13:39 #5
UncleBug>> Hvis du vil have point for mit spørgsmål fra i går kan du så ikke ligge et svar ?
Avatar billede martinlind Nybegynder
25. september 2001 - 13:43 #6
det har han lige gjort *S*
Avatar billede morten_s Nybegynder
25. september 2001 - 14:06 #7
UncleBug> Hvis du vil have point her må du ligge et svar.....
Avatar billede unclebug Nybegynder
25. september 2001 - 14:09 #8
Oh.. Af ren høflighed kommenterer jeg kun, men jeg kan vel ligeså godt lægge svar.. På www.experts-exchange.com anses det for uhøfligt at svare uden at være 200% sikker. Men der kan man også acceptere en kommentar som svar.

Avatar billede morten_s Nybegynder
25. september 2001 - 14:11 #9
UncleBug> Din løsning var lige det jeg skulle bruge
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester