Octanium

Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Доброго времени суток. У меня БЫЛА проблема решение которой я не смог найти, но спустя "некоторое время" удалось склеить рабочий код, может кому пригодится мало ли. Проблема: Есть диалоговое окно, размер которого пользователь может произвольно изменять, в добавок в диалоговом окне имеются две кнопки, которые расположены в правом нижнем углу, ну и разумеется они не перемещаются в зависимости от размера диалогового окна. Нужно сделать так что-бы кнопки всегда находились в правом нижнем углу. Собственно говоря вот как это можно осуществить: В свойства диалога, на вкладке "On Show": Код: -- Запоминаем изначальный (минимальный) размер диалогового окна WinSize = DialogEx.GetSize(); -- Запоминаем изначальную позицию объектов которые в будущем будут перемещаться xbtnok = xButton.GetPos("xButton1"); xbtncnsl = xButton.GetPos("xButton2"); | В свойства диалога, на вкладке "On Size": Код: -- Берем текущий размер диалогового окна DialGSize = DialogEx.GetSize(); -- Отнимаем от текущего размера диалогового окна изначальный и получаем разницу mathwinw = DialGSize.Width - WinSize.Width mathwinh = DialGSize.Height - WinSize.Height -- Прибавляем разницу к изначальной позиции объекта corrw = xbtnok.X + mathwinw corrh = xbtnok.Y + mathwinh -- Двигаем объект xButton.SetPos("xButton1", corrw, corrh); -- Аналогично но уже со вторым объектом corrw = xbtncnsl.X + mathwinw corrh = xbtncnsl.Y + mathwinh xButton.SetPos("xButton2", corrw, corrh); | Ну вот в принципе и все, теперь кнопочки не зависимо от размера диалогового окна находятся в правом нижнем углу. Еще момент, если текущий размер окна будет меньше изначального, обекти начнут сходить с ума!. Пример: (рассмотрим только высоту) если в свойствах вы прописали минимальною высоту 200, то и текущая тоже должна быть 200, если пользователь изменит высоту допустим до 180, при расчетах будет - (минус), и вместо разницы которую нужно прибавить программа получит значение -20, а это означает что объект пойдет в противоположную сторону, другими словами не туда куда нужно. но если вам нужно поменять размер окна на более большой, минимального вам мало, можно это сделать вот так. В свойства диалога, на вкладке "On Show": Код: -- Запоминаем изначальный (минимальный) размер диалогового окна WinSize = DialogEx.GetSize(); -- Запоминаем позицию изначальную позицию объектов которые в будущем будут перемещаться xbtnok = xButton.GetPos("xButton1"); xbtncnsl = xButton.GetPos("xButton2"); -- Задать свойства диалога tblDialogProps = {}; tblDialogProps.Width = 600; tblDialogProps.Height = 800; -- Установить размер окна Application.SetDialogProperties("Dialog2", tblDialogProps); | В таком случае все будет работать нормально. Надеюсь это кому-то пригодится =) | Всего записей: 50 | Зарегистр. 07-02-2011 | Отправлено: 01:33 19-05-2014 | Исправлено: Octanium, 02:03 19-05-2014 |
|