Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с интерфейсом 
:(
    Опции темы
Dominator
Дата 9.12.2004, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я создаю программки на VB6 на своём компьютере, но как только переношу на другой, то элементы формы смещаются, вообщем, появляются искажения в интерфейсе. smile Это, в основном, сама форма (приобретает не те размеры), images & labels.
Я думаю, что дело здесь не в самом компьютере, а в мониторе, которые я использовал при "рождении" проги (возможно, разные дюймы) или что-то надо поменять в самом проекте, чтобы таких глюков не было. Так это или не так? И как исправить эту проблему?
PM MAIL   Вверх
Akina
Дата 9.12.2004, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Это при одинаковых разрешениях экранов? сделай лог позиций и размеров, включая тип масштабирования, пересчитай в твипы - меняется или нет...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Naghual
Дата 9.12.2004, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

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



Вероятно тут играет большую роль системный масштаб (количество точек на дюйм). Этот параметр можно настраивать в ручную на каждом отдельном компе.

Вариантом решения может быть переход при разработке с твипсов к пикселям.
Попробуй для формы изменить свойство ScaleMode = 3 (Пиксель). Подправь форму, сохрани и откомпилируй.

Если не помогло пиши - будем думать дальше.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Dominator
Дата 9.12.2004, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Akina:

Мне нужен программный код!
PM MAIL   Вверх
Naghual
Дата 9.12.2004, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

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



Код чего тебе нужен?
Твоя форма фиксированного размера или нет? Может проблема в твоем коде в Form_Resize?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Dominator
Дата 9.12.2004, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Naqhual:

Это не помогло... smile

У кого есть smile какие идеи ещё?

Это сообщение отредактировал(а) Dominator - 9.12.2004, 13:17
PM MAIL   Вверх
Naghual
Дата 9.12.2004, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

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



Ну так что? Форма фиксированная или нет?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
geckelberryfinn
Дата 9.12.2004, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ребята! Эту проблему не решить никогда (ИМХО).!!! Дело как, ни странно, в размере системного шрифта! Сам сталкивался с такой проблемой. Решение на VB так до сих пор не нашел. В Дельфях та же самая проблема решается установкой свойства

Код

Scaled:=false;


а как на VB - большой вопрос.


Это сообщение отредактировал(а) geckelberryfinn - 9.12.2004, 13:20
PM MAIL   Вверх
Naghual
Дата 9.12.2004, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

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



geckelberryfinn не согласен. Я думаю решение все же найдем.
Размер системного шрифта зависит непосредственно от масштаба.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Dominator
Дата 9.12.2004, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



geckelberryfinn:

Давайте тогда найдём этот ответ поскорей...
PM MAIL   Вверх
geckelberryfinn
Дата 9.12.2004, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Naghual @ 9.12.2004, 13:23)
Размер системного шрифта зависит непосредственно от масштаба


Размер этого шрифта устанавливается
Свойства:Экран->Насатройка->Дополнительно->Общие->Размер шрифта
PM MAIL   Вверх
geckelberryfinn
Дата 9.12.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну в исходниках модуля Forms в Delphi используется следующий код для масштабирования формы
Может поможет...Хотя у меня идей нет никаких. Эта процедура вызывается для каждого объекта на форме.
Код

procedure TControl.ChangeScale(M, D: Integer);
var
 X, Y, W, H: Integer;
 Flags: TScalingFlags;
begin
 if M <> D then
 begin
   if csLoading in ComponentState then
     Flags := ScalingFlags else
     Flags := [sfLeft, sfTop, sfWidth, sfHeight, sfFont];
   if sfLeft in Flags then
     X := MulDiv(FLeft, M, D) else
     X := FLeft;
   if sfTop in Flags then
     Y := MulDiv(FTop, M, D) else
     Y := FTop;
   if (sfWidth in Flags) and not (csFixedWidth in ControlStyle) then
     if sfLeft in Flags then
       W := MulDiv(FLeft + FWidth, M, D) - X else
       W := MulDiv(FWidth, M, D)
   else W := FWidth;
   if (sfHeight in Flags) and not (csFixedHeight in ControlStyle) then
     if sfHeight in Flags then
       H := MulDiv(FTop + FHeight, M, D) - Y else
       H := MulDiv(FTop, M, D)
   else H := FHeight;
   SetBounds(X, Y, W, H);
   if [sfLeft, sfWidth] * Flags <> [] then
     FOriginalParentSize.X := MulDiv(FOriginalParentSize.X, M, D);
   if [sfTop, sfHeight] * Flags <> [] then
     FOriginalParentSize.Y := MulDiv(FOriginalParentSize.Y, M, D);
   //Обратите внимание сюда
   if not ParentFont and (sfFont in Flags) then
     Font.Size := MulDiv(Font.Size, M, D);
 end;
 FScalingFlags := [];
end;


Это сообщение отредактировал(а) geckelberryfinn - 9.12.2004, 13:51
PM MAIL   Вверх
Akina
Дата 9.12.2004, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(geckelberryfinn @ 9.12.2004, 14:20)
Дело как, ни странно, в размере системного шрифта!

Этого не может быть потому что не может быть никогда. Из-за размера шрифта часть надписи может сползти, перенестись или не поместиться в контроле. Но вот размер и положение самого контрола от шрифта зависеть не могут. Или в оси творится что-то более чем ненормальное.

Цитата(Dominator @ 9.12.2004, 14:30)
Давайте тогда найдём этот ответ поскорей...

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
~FoX~
Дата 9.12.2004, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Akina
А если AutoSize = True ???


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
geckelberryfinn
Дата 9.12.2004, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
А если AutoSize = True ???

Не поможет

Akina
а ты попробуй smile Я этой проблемой уже не один месяц занимаюсь. Экспериментально установил сей факт.
Эту проблему я также обсуждал на этом форуме:
Тут
И тут...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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