| Wasabi | 
|  Отправлено: 07.09.2004, 09:05 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 23
 
 
 
  
 | Например дизайнеришь форму при разрешении 1024*768 и при стандартном шрифте в 96dpi. Но если юзер (например тетка с хреновым зрением) ставит себе шрифт в 125% и фсе....формы выглядят хренова....контролы "едут"....в лэйблах текст не влезает...
 
 Я вот сделал ini-файл с настройками контролов для разных разрешений и размеров шрифтов (написал процедуру выгрузки параметров) и перед открытием формы процедура считывает параметры и применяет их к контролам.
 Может есть другой, более простой и изящный способ?
  Думаю многих такая проблема волнует, делитесь
  
 
 | 
|  | 
| AVC | 
| Отправлено: 07.09.2004, 09:21 |  | 
| 
 Ветеран
 
 Группа: Модератор
 Сообщений: 1583
 
 
 
  
 | Я разрабатываю на 120 dpi + небольшой запас для текста + маштабирование на пользовательское dpi и размер основного шрифта формы + автоматической выравнивание по размерам формы/панели и т.д (событие Resize) 
 Кстати. Страшно раздражает непрофессиональность разработчиков у которых "контролы "едут"....в лэйблах текст не влезает...". У меня стоит 125%.
 
 Отредактировано AVC — 07/09/2004, 09:27
 | 
|  | 
| Konstantine | 
| Отправлено: 07.09.2004, 09:26 |  | 
| 
 Мастер участка
 
 Группа: Модератор
 Сообщений: 545
 
 
 
  
 | А Я — делаю так ка выглядит для нормального шрифта. а если юзеру хочется выделываться и ставить 1600х1200 и 200dpi, ту пусть получает то шо хотел!!! и пусть определится — мельче или крупнее!!! | 
|  | 
| Gedeon | 
| Отправлено: 07.09.2004, 09:27 |  | 
|  
 Ветеран
 
 Группа: Модератор
 Сообщений: 1742
 
 
 
  
 | Честно говоря не доводилось никогда с такой проблемой бороться, но мне кажется ини не совсем хорошее решение, просто ведь все настройки умаяться можно считать. Я бы делал так: де нить в конструкторе вызов функции (как впрочем и при изменении разрешения, размеров шрифта) которая бы и пересчитала размеры всех контролов, а с изменением размеров формы надо бороться выставляя свойство Alignment у контролов ди и садить их лучше на панели.
 | 
|  | 
| Wasabi | 
| Отправлено: 07.09.2004, 09:29 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 23
 
 
 
  
 | | QUOTE (Gedeon @ 07/09/2004, 10:29) |  | Честно говоря не доводилось никогда с такой проблемой бороться, но мне кажется ини не совсем хорошее решение, просто ведь все настройки умаяться можно считать. Я бы делал так: де нить в конструкторе вызов функции (как впрочем и при изменении разрешения, размеров шрифта) которая бы и пересчитала размеры всех контролов, а с изменением размеров формы надо бороться выставляя свойство Alignment у контролов ди и садить их лучше на панели.
 | 
 я пытался написать такую функцию....высчитывал пропорции, пытался подобрать коэффициент для разных разрешений....все равно криво получается. Особенно когда на форме много контролов ввода текста и они расположены очень близко друг от друга....полюбому часть из них залазиет на рядом стоящие....
 А послать юзера не могу. Приклад пишется под заказ...за хорошие бабки.
 | 
|  | 
| Konstantine | 
| Отправлено: 07.09.2004, 09:37 |  | 
| 
 Мастер участка
 
 Группа: Модератор
 Сообщений: 545
 
 
 
  
 | | QUOTE (Wasabi @ 07/09/2004, 10:31) |  | А послать юзера не могу. Приклад пишется под заказ...за хорошие бабки. | 
 а юзер описывал ЭТО в тех задании?
 
 если нет — то это особенность недокументырованная проги :-)
 | 
|  | 
| Wasabi | 
| Отправлено: 07.09.2004, 09:39 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 23
 
 
 
  
 | | QUOTE (Konstantine @ 07/09/2004, 10:39) |  | | QUOTE (Wasabi @ 07/09/2004, 10:31) |  | А послать юзера не могу. Приклад пишется под заказ...за хорошие бабки. | 
 а юзер описывал ЭТО в тех задании?
 
 если нет — то это особенность недокументырованная проги :-)
 | 
 Конечно.
 | 
|  | 
| Gedeon | 
| Отправлено: 07.09.2004, 09:41 |  | 
|  
 Ветеран
 
 Группа: Модератор
 Сообщений: 1742
 
 
 
  
 | | QUOTE (Wasabi @ 07/09/2004, 10:31) |  | я пытался написать такую функцию....высчитывал пропорции, пытался подобрать коэффициент для разных разрешений....все равно криво получается. Особенно когда на форме много контролов ввода текста и они расположены очень близко друг от друга....полюбому часть из них залазиет на рядом стоящие.... 
 | 
 Ну тут тяжело что-либо дельное посоветовать, ведь все от каждой конкретной формы зависит, разве что не мучайтесь с коеффициентами, а считайте сразу размер шрифта, рядом сидящие контролы располагайте слева непрово, конец первого — начало вторго + чуть-чуть
  . Все таки панели хорошее решение. | 
|  | 
| AVC | 
| Отправлено: 07.09.2004, 10:35 |  | 
| 
 Ветеран
 
 Группа: Модератор
 Сообщений: 1583
 
 
 
  
 | | QUOTE (Wasabi @ 07/09/2004, 09:31) |  | я пытался написать такую функцию....высчитывал пропорции, пытался подобрать коэффициент для разных разрешений....все равно криво получается. Особенно когда на форме много контролов ввода текста и они расположены очень близко друг от друга....полюбому часть из них залазиет на рядом стоящие.... А послать юзера не могу. Приклад пишется под заказ...за хорошие бабки.
 | 
 Посылать юзера нехорошою Он наш кормилец.
 Я пользуюсь
 
 | CODE |  | //---------------------------------------------------------------------------
 // Load previos Position, Size and State for Form
 
 PACKAGE void __fastcall IniFormRestore (TForm *frm, bool size, bool setstyle)
 {
 int ed;
 bool b;
 
 // Формы разрабатывались на экране с разрешением в 120 dpi
 // Шрифтом MS Sans Serif 8
 if (Form_Scale_Enable && frm->Scaled)
 { int i = Font_Form? Font_Form->Size : 8;
 if (i <= 0) i = 8;
 // frm->ScaleBy((DESIGN_PixelsPerInch * i), (Screen->PixelsPerInch * 8));
 frm->ScaleBy(i, 8);
 }
 
 if (setstyle) SetStyle (frm);
 AnsiString sect = NativeFormName(frm);
 AnsiString tmp = Windows_XY->ReadString ("Forms", sect, "");
 ....
 
 | 
 Это вызывается из FormCreate, тонкоя доводка контролов из ???Resize — например выравнивание друг за другом или по правому полю (кстати, Borland'овский якорь выравнивает по правому краю плохо) или по ширине. Использую много панелей с автовыравниванием, при условии что в одном направлении стоят не более трех (например Lef, Client, Right) (бывали случаи, когда Builder менял панели местами)
 
 Отредактировано AVC — 07/09/2004, 10:41
 | 
|  | 
| Wasabi | 
| Отправлено: 07.09.2004, 10:41 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 23
 
 
 
  
 | | QUOTE (AVC @ 07/09/2004, 11:37) |  | | QUOTE (Wasabi @ 07/09/2004, 09:31) |  | я пытался написать такую функцию....высчитывал пропорции, пытался подобрать коэффициент для разных разрешений....все равно криво получается. Особенно когда на форме много контролов ввода текста и они расположены очень близко друг от друга....полюбому часть из них залазиет на рядом стоящие.... А послать юзера не могу. Приклад пишется под заказ...за хорошие бабки.
 | 
 Посылать юзера нехорошою Он наш кормилец.
 Я пользуюсь
 
 | CODE |  | //---------------------------------------------------------------------------
 // Load previos Position, Size and State for Form
 
 PACKAGE void __fastcall IniFormRestore (TForm *frm, bool size, bool setstyle)
 {
 int ed;
 bool b;
 
 // Формы разрабатывались на экране с разрешением в 120 dpi
 // Шрифтом MS Sans Serif 8
 if (Form_Scale_Enable && frm->Scaled)
 { int i = Font_Form? Font_Form->Size : 8;
 if (i <= 0) i = 8;
 // frm->ScaleBy((DESIGN_PixelsPerInch * i), (Screen->PixelsPerInch * 8));
 frm->ScaleBy(i, 8);
 }
 
 if (setstyle) SetStyle (frm);
 AnsiString sect = NativeFormName(frm);
 AnsiString tmp = Windows_XY->ReadString ("Forms", sect, "");
 ....
 
 | 
 Это вызывается из FormCreate, тонкоя доводка контролов из ???Resize — например выравнивание друг за другом или по правому полю (кстати, Borland'овский якорь выравнивает по правому краю плохо) или по ширине. Использую много панелей с автовыравниванием, при условии что в одном направлении стоят не более трех (например Lef, Client, Right) (бывали случаи, когда Builder менял панели местами)
 | 
 Спасиба. Щас попробую
   | 
|  |