Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Visual FOX 6 - учет разрешения экрана / 20 сообщений из 20, страница 1 из 1
20.09.2007, 14:39
    #34814674
almmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Visual FOX 6
На компьютере с разрешением 1280х1024 - форма выглядет нормально, а на компе с 1024х768
искажается.

Как сделать универсально ?

Не нашел конкретного ответа на форуме - хотя подобные вопросы встречаются.
...
Рейтинг: 0 / 0
20.09.2007, 14:43
    #34814693
MiklS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Т.Е. как искажается? не влазит в экран?
...
Рейтинг: 0 / 0
20.09.2007, 15:00
    #34814752
almmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Да - не умещается -
...
Рейтинг: 0 / 0
20.09.2007, 15:03
    #34814766
Visual FOX 6 - учет разрешения экрана
Универсально - это создание формы для малого разрешения и последующее растягивание на бОльшее разрешение.
...
Рейтинг: 0 / 0
20.09.2007, 15:07
    #34814780
MiklS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Если не помещаются элементы управления, то необходимо расчитывать их расположение в Resize формы. Если не помещается сама форма, то в Init нужно ещё раз програмно установить WindowState=2. Должно все поместиться. Вообще программы пишут исходя из разрешения экрана 800*600, ведь заранее не известно на каком компе она будет установлена!
...
Рейтинг: 0 / 0
20.09.2007, 15:08
    #34814782
almmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Другие варианты ?
...
Рейтинг: 0 / 0
20.09.2007, 15:11
    #34814802
MiklS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Можно, конечно поменять програмно разрешение экрана, но это уже совсем извращение!!!!
...
Рейтинг: 0 / 0
20.09.2007, 15:11
    #34814803
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
1. Разрабатывать исходя из меньшего разрешения (1024х768) я под 800x600 делаю
2. Прописывать Resize() для увеличения если гриды есть на форме
3. Если надо увеличение шрифта:
Метод Form.ResizeObject()
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
lpara toObj
* Изменение размеров и шрифта объектов формы
* Ориентируемся только по полностью развернотому окну программы
* Считаем, что разработка была под 800x600 со шрифтом  9 
local lnK,loC
* gnDefaultFontSize - размер шрифта заданный в настройках программы
if type('gnDefaultFontSize') = 'N'
	lnK = gnDefaultFontSize /  9 
else
	lnK = _screen.width /  800 
endif
if pemstatus(toObj, 'Top',  5 )
	with toObj
		.top = toObj.top * lnK
		.left = toObj.left * lnK
		.height = toObj.height * lnK
		.width = toObj.Width * lnK
	endwith
endif
if pemstatus(toObj, 'FontSize',  5 )
	toObj.FontSize = round(toObj.FontSize * lnK,  0 )
endif
do case
	case pemstatus(toObj, 'Controls',  5 )
		for each loC in toObj.Controls
			this.ResizeObject(loC)
		endfor
	case pemstatus(toObj, 'Pages',  5 )
		for each loC in toObj.pages
			this.ResizeObject(loC)
		endfor
	case pemstatus(toObj, 'Buttons',  5 )
		for each loC in toObj.Buttons
			this.ResizeObject(loC)
		endfor
endcase
Запускать ThisForm.ResizeObject(ThisForm)
...
Рейтинг: 0 / 0
20.09.2007, 15:13
    #34814819
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
MiklSМожно, конечно поменять програмно разрешение экрана, но это уже совсем извращение!!!! А если 15" панелька например? Тут 1024х768 без вариантов
...
Рейтинг: 0 / 0
20.09.2007, 15:16
    #34814828
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
almmagДругие варианты ? Делать отдельно форму под каждое разрешение.
...
Рейтинг: 0 / 0
20.09.2007, 15:19
    #34814844
MiklS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Ну это я в качестве извращения... К стати совсем забыл, ведь можно просто установить свойство формы ScrollBars=3, или 1, 2. Появятся прокрутки!!!! Тоже решение проблеммы. Вот только не помню под 6 можно ли это сделать?
...
Рейтинг: 0 / 0
20.09.2007, 15:26
    #34814875
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
MiklSНу это я в качестве извращения... К стати совсем забыл, ведь можно просто установить свойство формы ScrollBars=3, или 1, 2. Появятся прокрутки!!!! Тоже решение проблеммы. Вот только не помню под 6 можно ли это сделать? Можно в 6-ке. Только вряд ли пользователь такому приколу обрадуется.
По хорошему - если есть гриды, то надо Resize() делать. Если одни поля ввода, то pageframe поставить.
...
Рейтинг: 0 / 0
20.09.2007, 15:33
    #34814903
MiklS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Про Resize я уже писАл выше и про разрешение тоже, но ведь человек спросил другие варианы. Так пусть пробует все. А на счет прокруток в форме, так это как построить интерфейс. Мы же используем например EditBox с прокруткой!!! и ничего, пользователи в обморок не падают!
...
Рейтинг: 0 / 0
20.09.2007, 15:54
    #34815002
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
MiklSПро Resize я уже писАл выше и про разрешение тоже, но ведь человек спросил другие варианы. Так пусть пробует все. А на счет прокруток в форме, так это как построить интерфейс. Мы же используем например EditBox с прокруткой!!! и ничего, пользователи в обморок не падают!
Используем, и объект IE используем. Только при этом прокрутка изначально закладывается и расположение элементов с ее учетом выбирается. То что прокрутка зло - я не говорил.

Я к тому что надо делать хорошо, а не лишь бы работало. А almmag похоже хочет одним кликом проблему решить.
...
Рейтинг: 0 / 0
21.09.2007, 07:00
    #34816374
almmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Всем спасибо.
В примере DIMA_T
В первой строчке программы : lpara toObj - что это - я не понял жту строчку
...
Рейтинг: 0 / 0
21.09.2007, 07:33
    #34816395
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
almmagВсем спасибо.
В примере DIMA_T
В первой строчке программы : lpara toObj - что это - я не понял жту строчку Функция рекурсивная. Параметер toObj - ссылка на объект контейнер. т.е. изначально на форму: ThisForm.ResizeObject(ThisForm)
а если внутри формы есть еще контейнеры (pageframe например) то она вызывает сама себя this.ResizeObject(loC) для каждого контейнера

Я вызов делаю из Init() формы:
Код: plaintext
1.
2.
3.
4.
if type('gnDefaultFontSize') = 'N' or _screen.WindowState =  2 
	thisform.ResizeObject(thisform)
endif
thisform.AutoCenter = .t.

gnDefaultFontSize - глобальная переменная. Инициализируется при старте программы:
Код: plaintext
1.
public gnDefaultFontSize
gnDefaultFontSize =  12 
...
Рейтинг: 0 / 0
21.09.2007, 11:00
    #34816904
almmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Нет в форме метода ResizeObject()
Может ResizeEvent ?
...
Рейтинг: 0 / 0
22.09.2007, 10:03
    #34819299
qwertyqwerty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Где и как пересчитывать размеры и координаты визуальных объектов, а так же пересчитывать размеры шрифтов ... дело техники ... суть не в том.

Пока например у меня все более мене нормально получилось только при отключенной функции "Отображать содержимое окна при перетаскивании" в "свойства Экрана", закладка эффекты в винде. Можно менять размер формы и при этом ресайзится все на форме с сохранением пропорций!

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


З.ы.
действиьельно для 6,7,8,9 - о других версиях не знаю :)
...
Рейтинг: 0 / 0
22.09.2007, 10:42
    #34819315
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
almmagНет в форме метода ResizeObject()
Может ResizeEvent ? Правильно. Его создать надо меню Form->New metod, а потом этот код туда вставить
...
Рейтинг: 0 / 0
22.09.2007, 10:54
    #34819323
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FOX 6 - учет разрешения экрана
Забыл добавить у меня этот метод присутствует в классе формы, на основе которого (или его производных) делаю все формы проекта.
Один раз прописал и забыл.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Visual FOX 6 - учет разрешения экрана / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]