IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Изменение координат элементов (winapi)
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Здравствуйте,
Вообщем, пробую писать на чистом АПИ в Делфи. (Предупреждая вопрос "Зачем?" - "Надо, хочу научиться"=) )
Создаю окно, добавляю на него несколько различных элементов 'listbox', 'edit' и пр.
Как сделать так, чтобы расположение этих элементов зависело от размеров окна, которое изменяется в процессе работы. Т.е. увеличил я окно направо и кнопки сдвинулись туда же, вместе с размерами 'listbox'a и т.п.
Уверен, что это все связано со структурой TRect и функцией GetClientRect. Но вот как их для этого использовать я понять не могу =(? Перепробовал различные варианты. Need help.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Создаешь контрол вот так:
  GetClientRect(hWindow, Rect);
hEditWnd := CreateWindow('Edit', nil,
ws_child or ws_visible or es_multiline or
ws_vscroll or ws_hscroll or es_autohscroll or es_autovscroll,
0, 0,
(rect.right - rect.left) - 50, { Чтобы не на все окно, а на 50 пикс. меньше по ширине }
(rect.bottom - rect.top),
hWindow,
0,
system.MainInstance, nil);


и обрабатываешь WM_SIZE (при изменении размеров родительского окна что еще можно обрабатывать? smile.gif ) в оконной функции:
    WM_SIZE:
Begin
MoveWindow(hEditWnd, 0, 0, loword(lparam) - 50, hiword(lparam), true);
// Второй и третий параметры - смещение по ширине/высоте относительно
// родительского окна, четвертый и пятый - новая ширина/высота контрола
Exit;
End;



(я сразу говорю, лень было запускать Дельфи, набросал на FPC, поэтому с синтаксисом могут быть накладки, но это работает)
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 15:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name