Si vous avez une application VCL non-thématique et non Unicode avec un TEdit "TestEdit" et que vous définissez TestEdit.Font.Charset sur RUSSIAN_CHARSET TestEdit affiche des caractères cyrilliques . Si toutefois vous changez l'application pour utiliser les thèmes cela ne fonctionne plus. Essayez ce qui suit pour voir ceci:Comment faire pour que Edit1.Font.Charset fonctionne avec des thèmes (styles visuels)
- Créez une nouvelle application VCL.
- Fermez l'unité 1 par défaut sans enregistrer.
- Remplacez le code source du projet (Project1.pas) par le code situé au bas de cette publication et enregistrez-le sous la forme CharsetTest.pas.
- Désélectionnez le thème d'exécution dans les options du projet.
- Exécutez le programme, cliquez sur les cases d'option, regardez la boîte d'édition 'police.
- Maintenant, vérifiez le thème d'exécution dans les options du projet ou ajoutez XPMan à la clause uses.
- Répétez l'étape 5.
Ma question est: Y at-il un moyen de rendre l'application honorer le charset même lorsque le thème? (Sans le passage à Unicode.)
program CharsetTest;
uses
Windows,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls,
ExtCtrls;
{$R *.res}
type
TForm1 = class(TForm)
private
CharsetRadioGroup: TRadioGroup;
TestEdit: TEdit;
procedure CharsetRadioGroupClick(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
end;
constructor TForm1.Create(AOwner: TComponent);
begin
inherited CreateNew(AOwner);
BorderWidth := 8;
Caption := 'Charset Test';
ClientHeight := 180;
ClientWidth := 250;
CharsetRadioGroup := TRadioGroup.Create(Self);
CharsetRadioGroup.Name := 'CharsetRadioGroup';
CharsetRadioGroup.Height := 105;
CharsetRadioGroup.Align := alTop;
CharsetRadioGroup.Caption := 'Charset';
CharsetRadioGroup.Parent := Self;
CharsetRadioGroup.Items.Add('Default');
CharsetRadioGroup.Items.Add('Russian');
CharsetRadioGroup.Items.Add('Greek');
CharsetRadioGroup.OnClick := CharsetRadioGroupClick;
TestEdit := TEdit.Create(Self);
TestEdit.Name := 'TestEdit';
TestEdit.Align := alBottom;
TestEdit.Font.Size := 20;
TestEdit.Font.Name := 'Courier New';
TestEdit.Text := 'äöüÄÖÜß';
TestEdit.Parent := Self;
CharsetRadioGroup.ItemIndex := 1;
end;
procedure TForm1.CharsetRadioGroupClick(Sender: TObject);
begin
case CharsetRadioGroup.ItemIndex of
0:
TestEdit.Font.Charset := DEFAULT_CHARSET;
1:
TestEdit.Font.Charset := RUSSIAN_CHARSET;
2:
TestEdit.Font.Charset := GREEK_CHARSET;
end;
end;
var
Form1: TForm1;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Les jeux de caractères sont * donc * DOS/Windows 3.1/Windows 9x ... –
Je sais. Mais l'application fonctionne et nous ne voulons pas faire le pas Unicode pour le moment. –