Taille Police de caractère

jnmchl Messages postés 63 Date d'inscription dimanche 16 octobre 2005 Statut Membre Dernière intervention 13 novembre 2009 - 25 nov. 2006 à 07:29
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 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

5 réponses

DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
25 nov. 2006 à 08:44
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 ! ? ?
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
25 nov. 2006 à 09:00
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 ! ? ô
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
25 nov. 2006 à 09:06
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
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
25 nov. 2006 à 09:43
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 nov. 2006 à 12:56
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" />
0
Rejoignez-nous