Тема: Растягивающийся модальный диалог
Можно ли на VBA создать растягивающийся (Resizable) диалог и как это сделать?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Растягивающийся модальный диалог
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Можно ли на VBA создать растягивающийся (Resizable) диалог и как это сделать?
> Александр Ривилис
В шестой студии пример кода компилируется, а в 2005-й при компиляции файла реализации базового класса растягивающегося диалога выдается ошибка, какая именно подзабыл, т.к. сейчас под руками нет Студии.
> Nikе
И всё? И на этом желание работать с ObjectARX/C++ пропало?
> Nikе
Всё зависит: насколько это нужно и на какие глюки готовы пойти, и сколько потратить времени.
Приблизительный алгоритм такой:
1. Определяете перемещение мыши к краю формы.
2. Меняете курсор мыши на стрелку растяжения.
3. Фиксируете нажатие левой кнопки мыши.
4. Отслеживаете передвижение мыши и меняете размер окна, в зависимости от интервала смещения мыши.
Но предупреждаю: мышь надо двигать медленно, иначе, как толко мышь выйдет за пределы окна, реакция на изменение положения мыши прекратится.
Не знаю, возможно с помощью API функций можно отследить выход за пределы окна формы, надеюсь знатоки API ответят возможно это или нет. Мне например, это необходимо отследить в не модальных окнах, а как не знаю.
> Александр Ривилис
Желание не пропало. В какой-то степени удовлетворил свой интерес. Программирую как любитель, не регулярно. До конца прошлого года баловался LISP+ObjectDCL, С++ же делает меня свободным от многих рамок и проторенных дорог, но взамен он требует мое время. Может быть через какое-то время после более серьезного изучения MFC мне и удастся сия затея.
Зачем для такой ерунды ObjectARX/C++ :) если можно и так. Хотел вначале на API написать, а потом подумал лучше по проще забацать :)
Dim xx As Integer Dim yy As Integer 'dobavite 1 Image1 na formu 'v Image1 podgruzite kartinky ugolka okna kotoroe mojet izmenati razmery Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) xx = X yy = Y End Sub Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) UserForm1.Height = UserForm1.Height - (yy - Y) UserForm1.Width = UserForm1.Width - (xx - X) End Sub Private Sub UserForm_Initialize() Image1.top = UserForm1.Height - 40 Image1.Left = UserForm1.Width - 30 Image1.MousePointer = 8 End Sub Private Sub UserForm_Resize() Image1.top = UserForm1.Height - 40 Image1.Left = UserForm1.Width - 30 End Sub
+ в этих же обработчиках прописать изменение размера или положения контролов (мы ведь окно не просто из любви к искусству растягиваем).
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Растягивающийся модальный диалог
Форум работает на PunBB, при поддержке Informer Technologies, Inc