Ecran en 600*800

Résolu
Kristel60
Messages postés
10
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
8 février 2011
- 1 févr. 2005 à 15:21
cs_morinxav2
Messages postés
67
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
6 octobre 2011
- 25 mars 2005 à 08:41
Bonjour,
Je cherche à forcer le parametrage de l'ecran en 600*800 au moment de l'éxécution du programme.
Merci de m'aider car je ne trouve rien à ce sujet.

Kristel

4 réponses

jmp77
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
1 févr. 2005 à 16:39
Hello,



Voici la fonction que j'utilise pour forcer l'affichage en 1024 * 768 :

{------------------------------------------------------------------------------}

{
Modifie la résolution si elle n'est pas 1024 x
768
}

{------------------------------------------------------------------------------}

function DisplayMode : Boolean;



var

Dm : TdeviceMode;

Hdc : THandle;

ScreenHeight,ScreenWidth,ScreenFrequency,ScreenProf : Real;

Compteur : Integer;

EncoreDesModes : Bool;

WorkDisplayMode : TDevMode;

Change : Integer;



begin

Hdc := FormStart.Canvas.Handle;

ScreenHeight := GetDeviceCaps(Hdc,VertRes);

ScreenWidth := GetDeviceCaps(Hdc,HorzRes);

ScreenFrequency := GetDeviceCaps(Hdc,VREFRESH);

ScreenProf := GetDeviceCaps(Hdc,BITSPIXEL);



If (ScreenHeight < 768) and (ScreenWidth < 1024) then

begin

Change := 0;

Compteur := 0;



Repeat

EncoreDesModes := EnumDisplaySettings(nil,Compteur,Dm);



If (ScreenHeight Dm.DmPelsHeight) and (ScreenWidth Dm.DmPelsWidth) and

(ScreenFrequency dm.dmDisplayFrequency) and (ScreenProf dm.dmBitsPerPel) then

begin

ActiveDisplayMode := Dm;

end;



If (Dm.DmPelsHeight 768) and (Dm.DmPelsWidth 1024) then

begin

WorkDisplayMode := Dm;

Change := 1;

end;

{else

begin

Result := False;

end;}



Inc(Compteur);

until EncoreDesModes = False;



If Change = 1 then

begin

ShowMessage('Le soft est optimisé pour
fonctionner sous une résolution de 1024 x 768.' + Chr(13) +

'Votre résolution actuelle n''est pas
adaptée. Le programme va basculer en 1024 x 768.' + Chr(13) +

'Votre résolution sera rétablie lors de la fermeture du soft.');

ChangeDisplaySettings(WorkDisplayMode,0);

Result := True;

end

else

begin

Result := False;

end;

end

else

begin

Result := True;

end;

end;

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
3
Kristel60
Messages postés
10
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
8 février 2011

1 févr. 2005 à 18:53
Merci beaucoup tout les deux, c'est exactement ce que je cherchais

Kristel
0
cs_morinxav2
Messages postés
67
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
6 octobre 2011
4
23 mars 2005 à 10:12
Bonjour,

Excuse moi, je suis très interressé par ta fonction, mais comme je suis un peu novice, je ne vois pas comment utiliser celle ci dans un programme. En plus il y a une erreur de compil, je pense que tu as oubliée une declaration de varaiable (ActiveDisplayMode : TDevMode;)?.

J'ai bien compris qu'il faut appeller la fonction a l'ouverture du programme. mais je ne sais pas comment.

Je te remercie d'avance pour ta reponse.

(Genial ce site)
0
cs_morinxav2
Messages postés
67
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
6 octobre 2011
4
25 mars 2005 à 08:41
Bonjour,

Je peux repondre a ma propre question ci-dessus, il faut declarer la function dans var de votre application (function DisplayMode : Boolean;), vous recopier la function, puis mettre (displaymode;) a l'ouverture de votre Form.

Par contre comment fait on pour revenir a la taille d'origine, a la fermeture de l'application ?

Je continue a chercher..

Merci d'avance, a bientôt.
0