|
| Med FontDialog og INI file væges Font.Styl~ Fra : Monie Jacobsen |
Dato : 05-02-04 07:21 |
|
Med FontDialog komponenten forsøger jeg,
at valge mellem forskellige Font.Style.
Og hente og gemme opsætning i INI file.
Memo1.Font.Style := [];
Memo1.Font.Style := [fsBold];
Memo1.Font.Style := [fsItalic];
Memo1.Font.Style := [fsBold, fsItalic];
Men får følgende fejlmeddelse:
[Error] Unit1.pas(226): Incompatible types: 'TFontStyles' and 'TCaption'
Se linje med fejlen *************
procedure TForm1.btnFontStylesClick(Sender: TObject);
var
FontStyle : Integer;
MyINI: TINIFile;
begin
FontDialog1.Execute;
FontStyle := FontStylesToInteger(FontDialog1.Font.Style);
MyINI := TINIFile.Create(PathToINIFile);
{Font Style}
//procedure WriteString(const Section, Ident, Value: String);
MyINI.WriteInteger('MinSektion', 'FontStyle', 0);
//function ReadString(const Section, Ident, Default: String): String;
Edit3.Text := MyINI.ReadString('MinSektion', 'FontStyle', 'Ikke fundet');
Memo1.Font.Style := Edit3.Text; ********* Her er fejlmeddelsen
end;
Mine Functioner, som jeg har forsøgt med.
function FontStylesToInteger(const Value : TFontStyles) : Integer;
begin
Result := pInteger(pFontStyles(@Value))^;
end;
function IntegerToFontStyles(const Value : Integer) : TFontStyles;
begin
Result := pFontStyles(pInteger(@Value))^;
end;
Håber du vil hjælpe med, at få proceduret til at virke!
--
Med venlig hilsen
Monie Jacobsen
My mail adress is
monie at sunwind dot dk
| |
David A. D. Konrad (05-02-2004)
| Kommentar Fra : David A. D. Konrad |
Dato : 05-02-04 12:05 |
|
"Monie Jacobsen" <post@sunwind.dk> wrote in message
news:4021e0f1$0$146$edfadb0f@dread11.news.tele.dk...
> Med FontDialog komponenten forsøger jeg,
> at valge mellem forskellige Font.Style.
> Og hente og gemme opsætning i INI file.
>
> Memo1.Font.Style := [];
> Memo1.Font.Style := [fsBold];
> Memo1.Font.Style := [fsItalic];
> Memo1.Font.Style := [fsBold, fsItalic];
>
> Men får følgende fejlmeddelse:
>
> [Error] Unit1.pas(226): Incompatible types: 'TFontStyles' and 'TCaption'
>
> Se linje med fejlen *************
(...)
> Mine Functioner, som jeg har forsøgt med.
>
> function FontStylesToInteger(const Value : TFontStyles) : Integer;
> begin
> Result := pInteger(pFontStyles(@Value))^;
> end;
>
> function IntegerToFontStyles(const Value : Integer) : TFontStyles;
> begin
> Result := pFontStyles(pInteger(@Value))^;
> end;
>
> Håber du vil hjælpe med, at få proceduret til at virke!
(...)
TFontStyle er jo et set, så jeg vil foreslå at oversætte settet til en
string og vice versa med delphi's typeinfo metoder GetEnumName/GetEnumValue,
f.eks
str:=GetEnumName(TypeInfo(TFontStyle),int(fsBold));
og omvendt
memo1.font.style:=memo1.font.style+GetEnumValue(TypeInfo(TFontStyle),'fsBold
');
Det burde være en masse eksempler på nettet - jeg ville gerne lave et
rigtigt eksempel men har ikke delphi installeret på den computer jeg sidder
ved pt...
| |
Monie Jacobsen (05-02-2004)
| Kommentar Fra : Monie Jacobsen |
Dato : 05-02-04 14:18 |
|
Tak David A. D. Konrad
Dit forslag, vil jeg lige arbejde med.
Jeg er nemlig ude i noget, jeg aldrig har arbejde med.
Rigtig mange tak for dit Tips
Med venlig hilsen
Monie Jacobsen
"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:bvt80i$h3i$1@sunsite.dk...
> "Monie Jacobsen" <post@sunwind.dk> wrote in message
> news:4021e0f1$0$146$edfadb0f@dread11.news.tele.dk...
> > Med FontDialog komponenten forsøger jeg,
> > at valge mellem forskellige Font.Style.
> > Og hente og gemme opsætning i INI file.
> >
> > Memo1.Font.Style := [];
> > Memo1.Font.Style := [fsBold];
> > Memo1.Font.Style := [fsItalic];
> > Memo1.Font.Style := [fsBold, fsItalic];
> >
> > Men får følgende fejlmeddelse:
> >
> > [Error] Unit1.pas(226): Incompatible types: 'TFontStyles' and 'TCaption'
> >
> > Se linje med fejlen *************
>
> (...)
> > Mine Functioner, som jeg har forsøgt med.
> >
> > function FontStylesToInteger(const Value : TFontStyles) : Integer;
> > begin
> > Result := pInteger(pFontStyles(@Value))^;
> > end;
> >
> > function IntegerToFontStyles(const Value : Integer) : TFontStyles;
> > begin
> > Result := pFontStyles(pInteger(@Value))^;
> > end;
> >
> > Håber du vil hjælpe med, at få proceduret til at virke!
> (...)
>
> TFontStyle er jo et set, så jeg vil foreslå at oversætte settet til en
> string og vice versa med delphi's typeinfo metoder
GetEnumName/GetEnumValue,
> f.eks
>
> str:=GetEnumName(TypeInfo(TFontStyle),int(fsBold));
>
> og omvendt
>
>
memo1.font.style:=memo1.font.style+GetEnumValue(TypeInfo(TFontStyle),'fsBold
> ');
>
> Det burde være en masse eksempler på nettet - jeg ville gerne lave et
> rigtigt eksempel men har ikke delphi installeret på den computer jeg
sidder
> ved pt...
>
>
| |
Monie Jacobsen (05-02-2004)
| Kommentar Fra : Monie Jacobsen |
Dato : 05-02-04 15:50 |
|
Til David A. D. Konrad
Har forsøgt meget, men det lykkes mig ikke, at få det til at fungerer.
Får fejlmeddelserne:
[Error] Unit1.pas(233): Incompatible types
[Error] Unit1.pas(235): Incompatible types
Har husket: uses TypInfo
Du skrev: "jeg ville gerne lave et rigtigt eksempel " Dette vil jeg blive
meget glad for.
Målsætning:
Med FontDialog komponenten, at valge mellem forskellige:
1: Font Name.
2: Font Size
3: Font Style
4. Font Color.
Gemme de valgte Font'e opsætning i INI file,
for så sener nå programmet starter op igen, henter dem ind.
Dette vandt jeg ved søgning på Google.
Function StyleToString( styles: TFontStyles ): String;
var
style: TFontStyle;
Begin
Result := '[';
For style := Low(style) To High(style) Do Begin
If style IN styles Then Begin
If Length(result) > 1 Then
result := result + ',';
result := result + GetEnumname( typeInfo(TFontStyle), Ord(style));
End; { If }
End; { For }
Result := Result + ']';
End; { StyleToString }
Function StringToStyle( S: String ): TFontStyles;
Var
sl : TStringlist;
style: TfontStyle;
i : Integer;
Begin
Result := [];
If Length(S) < 2 Then Exit;
If S[1] = '[' Then
Delete(S, 1, 1);
If S[Length(S)] = ']' Then
Delete(S, Length(S), 1);
If Length(S) = 0 Then Exit;
sl:= TStringlist.Create;
try
sl.commatext := S;
For i := 0 To sl.Count-1 Do Begin
try
style := TFontStyle( GetEnumValue( Typeinfo(TFontStyle), sl[i] ));
Include( Result, style );
except
end;
End; { For }
finally
sl.free
end;
End; { StringToStyle }
På forhånden mange tak.
Med venlig hilsen
Monie Jacobsen
My mail adress is
monie at sunwind dot dk
"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:bvt80i$h3i$1@sunsite.dk...
> "Monie Jacobsen" <post@sunwind.dk> wrote in message
> news:4021e0f1$0$146$edfadb0f@dread11.news.tele.dk...
> > Med FontDialog komponenten forsøger jeg,
> > at valge mellem forskellige Font.Style.
> > Og hente og gemme opsætning i INI file.
> >
> > Memo1.Font.Style := [];
> > Memo1.Font.Style := [fsBold];
> > Memo1.Font.Style := [fsItalic];
> > Memo1.Font.Style := [fsBold, fsItalic];
> >
> > Men får følgende fejlmeddelse:
> >
> > [Error] Unit1.pas(226): Incompatible types: 'TFontStyles' and 'TCaption'
> >
> > Se linje med fejlen *************
>
> (...)
> > Mine Functioner, som jeg har forsøgt med.
> >
> > function FontStylesToInteger(const Value : TFontStyles) : Integer;
> > begin
> > Result := pInteger(pFontStyles(@Value))^;
> > end;
> >
> > function IntegerToFontStyles(const Value : Integer) : TFontStyles;
> > begin
> > Result := pFontStyles(pInteger(@Value))^;
> > end;
> >
> > Håber du vil hjælpe med, at få proceduret til at virke!
> (...)
>
> TFontStyle er jo et set, så jeg vil foreslå at oversætte settet til en
> string og vice versa med delphi's typeinfo metoder
GetEnumName/GetEnumValue,
> f.eks
>
> str:=GetEnumName(TypeInfo(TFontStyle),int(fsBold));
>
> og omvendt
>
>
memo1.font.style:=memo1.font.style+GetEnumValue(TypeInfo(TFontStyle),'fsBold
> ');
>
> Det burde være en masse eksempler på nettet - jeg ville gerne lave et
> rigtigt eksempel men har ikke delphi installeret på den computer jeg
sidder
> ved pt...
>
>
| |
|
|