Thema: Delphi Kontrast per API ...

Einzelnen Beitrag anzeigen

Benutzerbild von Darty
Darty

Registriert seit: 8. Jun 2002
Ort: Kronau
731 Beiträge
 
#7
  Alt 30. Jun 2002, 13:06
Hi Leutz,

mit dem untenstehenden Code wollte ich zunächst mal mit der Materie einarbeiten. Dies funktioniert auch. Kann per Button in 800x600 bzw in 1280x1024 wechseln. Nur bei der Anzeige der Werte in Label.caption gab es das Problem dass Label String ist und die Werte DWord ... Das Problem löste ich mit IntToStr, was aber wohl nicht das richtige Ergebnis anzeigt.
Nun aber zeigt es immer bei 1. Wert: 2216296448 und 2. Wert: 72812900 an. Ich verwende immer die Auflösung 1280x1024 ... Selbst wenn ich auf 800x600 umschalte erhalte ich immer die gleiche Werte ?? Daher dachte ich, dass die Codes falsch sein müssen. Hatte ich da bei der Umwandlung Dword -> String etwas nicht beachtet ??

Code:
unit Kontrast2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    Procedure ShowMe_resolution;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

// Zeigt die Werte in Label an ..
Procedure TForm1.ShowMe_resolution;
var
  lpDevMode: TDeviceMode;
begin
  lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
  label1.caption := inttostr(lpDevMode.dmPelsWidth);
  label2.caption := IntToStr(lpDevMode.dmPelsHeight);
end;

// Auflösung ändern
function change_resolution(width, height: word): boolean;
var
  lpDevMode: TDeviceMode;
begin
  Result := EnumDisplaySettings(nil, 0, lpDevMode);
  if Result then begin
  lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
  lpDevMode.dmPelsWidth := width;
  lpDevMode.dmPelsHeight := height;
  Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL;
  end;
end;

// Button Klick zeigt Resolution an
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMe_Resolution;
end;

// Button Klick wechselt in 800x600
procedure TForm1.Button2Click(Sender: TObject);
begin
  change_resolution(800,600);
end;

// Button Klick wechselt in 1280x1024
procedure TForm1.Button3Click(Sender: TObject);
begin
  change_resolution(1280,1024)
end;

end.
Matthias Knebel
Mfg M. Knebel [-Darty-]
- Gehörlose Delphianer gibt es selten -
www.team-knebel.de
  Mit Zitat antworten Zitat