Taille Police de caractère

Messages postés
67
Date d'inscription
dimanche 16 octobre 2005
Statut
Membre
Dernière intervention
13 novembre 2009
- - Dernière réponse : Cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
- 25 nov. 2006 à 12:56
Bonjour,

J'ai une application en cours de développement qui fonctionne en réseau. Lors de mes premiers essais de déploiement, je suis confronté à un problème :  les utilisateurs n'ont pas le privilège d'administrer leur poste en partculiers ils ne peuvent pas changer la taille de la police, vous savez dans : Propriétés Affichage / Paramètres / Avancés : le paramètre PPP (pixel par pouce).
De plus, toutes les configurations installés ne sont pas identiques.
Résultat : même si mon application fonctionne techniquement, je l'ai programmé en 96ppp. L'ergonomie sur les postes configurés en 120ppp est désastreuse.
Comme les utilisateurs ne peuvent pas changer ce paramètre : c'est mon logiciel qui doit s'adapter.
Que faut-il faire ?
- Créer une version 96ppp et 120ppp en ayant modifié la taille des contrôles visuel (bonjour la maintenance) ?
- Détecter ce paramètre et ajuster la taille des contrôles logiciellement ? Quelle est le nom de la variable pour trouver ce paramètre ?
- Existe-t-il autre chose ?
Merci d'avance pour vos propositions.
Jean-Michel
Afficher la suite 

5 réponses

Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
0
Merci
bonjour,


je pense qu'il faut que tu définisse tes polices en Height (et non en Size)


TonHeight := - round (Form1.Font.Size * ScreenPixelsPerInch / 72);

pour connaître le ScreenPixelsPerInch (je l'ai appelé "ppp") du PC :

     showmessage(inttostr(GetDeviceCaps(getdc(getdesktopwindow), LOGPIXELSY))+' ppp');
     showmessage(inttostr(GetDeviceCaps(getdc(getdesktopwindow), LOGPIXELSX))+' ppp');

par exemple :

ppp:=GetDeviceCaps(getdc(getdesktopwindow), LOGPIXELSX);// te donneras 96 ou 120 ppp

(mais en fait, on s'en fiche de tout ça pour la suite, voir ci-dessous)

_____________________________________________________________________________

En pratique : regarde le Height que tu as sur ton programme en faisant :

showmessage('Height = '+inttostr(Form1.Font.Height));
ou plus simplement en regardant dans les propriétés du Form1 : "Height" du "Font"

Maintenant tu as le Height de ton application (par exemple ton Heigth est  "-11")

dans ton programme tu mets :

procedure TForm1.FormCreate(Sender: TObject);
begin
     Form1.Font.Height:= -11;
end;

Voilà... et je croise les doigts... Si ça marche tu me le diras car je n'ai pas essayé.... je n'ai fait que la théorie....

DrJerome

Et je coupe le son !....... (silence)....... Et je remets le son ! ? ?
Commenter la réponse de DRJEROME
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
0
Merci
En sachant qu'il faut mettre le code dans le create pour toutes les "forms"

DrJerome

Et je coupe le son !....... (silence)....... Et je remets le son ! ? ô
Commenter la réponse de DRJEROME
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
0
Merci
j'ai essayé de mettre 120 à la place de 96 pour le Form1... peut-être une autre piste...

il faut le faire en dynamique

procedure TForm1.FormCreate(Sender: TObject);
begin
     Form1.PixelsPerInch:=96;//tu mets ta valeur de ppp
end;

sans garantie... tu me diras

DrJerome
Commenter la réponse de DRJEROME
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
0
Merci
la dernière solution ne marche pas, la première il faut la tester sinon si elle ne marche pas non plus, il y a ça :

procedure TForm1.FormCreate(Sender: TObject);
var
ScreenPixelsPerInch:integer;
begin
     ScreenPixelsPerInch:=GetDeviceCaps(getdc(getdesktopwindow), LOGPIXELSX);
     Form1.Font.Height:=(-11*ScreenPixelsPerInch)div 96;//en admettant que ton height soit "11" sur ta machine
end;

(En plus je pense que tous les components du form se décalent, disposition décalée... non? il n'y a pas ça à voir aussi ?)

DrJerome
Commenter la réponse de DRJEROME
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
34
0
Merci
Salut,

il y a aussi la propriété Scaled de ta form principal :

Tiré de l'aide de Delphi:

property Scaled: Boolean;
Indique si la fiche est redimensionnée en fonction de la valeur de la propriété PixelsPerInch.

Description

Si la propriété Scaled a la valeur True, et si la valeur de la propriété PixelsPerInch diffère des paramètres en cours du système, la fiche est redimensionnée. Si Scaled a la valeur False, il n'y a pas de redimensionnement.

Scaled est à True par défaut
 
@+
Cirec

<hr size="2" />
Commenter la réponse de Cirec