eXeL@B —› Программирование —› Где ошибка в программе? |
Посл.ответ | Сообщение |
|
Создано: 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. |
|
Создано: 24 февраля 2007 01:20 · Личное сообщение · #2 |
|
Создано: 24 февраля 2007 11:16 · Личное сообщение · #3 |
|
Создано: 24 февраля 2007 12:14 · Личное сообщение · #4 |
|
Создано: 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; ----- Что один человек сделал , другой всегда сломать может... |
|
Создано: 24 февраля 2007 23:29 · Личное сообщение · #6 MACKLIA пишет: Замени код Button1Click на: ты гений просто,в Инете нашёл что ли? Ты же не используешь все 222 (или сколько их там) режима адаптера,мне надо всего 8. Переменная i видимо как то обнуляется там,даже цикл проверки если вставить вместо while, то ничего не работает. В принципе я сделал другой вариант через ChangeDisplaySettings и радиокнопки. так что топег можно закрыть |
|
Создано: 24 февраля 2007 23:30 · Личное сообщение · #7 |
eXeL@B —› Программирование —› Где ошибка в программе? |
Эта тема закрыта. Ответы больше не принимаются. |