Проблема с дочерней формой...
От: Аноним  
Дата: 04.05.05 08:43
Оценка:
Задача: По нажатию Кнопки показать окно с надписью "Подождите, плиз" и выполнить каку-то функцию. По завершению функции окно спрятать.

Делаю так:
MainForm::OnClick(...){
Wait->Show();
SomeFunc();
Wait->Hide();
}

Форма Wait появляется но ее дети(даже обычная подпись) не отображается...

как правильно это реализовать??

MainForm::OnMouseDown(...){
Wait->Show();
}

MainForm::OnMouseUp(...){
SomeFunc();
Wait->Hide();
}
Так работает — но это очень уж коряво...
Re: Проблема с дочерней формой...
От: tinytjan  
Дата: 04.05.05 08:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача: По нажатию Кнопки показать окно с надписью "Подождите, плиз" и выполнить каку-то функцию. По завершению функции окно спрятать.


А>Делаю так:

А>MainForm::OnClick(...){
Wait->>Show();
А> SomeFunc();
Wait->>Hide();
А>}

{...}

Может, надо просто в твою процедуру вставить обработку сообщений приложения.
В дельфи — Application.processMessages.
Re: Проблема с дочерней формой...
От: sergey82  
Дата: 04.05.05 08:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача: По нажатию Кнопки показать окно с надписью "Подождите, плиз" и выполнить каку-то функцию. По завершению функции окно спрятать.


А>Делаю так:

А>MainForm::OnClick(...){
Wait->>Show();
А> SomeFunc();
Wait->>Hide();
А>}

А>Форма Wait появляется но ее дети(даже обычная подпись) не отображается...


А>как правильно это реализовать??


А>MainForm::OnMouseDown(...){

Wait->>Show();
А>}

А>MainForm::OnMouseUp(...){

А> SomeFunc();
Wait->>Hide();
А>}
А>Так работает — но это очень уж коряво...


В общем как делал я. (пишу по памяти)
примерно так:

MainForm::OnClick(...){
   const auto_ptr<TFormMy*> Wait = new TFormMy(NULL);
   Wait->Show();
   Application->ProcessMessages();
   LockWindow(Wait->Handle);    // посмотри как точно называется эта API функция

   SomeFunc();

   LockWindow(NULL);

}


Фикус в том, что ты не даешь форме перерисовываться по время выполнения SomeFunc();
Re[2]: Проблема с дочерней формой...
От: Аноним  
Дата: 04.05.05 08:59
Оценка:
Здравствуйте, tinytjan, Вы писали:

T>Здравствуйте, Аноним, Вы писали:


А>>Задача: По нажатию Кнопки показать окно с надписью "Подождите, плиз" и выполнить каку-то функцию. По завершению функции окно спрятать.


А>>Делаю так:

А>>MainForm::OnClick(...){
Wait->>>Show();
А>> SomeFunc();
Wait->>>Hide();
А>>}

T>{...}


T>Может, надо просто в твою процедуру вставить обработку сообщений приложения.

T>В дельфи — Application.processMessages.

Ага, в Билдере та же фича! Псиб!
Re: Проблема с дочерней формой...
От: Shtirliz Россия  
Дата: 04.05.05 09:34
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Задача: По нажатию Кнопки показать окно с надписью "Подождите, плиз" и выполнить каку-то функцию. По завершению функции окно спрятать.


А>Делаю так:

А>MainForm::OnClick(...){
Wait->>Show();
А> SomeFunc();
Wait->>Hide();
А>}

А>Форма Wait появляется но ее дети(даже обычная подпись) не отображается...


А>как правильно это реализовать??


А>MainForm::OnMouseDown(...){

Wait->>Show();
А>}

А>MainForm::OnMouseUp(...){

А> SomeFunc();
Wait->>Hide();
А>}
А>Так работает — но это очень уж коряво...

Делай так:

MainForm::OnClick(...){
   Wait->Show();
   Wait->Update();
   SomeFunc();
   Wait->Hide();
}


И будет тебе счастье.
... << RSDN@Home 1.1.4 beta 6a rev. 440>>
Дункан Маклауд любил ходить в лес и издеваться над кукушками.
138385660
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.