Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 807

/ вопрос решён /

Здравствуйте, подскажите, пожалуйста, можно ли изменять разрешение экрана монитора во время работы программы?

Тамара Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задала: Тамара (статус: Посетитель)
Вопрос отправлен: 30 июля 2007, 19:40
Состояние вопроса: решён, ответов: 3.

Ответ #1. Отвечает эксперт: Djec

Здравствуйте, Тамара!
Изменить разрешение можно, использовав следующую процедуру:
procedure Display( X, Y : Word );
var
dm : TDEVMODE;
begin
ZeroMemory( @dm, sizeof( TDEVMODE ) );
dm.dmSize := sizeof ( TDEVMODE );
dm.dmPelsWidth := X;
dm.dmPelsHeight := Y;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings( dm, 0 );
end;

Ответ отправил: Djec (статус: 1-ый класс)
Время отправки: 30 июля 2007, 20:13
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Градов Ю.М.

Здравствуйте, Тамара!
Посмотрите листинг в приложении.

Приложение:
  1. procedure SetScreen(BPP: byte; width, height, FR: integer);
  2. var
  3. D: TDevMode;
  4. h: HWND;
  5. begin
  6. h:=0;
  7. D.dmDeviceName:='DISPLAY';
  8. D.dmBitsPerPel:=BPP;
  9. D.dmDisplayFrequency:=FR;
  10. D.dmPelsWidth:=Width;
  11. D.dmPelsHeight:=Height;
  12. D.dmFields:=DM_BITSPERPEL+DM_PELSWIDTH+DM_PELSHEIGHT+DM_DISPLAYFREQUENCY;
  13. D.dmSize:=SizeOf(D);
  14. if ChangeDisplaySettings(D,CDS_TEST)=DISP_CHANGE_SUCCESSFUL then
  15. ChangeDisplaySettings(D,CDS_UPDATEREGISTRY)
  16. else
  17.  
  18.  
  19. end;
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  


Ответ отправил: Градов Ю.М. (статус: 8-ой класс)
Время отправки: 30 июля 2007, 20:49
Оценка за ответ: 5

Ответ #3. Отвечает эксперт: Feniks

Здравствуйте, Тамара!
Можно.
Смотрим приложения...

Приложение:
  1.  
  2.  
  3. procedure TForm1.Button1Click(Sender: TObject);
  4. var
  5. d: _devicemodeA;
  6. i: integer;
  7. begin
  8. i:=0;
  9. while EnumDisplaySettings(nil,i,d)<>false do
  10. begin
  11. ListBox1.Items.Add('Mode: '+IntToStr(i+1)+' - '+FloatToStr(D.dmPelsWidth)+'x'+FloatToStr(D.dmPelsHeight)+'x'+FloatToStr(D.dmBitsPerPel)+' - '+FloatToStr(D.dmDisplayFrequency)+' Hz');
  12. inc(i,1);
  13. end;
  14. end;
  15.  
  16. procedure TForm1.Button2Click(Sender: TObject);
  17. var
  18. d: _devicemodeA;
  19. begin
  20. EnumDisplaySettings(nil, ListBox1.ItemIndex, D);
  21. ChangeDisplaySettings(D, CDS_UPDATEREGISTRY);
  22. end;
  23.  
  24. =======================================================
  25.  
  26.  
  27.  
  28. procedure ChangeDisplayResolution(x, y : word);
  29. var
  30. dm : TDEVMODE;
  31. begin
  32. ZeroMemory(@dm, sizeof(TDEVMODE));
  33. dm.dmSize := sizeof(TDEVMODE);
  34. dm.dmPelsWidth := x;
  35. dm.dmPelsHeight := y;
  36. dm.dmFields := DM_DISPLAYFLAGS;
  37. ChangeDisplaySettings(dm, 0);
  38. end;


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 2 августа 2007, 12:37
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 0.

31 января 2011, 19:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:54
Выполнено за 0.02 сек.