Еще раз про MDI =)

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

Еще раз про MDI =)

Сообщение _NeoN_ » 08.10.2003 (Ср) 17:41

Есть MDI форма
name=frmMain
есть 2 дочерние формы
name=frmStatus
name=frmDoc

ну и есть код
Код: Выделить всё
....
Private Sub MDIForm_Load()
dim frm as new frmDoc
frmStatus.Show
frm.show
End Sub
....

ну вот.. есть парочка вопросов:
как сделать чтобы frmstatus не закрывалась... пробовал воткнуть в нее такой код:
Код: Выделить всё
Private Sub Form_Unload(Cancel As Integer)
Cancel = 1
End Sub

но тогда не только она не закрывается но и материнская форма тоже.
и еще. почему с самого начала появляетмя 2 окна frmdoc, то есть я создаю одно, и одно создается само... почему?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 08.10.2003 (Ср) 17:57

Обрабатывай событие QueryUnload в нем есть параметр UnloadMode.

Анализируя его ты сможешь определить, отчего закрывается форма и соотвественно решать закрывать ее или нет.

А насчет 2 копий - так это понятно. Ты создаешь 1 а система автоматически загружая MDI создает еще 1.

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 08.10.2003 (Ср) 18:26

ну дык я про енто и говорю... как сделать чтобы система не создавала ничего??? или назначить создаваемую другую форму

Ducis
Бывалый
Бывалый
 
Сообщения: 232
Зарегистрирован: 24.04.2002 (Ср) 15:36

Сообщение Ducis » 09.10.2003 (Чт) 16:29

Делая так:
dim frm as new frmDoc
frm.show
ТЫ создаешь копию frmDoc, а не система. Комп делает то, что ему говорят, а не то, что мы хотим :-). Философия, однако.
Если сделать dim frm as Form, вместе с set frm = frmDoc, то будешь ссылаться в frm на frmDoc. Но не понятно, пока, зачем. Если бы вопрос стоял показывать одну из форм в зависимости от условия, то тут set не заменим:
dim frm as Form
if условие then
set frm = frmDoc
else
set frm = frmStatus
end if
frm.show
set frm = nothing
Только visible для форм предварительно сделать False

А по поводу того, что бы оставлять дочернюю форму после выгрузки MDI формы, то это невозможно.
Понимаешь? (с)Б.Ельцин.

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 10.10.2003 (Пт) 12:58

Ducis, ты неправильно меня понял наверное... я вообще не понял что ты написал... но я понял в чем у меня проблема. Просто у меня стартовая форма была frmDoc, поэтому она сначала и появлялась.. а теперь поставил стартовой Mdi форму и все ок =)

Ducis
Бывалый
Бывалый
 
Сообщения: 232
Зарегистрирован: 24.04.2002 (Ср) 15:36

Re: Еще раз про MDI =)

Сообщение Ducis » 10.10.2003 (Пт) 14:07

Вот вопрос:
_NeoN_ писал(а):и еще. почему с самого начала появляетмя 2 окна frmdoc, то есть я создаю одно, и одно создается само... почему?

Вот ответ:
Первый раз ты создал форму frmDoc в режиме дизайна. А второй раз (ее копию) кодом
dim frm as new frmDoc
frm.show
После выполнения кода ты по-любому имеешь 2 одинаковые формы frmDoc - оригинал и копию. Зачем?
Понимаешь? (с)Б.Ельцин.

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 12.10.2003 (Вс) 7:54

2Ducis:
Забей Сеня ©Братва и кольцо

Ты спрашиваешь "ЗАЧЕМ" вот и я хотел спросить как избавиться от этого, ну сделал! Спасибо всем =)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList