Создание формы с нуля

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Создание формы с нуля

Сообщение Alexanbar » 06.04.2006 (Чт) 10:38

Хотелось бы создать форму полностью программно.
Пробовал так:


Код: Выделить всё

Set frm=CreateObject("VB.Form","Form1")


и так:
Код: Выделить всё
Set frm = Forms.Add("form2")


- не работает.

Ну и, к созданной форме добавить кнопки и поддержку событий их нажатия. Надеюсь, что Controls.Add и WithEvents помогут.

Начальные условия: в проекте нет форм, из которых создать новую как
Код: Выделить всё
Set frm=New Form1

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.04.2006 (Чт) 10:42

Alexanbar
Дык это.
New Form1 - это создание экземпляра класса по имени Form1. Если класс не описан, чё создаём?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 06.04.2006 (Чт) 10:43

Если в проекте нет форм, значит нет класса на основе которого можно сделать экземпляр класса. Следовательно идея не прокатит, разве что создавать форму как окно и заполнять ее соответствующим содержимым используя API, но это задачка мягко говоря непростая, да и не стоит такое делать по моему разумению
Весь мир матрица, а мы в нем потоки байтов!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.04.2006 (Чт) 10:52

CreateWindowEx

например, создать свой тултип:
Код: Выделить всё
hWndTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASSA, "", WS_POPUP Or dwFlags, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWndParent, 0, App.hInstance, ByVal 0&)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.04.2006 (Чт) 10:58


alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.04.2006 (Чт) 11:04

Konst_One писал(а):CreateWindowEx

Ты только забыл добавить, что WindowProc тоже должен быть своим :)
ИМХО, оно того не стоит.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.04.2006 (Чт) 11:11

конечно свой, я дальше ссылочки дал на полный цикл регистрации своего класса окна и его создания с обработчиком событий

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.04.2006 (Чт) 11:14

Alexanbar, вон мой проект с ActiveX-контролом без форм:
http://bbs.vbstreets.ru/viewtopic.php?t=9370

Можешь брать за основу ;-)
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Создание формы с нуля

Сообщение Andrey Fedorov » 06.04.2006 (Чт) 11:19

Alexanbar писал(а):Хотелось бы создать форму полностью программно.


Код: Выделить всё
Dim WithEvents f as Form

....

Set f = New Form
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.04.2006 (Чт) 11:23

Andrey Fedorov
не все так просто, проверь 8)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 06.04.2006 (Чт) 11:32

Konst_One писал(а):Andrey Fedorov
не все так просто, проверь 8)


Вай давно делал - забыл уже все.
Не сработает:

Код: Выделить всё
    Set f = New Form


Однако никто не мешает создать новую форму на основе уже имеющегося шаблончика (можно пустой формы-заготовки или уже с каким-то набором компонентов, что может быть даже удобнее). Не совсем с нуля, но и ничем, собственно, не хуже.

Код: Выделить всё
    Set f = New FormTemplate
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.04.2006 (Чт) 11:49

Andrey Fedorov
Топик таки прочитай с начала :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 185

    TopList