IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

RichEdit - Charset - Font


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Par défaut RichEdit - Charset - Font
    Bonjour,
    J'ai un RichEdit dont je peux modifier la police grace à une combo.
    Mon problème est le suivant, si je sélectionne une police style symbol quand aucun texte n'est sélectionné alors impossible d'ecrire en symbol (bien que SelAttributes.name soit bel et bien à Symbol) mais si je séléctionne du text alors là ca marche.
    Après pas mal de recherche je me suis aperçu que le problème vient du charset de la font.
    Quand je regarde le code rtf, voici ce que j'ai sans séléction de texte :
    {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Symbol;}}
    \uc1\pard\b\f0\fs40 A}

    et ce que j'ai quand je séléctionne mon "A" avant de choisir Symbol

    {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset2 Symbol;}}
    \uc1\pard\b\f0\fs40 A}

    Dans ce 2eme cas on voit bien que le charset est à SYMBOL_CHARSET et non à ANSI_CHARSET comme dans le 1er car hors j'ai tracé dans le code de la vcl pour voir que le SendMessage envoyé au control RTF est bien le même. Du coup je vois pas bien ce que je peux faire... une idée ?

    Si je pouvais connaître les charset dispo pour la police sélectionnée, je pourrai surement y faire quelque chose mais j'arrive pas à trouver comment faire pour récuperer le charset d'une font.

    Bruno.

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Par défaut
    J'ai trouvé comment récuperer le charset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
      FontType: Integer; Data: Pointer): Integer; stdcall;
    begin
      integer(Data^) := LogFont.lfCharSet;
      Result := 1;
    end;
     
    function TFrameEd.GetFontCharset(const Name: String): integer;
    var
      DC: HDC;
      LFont: TLogFont;
      pFontName: PChar;
    begin
      DC := GetDC(0);
      try
        FillChar(LFont, sizeof(LFont), 0);
        LFont.lfCharset := DEFAULT_CHARSET;
        pFontName := @(LFont.lfFaceName[0]);
        StrCopy(pFontName, PChar(Name));
        EnumFontFamiliesEx(DC, LFont, @EnumFontsProc, integer(@Result), 0);
      finally
        ReleaseDC(0, DC);
      end;
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Font->Charset = GREEK_CHARSET : Pb
    Par influe dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2007, 14h58
  2. changer style font RichEdit
    Par ac/dc dans le forum C++Builder
    Réponses: 10
    Dernier message: 30/10/2006, 20h11
  3. Modifier font + charset d'un HINT
    Par Pill_S dans le forum Composants VCL
    Réponses: 7
    Dernier message: 13/11/2005, 19h30
  4. Enregistrer un RichEdit dans un .Txt
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/08/2002, 11h52
  5. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo