Поползновения формы и лэйблов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Поползновения формы и лэйблов

Сообщение Gogic » 27.08.2011 (Сб) 11:45

Доброго времени суток.

Как сделать так, чтобы при нестандартных настройках винды (размер окна, шрифты) не ползла (меняла размер) форма, и не меняли свое положение и шрифт label'ы.

Пробовал и пиксели, и твипы, и юзер - ничего не помогает :(

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Поползновения формы и лэйблов

Сообщение Mikle » 27.08.2011 (Сб) 12:26

Что-то типа:
Код: Выделить всё
Dim c As Control
  For Each c In Controls
    c.FontSize = c.FontSize * Screen.TwipsPerPixelX / 15
    c.Left = c.Left * Screen.TwipsPerPixelX / 15
    c.Width = c.Width * Screen.TwipsPerPixelX / 15
    c.Top = c.Top * Screen.TwipsPerPixelY / 15
    c.Height = c.Height * Screen.TwipsPerPixelY / 15
  Next c

Только ещё либо обрабатывать ошибки, чтобы не вешалось, когда у контрола нет свойства FontSize, например, или как-то по другому проверять наличие свойств.
Вместо "15" подставь то значение Screen.TwipsPerPixelX и Screen.TwipsPerPixelY, что у тебя на компьютере. Обычно "15".
И размер клиентской части самой формы нужно зафиксировать, например 800*600:
Код: Выделить всё
Move Left, Top, Width - Screen.TwipsPerPixelX * (ScaleWidth - 800), Height - Screen.TwipsPerPixelY * (ScaleHeight - 600)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поползновения формы и лэйблов

Сообщение Хакер » 27.08.2011 (Сб) 12:55

Mikle, зачем давать вредные советы?

При проектировании формы нужно забыть о любых единицах, кроме твипов, и думать только твипими, и только их и использовать.

Gogic писал(а):и пиксели, и твипы, и юзер

Из этой фразы видно, что ты не понимаешь смысл всей этой затеи.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Поползновения формы и лэйблов

Сообщение Mikle » 27.08.2011 (Сб) 13:29

Хакер писал(а):При проектировании формы нужно забыть о любых единицах, кроме твипов, и думать только твипими, и только их и использовать.

И забыть, например, о пиксельарт графике.
Просто мне задают вопрос "как", и я отвечаю на него, а не задаю встречный вопрос "зачем".

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поползновения формы и лэйблов

Сообщение Хакер » 27.08.2011 (Сб) 13:33

Mikle писал(а):И забыть, например, о пиксельарт графике.

Да, забыть.

Mikle писал(а):Просто мне задают вопрос "как", и я отвечаю на него, а не задаю встречный вопрос "зачем".

Ты посмотри на свой код. Что он делает? Помимо того, что он стилистически ужасен, он делает преступное: поддерживает одинаковые DD-размеры всего, вместо того, чтобы поддерживать DI-размеры.

Это значит, что когда-нибудь тупая программа перемасштабирует себя, и будет занимать на экране 800×600 px, что будет соответствовать 8×6 мм.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Поползновения формы и лэйблов

Сообщение Mikle » 27.08.2011 (Сб) 17:02

Ты утрируешь. Сейчас программы под ДОС практически все уже абсолютно не актуальны, а при выводе на экран "пиксель в пиксель" до сих пор вполне читаемы. Да, несколько мелковаты. Это я к тому, что программа потеряет актуальность раньше, чем её размер.
Хакер писал(а):Помимо того, что он стилистически ужасен

Ну, да, вместо "15" лучше было бы вставить именованные константы. А ещё что?

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 157
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: Поползновения формы и лэйблов

Сообщение Sam777e » 27.08.2011 (Сб) 18:03

Доброго времени суток.
В своё время читал книгу "access 2000. руководство разработчика кен гетц, пол литвин, майкл гилберт" - оценка 5++. Скачайте и наслаждайтесь. Там есть специальное обсуждение ~такого вопроса + код. А ещё стоит посмотреть на другие подходы; например, разные стратегии организации ~форм в Java.
UPD.
Mikle писал(а):. . .мне задают вопрос "как", и я отвечаю на него, а не задаю встречный вопрос "зачем".

+1
Последний раз редактировалось Sam777e 27.08.2011 (Сб) 18:09, всего редактировалось 1 раз.
Здоровья и удачи

Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Re: Поползновения формы и лэйблов

Сообщение Gogic » 28.08.2011 (Вс) 17:04

При проектировании формы нужно забыть о любых единицах, кроме твипов, и думать только твипими, и только их и использовать.


Изначально всегда только их и использую, но проблему это не решает.

Ты посмотри на свой код. Что он делает? Помимо того, что он стилистически ужасен, он делает преступное: поддерживает одинаковые DD-размеры всего, вместо того, чтобы поддерживать DI-размеры.


Предложи свой.

И забыть, например, о пиксельарт графике.


Ее там нет.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Поползновения формы и лэйблов

Сообщение Mikle » 28.08.2011 (Вс) 17:47

Gogic писал(а):Изначально всегда только их и использую, но проблему это не решает.

Ты не понял Хакера, он говорит, что её и не нужно решать, это не проблема, так и должно происходить.

Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Re: Поползновения формы и лэйблов

Сообщение Gogic » 30.08.2011 (Вт) 10:59

Ты не понял Хакера, он говорит, что её и не нужно решать, это не проблема, так и должно происходить.


Но вот как объяснить пользователям, что это не проблема?

Ладно, буду пробовать код выше...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поползновения формы и лэйблов

Сообщение Хакер » 30.08.2011 (Вт) 18:26

Gogic писал(а):Но вот как объяснить пользователям, что [url]это[/url] не проблема?

Что это? Хватит говорить о каких-то метафизических эффектах, приведи конкретный пример того, на какой форме и в каких двух разных условиях наблюдаются и не наблюдаются эффекты, которые ты признаёшь негативными.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Re: Поползновения формы и лэйблов

Сообщение Gogic » 04.10.2011 (Вт) 6:38

Наблюдается на любой форме при увеличенном стиле(или шрифтах) Windows (125%,150%)
http://gyazo.com/7af455e8c6500903522ec6bb5bc11fe2

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

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Поползновения формы и лэйблов

Сообщение iGrok » 04.10.2011 (Вт) 12:55

Как человек, работающий за 15.6" с разрешением 1920*1080 (ноут такой), скажу тебе, что лично люто ненавижу всех и каждого, кто принудительно отключает масштабирование в своих программах.
Программы, написанные таким образом, автоматом идут фтопку, потому что работать с ними невозможно.
К сожалению, нормально написанные альтернативы находятся далеко не для всего ПО, а как показала пракика, эта беда - общая.
Этим страдает Adobe, Skype, Qip и куча другого ПО, которое периодически нужно для работы.

Поэтому - фтопку отключение масштабирования. Лучше наоборот разберись, как делают правильное масштабирование.

Mikle, фтопку пиксельарт при создании интерфейсов. Они должны быть стандартными и удобными.
label:
cli
jmp label


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 42

    TopList