Тема: Растягивающийся модальный диалог

Можно ли на VBA создать растягивающийся (Resizable) диалог и как это сделать?

Re: Растягивающийся модальный диалог

По-моему, нет.

Re: Растягивающийся модальный диалог

> Nikе
А чем же C++ не угодил? :)

Re: Растягивающийся модальный диалог

> Александр Ривилис
В шестой студии пример кода компилируется, а в 2005-й при компиляции файла реализации базового класса растягивающегося диалога выдается ошибка, какая именно подзабыл, т.к. сейчас под руками нет Студии.

Re: Растягивающийся модальный диалог

> Nikе
И всё? И на этом желание работать с ObjectARX/C++ пропало?

Re: Растягивающийся модальный диалог

> Nikе
Всё зависит: насколько это нужно и на какие глюки готовы пойти, и сколько потратить времени.
Приблизительный алгоритм такой:
1. Определяете перемещение мыши к краю формы.
2. Меняете курсор мыши на стрелку растяжения.
3. Фиксируете нажатие левой кнопки мыши.
4. Отслеживаете передвижение мыши и меняете размер окна, в зависимости от интервала смещения мыши.
Но предупреждаю: мышь надо двигать медленно, иначе, как толко мышь выйдет за пределы окна, реакция на изменение положения мыши прекратится.
Не знаю, возможно с помощью API функций можно отследить выход за пределы окна формы, надеюсь знатоки API ответят возможно это или нет. Мне например, это необходимо отследить в не модальных окнах, а как не знаю.

Re: Растягивающийся модальный диалог

> Александр Ривилис
Желание не пропало. В какой-то степени удовлетворил свой интерес. Программирую как любитель, не регулярно. До конца прошлого года баловался LISP+ObjectDCL, С++ же делает меня свободным от многих рамок и проторенных дорог, но взамен он требует мое время. Может быть через какое-то время после более серьезного изучения MFC мне и удастся сия затея.

Re: Растягивающийся модальный диалог

Зачем для такой ерунды 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

Re: Растягивающийся модальный диалог

+ в этих же обработчиках прописать изменение размера или положения контролов (мы ведь окно не просто из любви к искусству растягиваем).