Ecran en 600*800 [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
8 février 2011
-
Messages postés
67
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
6 octobre 2011
-
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

Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
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.
Messages postés
10
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
8 février 2011

Merci beaucoup tout les deux, c'est exactement ce que je cherchais

Kristel
Messages postés
67
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
6 octobre 2011
4
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)
Messages postés
67
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
6 octobre 2011
4
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.