Сейчас на форуме: hgdagon, asfa (+4 невидимых)

 eXeL@B —› Программирование —› Где ошибка в программе?
Посл.ответ Сообщение

Ранг: 4.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 24 февраля 2007 01:19
· Личное сообщение · #1

написал прогу для смены разрешения экрана,а она не работает!

unit ResChange;

interface

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

type
TForm6 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
modes:array[0..255] of TDevMode;
public
{ Public declarations }
end;

var
Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject);
var
i: integer;
begin
ListBox1.Items.Clear;
i := 98; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
i := 107; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
i := 120; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
i := 147; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
i := 172; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
i := 181; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
i := 194; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
i := 221; EnumDisplaySettings(nil, i, Modes[i]);
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
end;

procedure TForm6.Button2Click(Sender: TObject);
begin
Modes[ListBox1.ItemIndex].dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFLAGS or DM_DISPLAYFREQUENCY;
ChangeDisplaySettings(Modes[ListBox1.ItemIndex], CDS_UPDATEREGISTRY);
end;

end.




Ранг: 4.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 24 февраля 2007 01:20
· Личное сообщение · #2

и ещё: как сделать массив из дискретных значений,т.е. например 24,56,78 и т.д. ????



Ранг: 4.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 24 февраля 2007 11:16
· Личное сообщение · #3

Ошибка закралась глубоко в ДНК и ее можно исправить только выпив йад или убившись ап стену!



Ранг: 4.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 24 февраля 2007 12:14
· Личное сообщение · #4

DrShX пишет:
Ошибка закралась глубоко в ДНК и ее можно исправить только выпив йад или убившись ап стену!

уже нашли,не парьтесь!




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 24 февраля 2007 14:49
· Личное сообщение · #5

Замени код Button1Click на:

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
ListBox1.Items.Clear;
i := 0;
while EnumDisplaySettings(nil, i, Modes[i]) do
begin
ListBox1.Items.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+
IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));
Inc(i);
end;
end;

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 4.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 24 февраля 2007 23:29
· Личное сообщение · #6

MACKLIA пишет:
Замени код Button1Click на:

ты гений просто,в Инете нашёл что ли?
Ты же не используешь все 222 (или сколько их там) режима адаптера,мне надо всего 8.
Переменная i видимо как то обнуляется там,даже цикл проверки если вставить вместо while,
то ничего не работает.
В принципе я сделал другой вариант через ChangeDisplaySettings и радиокнопки.
так что топег можно закрыть



Ранг: 4.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 24 февраля 2007 23:30
· Личное сообщение · #7

p.s. я так понял в Delphi даже самый бестолковый ПТУ-шник соображает больше чем вы все вместе
взятые


 eXeL@B —› Программирование —› Где ошибка в программе?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати