Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маштабирование при изменении разрешения экрана 
:(
    Опции темы
Бегемот
Дата 24.3.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Здравствуйте! smile
Такая вот у меня проблемма:
Приложение работает в полноэкранном режиме. Мне необходимо, чтобы визуальные размеры компонентов оставались неизменными при любом разрешении экрана.
Спасибо.

Это сообщение отредактировал(а) rewerew - 24.3.2005, 22:28
PM MAIL   Вверх
JAnty
Дата 24.3.2005, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Никак (кажись).
Или вычисляй разрешение(разширение) зкрана и меняй размеры компонентов по процйнтному соотнашению размеров по высоте и ширине(замучеешся), а лучше запускай прогу в определённом режиме экрана и не меняй его во время выполнения проги, так проще smile

Это сообщение отредактировал(а) JAnty - 24.3.2005, 21:20


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Бегемот
Дата 24.3.2005, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Цитата
вычисляй разрешение(разширение) зкрана и меняй размеры компонентов по процйнтному соотнашению размеров по высоте и ширине

После двух километров кода таким способомsmile я и задумался! smile...
Цитата
а лучше запускай прогу в определённом режиме экрана и не меняй его во время выполнения проги

...именно эта мысль меня ударила первой...так только программно не могу реальзовать
При запуске приложения, для начала, получаем текущее разрешение экрана
Код

   const int my_width = 800;
   const int my_height = 600;
   int screen_width, screen_height;


   screen_width = Form1->Monitor->Width;
   screen_height = Form1->Monitor->Height; 

...далее проверяем соответствует ли разрешение экрана пользователя нашему разрешению, т.е тому под которое писали прогу.
Код

   if((screen_width!=my_width) || (screen_height!=my_height )) 
   {
      /*------> тут то чего делать ?????<---------*/
   }

...ну и при выходе из приложения востанавливаем чего мы там наменяли smile
...вероятно так же как и меняли
smile

PM MAIL   Вверх
JAnty
Дата 25.3.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Изменение параметров экрана:

// Для изменения параметров экрана используйте следующий
// код:
DEVMODE DM;
DM.dmSize = sizeof(DEVMODE);
DM.dmBitsPerPel = 16; // глубина цвета, бит на пиксель
DM.dmPelsWidth = 1024; // разрешение по горизонтали
DM.dmPelsHeight = 768; // разрешение по вертикали
DM.dmFields = DM_BITSPERPEL +
DM_PELSWIDTH +
DM_PELSHEIGHT +
DM_DISPLAYFREQUENCY;
DM.dmDisplayFrequency = 75; // частота обновления экрана
ChangeDisplaySettings(&DM, 0);
// ЗАМЕЧАНИЕ: при изменении параметров смотрите чтобы
монитор поддерживал это режим


Как узнать частоту обновления экрана:

// Для получения частоты обновления экрана напишите следующий код:
HDC hDCScreen = GetDC(NULL);
int Refresh = GetDeviceCaps(hDCScreen, VREFRESH);
ReleaseDC(NULL, hDCScreen);
// в Refresh содержится частота обновления экрана по горизонтали


Как узнать разрешение экрана (VCL вариант):

// Разрешение экрана можно узнать, прочитав значения
// свойств Screen->Width и Screen->Height:
int HorzRes = Screen->Width;
int VertRes = Screen->Height;


Как узнать разрешение экрана (WinAPI вариант):

// Для получения разрешения экрана напишите следующий код:
HDC hDCScreen = GetDC(NULL);
int Horres = GetDeviceCaps(hDCScreen, HORZRES);
int Vertres = GetDeviceCaps(hDCScreen, VERTRES);
ReleaseDC(NULL, hDCScreen);
// в Horres содержится разрешение экрана по горизонтали,
// в Vertres содержится разрешение экрана по вертикали.


Как узнать разрешение экрана:

// Для получения разрешения экрана напишите следующий код:
int screenW=GetSystemMetrics(SM_CXSCREEN);//Получить ширину экрана
int screenH=GetSystemMetrics(SM_CYSCREEN);//Получить высоту экрана
// в screenW содержится разрешение экрана по горизонтали,
// в screenH содержится разрешение экрана по вертикали.



--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Бегемот
Дата 25.3.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Я вот никак не могу найти на форуме инфу по поводу того КТО МОЖЕТ? и КАК? повысить репутацию собеседнику. Кто-нибудь подскажите.
Ну а если я, нисколь не отметившийся гражданин, могу это сделать, то прошу руководство наградить JAnty плюсом. smile

JAnty, СПАСИБО, за подробный ответ на вопрос! smile
Здорово помог!
PM MAIL   Вверх
JAnty
Дата 25.3.2005, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Пожалусто smile


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Perun
  Дата 21.2.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



ДОбрый день, не подскажите, а размеры компоннтов при этом изменятся пропорционально?
PM MAIL ICQ   Вверх
UniBomb
Дата 21.2.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 97



некрофил....  smile 
PM MAIL ICQ Skype   Вверх
Perun
Дата 22.2.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



Вы на что намекаете?
С этого места поподробнее...и по уважительней пожайлуста
Цитата

некрофил....

Приложение написано для разрешения 1280x1024
На форме используется AdvColumnGrid(без scrollbar'ов)
У меня проблема заключается в том, что при уменьшении разрешения сам Grid не уменьшается,
некоторые записи не видно и перемещаться по нему приходится при помощи стрелок.
Необходимо, чтобы просто Grid целиком отображался на форме, без искажений.

PM MAIL ICQ   Вверх
jonie
Дата 22.2.2008, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



эт он шутит про поднятие тем 2005 года) благо человек поискал прежде чем задать вопрос, что есть гуд.
Цитата

Необходимо, чтобы просто Grid целиком отображался на форме, без искажений.
а в чем проблема подогнать форму к размеру грида (так чтобы грид отображался полностью)? 


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Perun
Дата 26.2.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



Понятно...шутит.
А может Grid к размеру формы. Т.е. изменить размеры шрифта, формы, всех компонентов...
А короче, через масштабирование путь есть?
PM MAIL ICQ   Вверх
UniBomb
Дата 27.2.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 97



Perun, 

Если обидел - извини...

В общем, чтобы твой грид менялся подстать форме, то в его свойствах Anchors поставь все значение в true. Тогда грид будет меняться в размерах настолько же, насколько меняется форма.

Если ты хочеш при этом менять размеры ячеек (я так понял это какая то таблица) и размеры шрифта, то в событии OnResize формы сделай проверку размеров формы. Ну скажем например - если размеры формы лежат в пределах 600-800 пикселей, то размер шрифта мы установим равным 10ппт, а размеры ячейки 25х25. А если размеры лежат в пределах 800-1024 пикселей, то размер шрифта - 12ппт, а ячейки - 30х30. И т.д.


Я надеюсь правильно понял проблему......
PM MAIL ICQ Skype   Вверх
Perun
Дата 28.2.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



Ничего всё нормально!
Благодарю за помощь - разобрался, получилось. smile   smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.