Newsgroup: it.comp.lang.delphi
Titolo: Risoluzione

Come si fa a cambiare la risoluzione del monitor con una istruzione in
Delphi?

Dunque... guarda questa:
Type
  tpColors = (tp16Colori, tp256Colori, tp65536Colori, tp16MilioniColori,
tp4MiliardiColori, tpUnknow);
// ----------------------------------------------------------------------
// Cambio risoluzione del monitor
//
// (la risoluzione DEVE essere tra quelle previste dalla scheda)
//
// _Width  : Nuova larghezza
// _Height : Nuova altezza
// _Colors : Nuovo numero di colori
//
// Ritorno -> Se TRUE ha avuto esito positivo
// ----------------------------------------------------------------------
Function CambioRisoluzioneMonitor(_Width  : DWORD;
                                  _Height : DWORD;
                                  _Colors : tpColors) : Boolean;
Var
  Contatore : DWORD;
  Dati      : TDeviceMode;
  Trovata   : Boolean;
  BitxPixel : DWORD;
Begin
  // ---------------------------------------
  // Preleva il numero di bit per pixel
  // ---------------------------------------
  Case _Colors Of
       tp16Colori        : BitxPixel :=  4;
       tp256Colori       : BitxPixel :=  8;
       tp65536Colori     : BitxPixel := 16;
       tp16MilioniColori : BitxPixel := 24;
       tp4MiliardiColori : BitxPixel := 32;
       Else
         BitxPixel := 8;
  End;
  // -------------------------------
  // Inizializzazione variabili
  // -------------------------------
  Contatore := 0;
  Trovata   := False;
  // ------------------------------------------------
  // Controlla tutte le possibili risoluzioni
  // o fino a che non ho trovato quella giusta
  // ------------------------------------------------
  While (EnumDisplaySettings(NIL, Contatore, Dati)) And (Not Trovata) Do
        Begin
          // -------------------------------------------
          // Se Altezza, Larghezza e colori sono esatti
          // ho trovato la risoluzione ottimale
          // -------------------------------------------
          If (Dati.dmPelsWidth  = _Width   ) And
             (Dati.dmPelsHeight = _Height  ) And
             (Dati.dmBitsPerPel = BitxPixel)
             Then
               Trovata := True
             Else
               Inc(Contatore);
        End;
  // --------------------------------
  // Ho trovato la risoluzione
  // --------------------------------
  Result := False;
  If Trovata Then
     Begin
       // ---------------------------------------
       // Rileggo la risoluzione da impostare
       // ---------------------------------------
       EnumDisplaySettings(NIL, Contatore, Dati);
       // -------------------------------------
       // Cambio la risoluzione dello schermo
       // -------------------------------------
       ChangeDisplaySettings(Dati, CDS_UPDATEREGISTRY);
       Result := True;
     End;
End;
Ciao,
David (
www.utilityweb.net
)


Sicuro di volerlo sapere? 
OK...
devi prendere le api di windows ( non so quali siano per Linux ( Kylix
)  )
ma la sostanza è uguale ( spero per te :D )
cmq ...
in windows devi usare l'api
ChangeDisplaySettings
e in particolare il codice è questo:
( hai bisogno di una varariabile dmScreenSettings di tipo Devmode  )
 
      ZeroMemory( @dmScreenSettings, sizeof(dmScreenSettings) );
//Makes Sure Memory's Available
      with dmScreensettings do
        begin
          dmSize := sizeof(dmScreenSettings);         //Size Of The
Devmode Structure
          dmPelsWidth  := width;	              //Selected
Screen Width
	  dmPelsHeight := height;                     //Selected
Screen Height
          dmBitsPerPel := bits;                       //Selected Bits
Per Pixel
          dmFields     := DM_BITSPERPEL or DM_PELSWIDTH or
DM_PELSHEIGHT;
        end;
      //Try To Set The Selected Mode And Get Results. CDS_FullScreen
Gets Rid Of The Start Bar
      if (ChangeDisplaySettings(dmScreenSettings,
CDS_FullScreen))<>DISP_CHANGE_SUCCESSFUL THEN )
  // mi dispiace è andata male
else
  // ok è andata bene
Il Razziatore,
The Only Good Windows is an uninstalled Windows
-----------------------------------------------
E-MAILs : IlRazziat...@NOSPAMnetscape.net
ICQ     : 67552596
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com