Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: неправильное отображение контролов в windows xp Добавлено: 18.01.10 23:45  

Автор вопроса:  DimDoc
Привет Всем!
Вот какая беда меня озадачивает...
Переношу программу написанную на vb .net на компьютер с Windows XP и....
- некоторые label смещены, относительно того места, где должны быть...
- в некоторых label надпись не уместилась (умышленно был выставлен Autosize = false и предварительно проверен результат)
- цвета не соответствуют заданным при разработке.

другие программы, написанные на VB6 - таких проблем не имели!

какие ещё подводные камни vb .net Вам встречались?
Как с этим бороться?
Тестить каждую прогу на совместимость с XP?
Может проблемы с label связаны с шрифтами?

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 19.01.10 00:01
Переношу программу
Всмысле запускаешь на другом компе?
Может проблемы с label связаны с шрифтами?
может.

Ответить

Номер ответа: 2
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #2 Добавлено: 19.01.10 01:24
В смысле - создаю инсталляционный пакет (setup.exe), но это не обязательно... просто копирую папку с файлами программы и этого достаточно... конечно, если framework установлен.

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 19.01.10 07:48
Ни NET, ни ХР к этому никакого отношения не имею.. Изменены системный настройки на целевой машине..

Ответить

Номер ответа: 4
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #4 Добавлено: 19.01.10 15:09
У меня подобная фишка была, на всех контролах формы чёрный цвет текста поменялся на красный.

Ответить

Номер ответа: 5
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #5 Добавлено: 19.01.10 15:10
Ни NET, ни ХР к этому никакого отношения не имею..
НАдеюсь, что не имееш:)

Ответить

Номер ответа: 6
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #6 Добавлено: 19.01.10 21:06
Надеюсь EROS прав!
В большинстве случаев удавалось привести интерфейс проги в долженствующий вид путём изменения темы экрана, например на тему "Windows XP". Но темы влияли только на отображение цвета контролов и не изменяли размер текста на label так, что он переставал там умещаться. Разрешение экрана тоже не должно на это влиять, так как уменьшение или увеличение формы пропорционально изменяет размер и контролов.
Так что, мне не всё стало ясным: какие такие настройки на целевой машине заставляют часть (не все надписи) надписей не умещаться в отведённом месте?
Да, пока писал, вспомнил вот что... Границы смещались у тех label, у которых установлено autosize = true. Следовательно или толщина шрифта или сам шрифт изменился в сторону большей ширины. Но я не мог предположить, что установленные шрифты по умолчанию в visual studio 2008 будут не совместимы с windows XP!!!

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 19.01.10 21:34
Но я не мог предположить, что установленные шрифты по умолчанию в visual studio 2008 будут не совместимы с windows XP!!!

Все куда гораздо банальнее.. это кривые руки дибильного пользователя с админскими правами.. И VS 2008 тут абсолютно не при чем..
Так что, мне не всё стало ясным: какие такие настройки на целевой машине заставляют часть (не все надписи) надписей не умещаться в отведённом месте?

RTFM

http://www.hwdot.com/how-to-restore-default-windows-xp-fonts/

Ответить

Номер ответа: 8
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #8 Добавлено: 19.01.10 22:51
Уважаемый EROS!!!
пожалуйста объясните для особо не продвинутых... Это для меня. Я, всё таки врач, а уж потом - любитель программист...
Все куда гораздо банальнее..
- в чём банальность?
- не понял про
кривые руки дибильного пользователя с админскими правами..

....
что-то я не припомню, чтобы разработчики программ предупреждали пользователей, что если настройки экрана не будут соответствовать требованиям программы, то результат будет непредсказуемый...

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 20.01.10 08:44
Уважаемый DimDoc!

http://clip2net.com/clip/m25397/1263963809-clip-97kb.jpg

Только из за уважения к вашей профессии я постараюсь разъяснить вам происходящее с вашим приложением более доходчивым языком.
Дело в том, что ваше приложение, хотите вы того или нет, взаимодействует с системой и реагирует должным образом. Если вы пройдете по вышеизложенной ссылке то вы увидите, с помощью каких настроек пользователь с админискими правами может установить системные шрифты и цвета.. При этом практически ВСЕ приложения будут использовать их как СТАНДАРТНЫЕ по умолчанию!
И Ваше приложение не является исключением.. Форма при старте получает системные шрифты,цвета и все дочерние контролы (button,label etc..) начинают их использовать. В результате чего у вас все сбивается.
В данном случае вы доверились пользователю и его системным настройкам, что вас, собственно, и подвело.. По сути, у вас есть 2 пути: Первое, это наплевать на системные установки и задать всем контейнерам свои собственные шрифты(дочерние контролы их сами начнут использовать), либо подписаться на соответствующие события (типа FontChanged и др) и реагировать на них соответствующим образом и подстраивать ваш интерфейс в рантайме.
Если я все доходчиво объяснил, то вы должны понять, что нет никакой совместимости VB.NET и Win XP и быть не может.. есть лишь взаимодействие вашего приложения с системой.. если вы вернете системный настройки в дефолтные, то ваше приложение будет выглядеть так же как и при разработке. Это лишний раз подчеркивает тот факт, что необходимо защищать свое приложение от действий пользователей (так называемая защита от дурака) и вы, как программист, пусть даже и любитель, должны были это знать..
Если интересно мое мнение, то я бы рекомендовал создание проекта начинать с создания базовой формы от которой будут наследоваться все другие.. В этой, базовой, форме задать значение AutoScaleMode = None (а не Font как там стоит по дефолту) установить нужный шрифт и размер, подписаться на необходимые события и в случае изменения системных настроек(шрифт,размер, цвет) не позволять форме их использовать. Подчеркну, что все формы желательно наследовать от этой, базовой.. Этих мер, как правило, вполне достаточно. Кроме того, если не хотите полагаться на пользователя, то избегайте использования цветов из раздела System ( как пример: ActiveCaption, ControlText и т.д.).. любое изменение системных цветов тут же отразится на цветах в вашем приложении..

Ответить

Номер ответа: 10
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #10 Добавлено: 20.01.10 11:54
Спасибо большое!
Век живи - век учись...
В целом - понял.
Если Вас не затруднит, покажите пример - в какой процедуре и как организовать
подписаться на необходимые события и в случае изменения системных настроек(шрифт,размер, цвет) не позволять форме их использовать.


заранее Спасибо!

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 20.01.10 13:02
Если Вас не затруднит, покажите пример - в какой процедуре и как организовать

Увы, пример написать не смогу.. по той простой причине, что я не пишу на VB уже достаточно давно, и он у меня даже не установлен.. Да и не нужен он в данном случае.. просто создайте пустую базовую форму, установите там нужный шрифт и цвет, и все остальные формы унаследуйте от этой. Потом посмотрите что будет на целевой машине.. Если не поможет, то обрабатывайте событие FontChanged .. и там уже смотрите.. если шрифт поменялся, то возвращайте тот, который должен быть..

Ответить

Номер ответа: 12
Автор ответа:
 Nickola



Вопросов: 2
Ответов: 12
 Профиль | | #12 Добавлено: 20.01.10 13:21
ИМХО
Если пользователь меняет системный шрифт и цвет (который стоит по умолчанию), значит это ему зачем-то надо (зачем это его личное дело).
Не надо запрещать пользователю менять системные настройки, а сделать так, чтоб при любых системных настройках приложение работало!!!!
Если все-таки принудительно установили шрифты, размеры шрифтов, цвета и т.д., то предоставьте пользователю возможность настраивать их в Вашем приложении.

Ответить

Номер ответа: 13
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #13 Добавлено: 20.01.10 14:03
понял... буду пробовать...
собственно я так и делал - устанавливал на базовой форме нужный шрифт и смотрел на целевой машине. И даже не на одной.
Недавно были поставки новой оргтехники в разных больницах и сис.настройки специально никто не делал. Все настройки по умолчанию. Результат описан в начале поста.
В одной из книг прочитал, что хорошим шрифтом будет новый шрифт Segoe UI; 9pt
На моей машине этот шрифт действительно выглядит очень не плохо... а на целевых, видимо подменяется, что и приводит к нежелательному эффекту.
Вот я и хотел узнать, как
сделать так, чтоб при любых системных настройках приложение работало!!!!
.

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

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 20.01.10 14:22
в разных больницах и сис.настройки специально никто не делал. Все настройки по умолчанию.

Я бы небыл в этом так уверен.. Опыт показывает, что все отрицают свою причастность, но чудес на свете не бывает.. раз настройки изменены, значит кто то их изменил.

а на целевых, видимо подменяется, что и приводит к нежелательному эффекту.

Скорее всего, на целевых машинах этот шрифт попросту отсутствует.. И Cоntrol.DefaultFont возвращает что то типа MS Sans Serif.
Как правило используют самые распространенный шрифты типа Tahoma, если же вы используете что то необычное типа Segoe UI; 9pt , то вы сами обязаны позаботится о распространении этого шрифта вместе с вашим приложением..

шрифты в программу внедрены, или в программе только указание системе - какой шрифт использовать

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

а нужного в системе нет - каракули не получатся?

Вы получите исключение, поскольку программа не сможет создать экземпляр класса с указанным прототипом

Ответить

Номер ответа: 15
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #15 Добавлено: 20.01.10 14:28
Если все-таки принудительно установили шрифты, размеры шрифтов, цвета и т.д., то предоставьте пользователю возможность настраивать их в Вашем приложении

Обычно это делается темами, но никак не настройкой размера и самого шрифта для надписей на кнопках и лейблах - это абсурд..

значит это ему зачем-то надо

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

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам