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 :

Utiliser une police spéciale dans mon programme


Sujet :

Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Utiliser une police spéciale dans mon programme
    bonjour

    j'ai décidé de mettre comme police "Segoe Print" dans certain de les TRichEdit

    j'ai remarqué que lorsque je suis sous delphi sur un pc vista ou w7 cette police est bien présente, donc on peut la sélectionner et l'utiliser; mais lorsqu'on passe sur xp elle n'y ait pas

    j'ai copié cette police dans mon dossier front, et c'est ok pour xp

    mais bien sur lorsque mes utilisateurs ayant xp utiliseront mon programme, la police ne fonctionnera pas s'il ne l'ont pas

    dans pareil situation, que faut il faire ?

    mettre la police en ressource et la copier dans le dossier front de l'utilisateur à chaque exécution du programme ? ou il y a un moyen plus sympa ?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Le Dossier c'est Font pas Front
    Mieux vaut faire clic droit installer qu'une copie manuelle
    Il faut en plus avoir des droits pour installer une fonte !
    Des outils comme Inno Setup pour le déploiement d'une application propose l'ajout de Font au système !

  3. #3
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Dis-nous s'il faut les droits (si UAC active) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //CHARGEMENT DE LA POLICE SPECIALE "LCD"
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      AddFontResource(PChar(ExtractFilePath(Application.Exename)+'\LCD77777.ttf'));
      SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
    end;
    @+

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    déjà la font est disponible chez vista et w7, donc je pense qu'il faut l'installer que sur wxp et 98 (donc pas de UAC)

    après je ne veux pas utiliser d'outil genre inosetup, car mon appli est sensé fonctionner sans install

    donc je pense qu'il me faut une condition avant install, et d'après vous ce sera quoi ? le mieux aurait été de détecter l'os, mais je ne pense pas qu'on est de code fiable pour bien différencier xp/vista/w7/w98 ?

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 672
    Points : 7 048
    Points
    7 048
    Par défaut
    Citation Envoyé par Coussati Voir le message
    mais je ne pense pas qu'on ait de code fiable pour bien différencier xp/vista/w7/w98 ?
    Mais si : http://delphi.developpez.com/faq/?pa...versionwindows

  6. #6
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    donc je pense qu'il me faut une condition avant install
    Et pourquoi pas simplement de tester le fichier de font par lui-même si présent ou absent ?

    Tu as même une variable système pour t'indiquer le folder Font.

    @+

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    @Lung j'ai testé sous un vista, et les 2 méthodes renvoient :

    1/ inconnu
    2/ professionnel

    donc aucun moyen d'être sûr

    si je peux me permettre, ce serait pratique d'avoir la date de publication des sources dans la faq afin de savoir si c'est récent ou pas


    @Droïde Système7 j'ai pensé à ça aussi, mais je ne suis pas un spécialiste "des polices" mais le fichier peut avoir un nom différent selon la version du windows ? ou de la personne qui aurait installé ?

    une autre question qui n'a rien à voir avec la prog : quand j'ai été sur mon pc win7 j'ai cherché la police en question, et j'ai copié collé dans un autre répertoire j'ai eu 2 fichiers; j'ai trouvé assez bizzarre ... je n'ai copier qu'un seul dans mon xp et ça fonctionnait, donc je n'ai pas été plus loin ...

    edit : je viens de faire pareil sur mon vista, sauf que rien ne se colle :/ je copie bien le fichier segoepr print, mais une fois que je veux le coller dans un autre répertoire du pc le "coller" du menu contextuel est grisé

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 761
    Points : 13 368
    Points
    13 368
    Par défaut
    Le problème est que cette police est une marque déposée par Microsoft.
    L'utiliser si elle est présente, rien ne t'en empêche. Par contre la distribuer avec ton projet s'il s'agit d'une application commerciale, j'y réfléchirais à deux fois !

  9. #9
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Le problème est que cette police est une marque déposée par Microsoft.
    L'utiliser si elle est présente, rien ne t'en empêche. Par contre la distribuer avec ton projet s'il s'agit d'une application commerciale, j'y réfléchirais à deux fois !
    Oui exact, j'avais pas songé à ce côté des choses !

    Sous Vista exact aussi le copier/coller ne fonctionne pas, seulement le glissé/déposé.

    @+

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Avec EnumFonts, tu peux détecter si la Fonte existe !
    Si oui, tu l'utilises
    Si non, tu proposes à l'utilisateur de télécharger la font pour améliorer l'expérience d'utilisation (un message qui donne l'air que ce n'est pas indispensable pour éviter les dépendances et donc les licences)

    - Si il accepte, un ShellExecute sur une URL "http://www.ascenderfonts.com/font/segoe-print-bold.aspx" cela lancera le navigateur, là il se débrouille, ce n'est plus ton problème
    - Si il refuse, tu stockes l'info pour ne pas lui demander à chaque fois, un écran de configuration permettant d'accèder à cette option ultérieurement

    Dans tous les cas, tant que la Font n'est pas disponible, tu en choisi une autre qui est choisi par défaut genre "Comic sans MS" ou "Monotype Corsiva"

    Ton programme pouvant fonctionner sans la font, tu ne devrais pas avoir de problème de licence

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    @Andnotor c'est vrai que je n'avais pas pensé à ce côté là vu que mon application restait fonctionnel que sous windows

    dans ce cas, je pense pouvoir trouver sur le net une police similaire, avec une licence qui permet sa distribution


    @Droïde Système7 je confirme ça fonctionne le glissé-déposé, mais bon je vais devoir utiliser une autre (mais au moins j'ai compris comment copier une police ^^) et contrairement à W7, c'est bien un seul fichier qui est copié


    @ShaiLeTroll je pense utiliser EnumFonts (je ne sais pas encore comment ça fonctionne mais je vais me renseigner) car l'utilisateur peut très bien l'avoir aussi (mais bon il faut là aussi ce sera rare)

    pour ce qui est de permettre à l'utilateur de choisir sur un site, je ne préfère pas, surtout si j'utilise une police redistribuable


    par contre, si j'utilise une police perso, est ce que je suis obligé de passer par le dossier font ? non je ne pense pas vu ce code :


    //CHARGEMENT DE LA POLICE SPECIALE "LCD"
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    AddFontResource(PChar(ExtractFilePath(Application.Exename)+'\LCD77777.ttf'));
    SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
    end;

    et pour pousser un peu plus loin : est ce que je peux mettre la police en ressource dans mon appli et l'utiliser sans l'extraire sur le disque dur ? (comme lorsqu'on utilise une image, un son en ressource)

    et je suppose qu'il faudra par le code configurer le nom de la police à utiliser, vu qu'il n'apparaitra pas dans la liste déroulante du choix (normal vu que la police n'est pas dans le dossier font)

    je vous remercie encore pour vootre aide

Discussions similaires

  1. Comment utiliser une police spéciale
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 11/01/2012, 23h41
  2. Insérer une typo spéciale dans mon site internet
    Par Roxanecine dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 24/12/2007, 00h03
  3. [JAR][POLICE] Utiliser une police ttf dans un fichier jar
    Par Doc.Fusion dans le forum Général Java
    Réponses: 3
    Dernier message: 26/01/2005, 12h23
  4. Réponses: 2
    Dernier message: 24/06/2003, 20h31
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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