Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildschirmmodi ermitteln (https://www.delphipraxis.net/113425-bildschirmmodi-ermitteln.html)

TonyMontana 7. Mai 2008 18:26


Bildschirmmodi ermitteln
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var devmode : TDEVMODE;
    d      : INTEGER;
    litem  : TListItem;
    p      : ^TDevmode;

begin
    devmode.dmSize         := SizeOf(TDEVMODE);
    devmode.dmDriverExtra  := 0;
    d := 0;
    listview1.Columns[0].Width := 400;
    While EnumDisplaySettings(nil, d, devmode) do with devmode do begin
        Inc(d);
        litem := listview1.Items.Add;
        litem.Caption:=Format('Modus %3d : %dx%d, %d Farben  (%d Hz)',[d,dmPelsWidth,dmPelsHeight,1 shl (dmBitsPerPel),dmDisplayFrequency]);
        new(p);
        p^ := Devmode;
        litem.Data := p;
    end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   ChangeDisplaySettings(TDevmode(listview1.Selected.data^),0);
end;
Habe dieses Beispiel noch gefunden, ist das noch so aktuell oder gibt es bessere Methoden dafür?
Falls das noch aktuell ist, kann das auch gerne jemand in die Code-Library verschieben (oder ich mache es selbst, falls der Code so ok ist ...)!

Muetze1 7. Mai 2008 18:40

Re: Bildschirmmodi ermitteln
 
Nein, die WinAPI hat das noch nicht neu erfunden, sondern bietet (schon allein zur Kompatibilität) immernoch die gleichen Funktionen.

Und besserer Code: Nun ja, warum wird eine lokale Variable angelegt um dann deren Inhalt wieder in die angelegte Zeigerstruktur zu kopieren? Warum nicht gleich den Zeiger befüllen lassen?

Warum direkt in ein ListView1? Warum wird dieses nicht übergeben? In die CodeLibrary als FormCreate() Methode?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz