Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как быть с разрешением экрана в VFP7  [new]
Spavel_74
Member

Откуда:
Сообщений: 54
Пишу проект в одном разрешении экрана,компилирую. Запускаю с меньшим разрешением экрана и вижу что формы в экран не влазят. Как с этим боротся. Хочется что бы формы подстраивались под разрешение.
17 окт 04, 20:51    [1040001]     Ответить | Цитировать Сообщить модератору
 Re: Как быть с разрешением экрана в VFP7  [new]
*Ноль*
Guest
#define SM_CXSCREEN             0
#define SM_CYSCREEN             1

DECLARE Integer GetSystemMetrics IN WIN32API integer

nWidth = GetSystemMetrics(SM_CXSCREEN)
nHight = GetSystemMetrics(SM_CYSCREEN)

Допустим oForm, твой объект формы, перед Show() ему:

with oForm
.Top = 1
.Left =1
.Width =  nWidth 
.Height = nHeight
.Show(1)
endwith
Так пойдет ?
Можно еще через WMI, но там по ресурсам накладно.
17 окт 04, 21:30    [1040022]     Ответить | Цитировать Сообщить модератору
 Re: Как быть с разрешением экрана в VFP7  [new]
Spavel_74
Member

Откуда:
Сообщений: 54
А как быть с объектами на форме или так поступать с каждым объектом на форме
17 окт 04, 21:38    [1040028]     Ответить | Цитировать Сообщить модератору
 Re: Как быть с разрешением экрана в VFP7  [new]
*Ноль*
Guest
Тут все просто, только мне надо узнать, у тебя форма как объект в VCX или просто форма в дизайнере , как SCX ?
17 окт 04, 21:41    [1040032]     Ответить | Цитировать Сообщить модератору
 Re: Как быть с разрешением экрана в VFP7  [new]
Spavel_74
Member

Откуда:
Сообщений: 54
Обыкновенная форма (SCX)
17 окт 04, 21:46    [1040035]     Ответить | Цитировать Сообщить модератору
 Re: Как быть с разрешением экрана в VFP7  [new]
*Ноль*
Guest
Начну с простого.
Просто пишешь в метод Init формы такой код:

* Это метод Init
#define SM_CXSCREEN             0
#define SM_CYSCREEN             1

DECLARE Integer GetSystemMetrics IN WIN32API integer
Local nWidth,nHight

nWidth = GetSystemMetrics(SM_CXSCREEN)
nHight = GetSystemMetrics(SM_CYSCREEN

with thisform
.Top = 1
.Left =1
.Width =  nWidth 
.Height = nHeight
endwith
А как ты ее активизируешь?
Советую делать так(это в модуле который запускает твою форму, или в методе другого объекта, не столь важно):

Если у тебя форма как SCX:
Public loObject
loObject =  .NULL.
DO FORM your_form NAME loObject   Noshow
if vartype(loObject) !="O" or Isnull(loObject)
    return .f.
endif
loObject.Show()
* loObject.Show() -  модально
А в ините твоей формы уже лежит код который я привел выше.
Все делжно получиться.
17 окт 04, 21:59    [1040048]     Ответить | Цитировать Сообщить модератору
 Re: Как быть с разрешением экрана в VFP7  [new]
*Ноль*
Guest
loObject.Show(1) -  модально
17 окт 04, 22:04    [1040053]     Ответить | Цитировать Сообщить модератору
 Re: Как быть с разрешением экрана в VFP7  [new]
*Ноль*
Guest
А если что-нибудь хочешь сделать с объектами на форме , то тебе нужно в методе Resize() формы это сделать, то есть сдвинуть по вычесленным тобой коррдинатам. Но такого не нужно, если разрабатываешь форму под заранее
минимальное разрешение клиента, например 800x600.
17 окт 04, 22:19    [1040085]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить