Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > проблемма с Form->Hide()


Автор: bi0s_0x269 17.1.2008, 23:20
есть программка которая использует компонент TTrayIcon.
Главная форма: fmMain
компонент TTrayIcon: tiTray

в начале работы вызываю следующий код:

fmMain->Hide();
fmMain->tiTray->Visible = true;

в конце работы:

fmMain->tiTray->Visible = false;
fmMain->Show();

Проблема в том что иногда при вызове первого кода главное окно не прячется а остается видимым.
гдето 1 из 10 раз. как повезет! никак не пойму в чем дело(

Автор: Sharkfire 17.1.2008, 23:41
Цитата(bi0s_0x269 @  17.1.2008,  23:20 Найти цитируемый пост)
в начале работы вызываю следующий код:

Точнее ... в каком месте пишешь 

Автор: bi0s_0x269 18.1.2008, 00:07
Цитата(Sharkfire @ 17.1.2008,  23:41)
Цитата(bi0s_0x269 @  17.1.2008,  23:20 Найти цитируемый пост)
в начале работы вызываю следующий код:

Точнее ... в каком месте пишешь

это клиент сетевой программы! обработчик кнопки "Подключение"
создает поток! в потоке через Synchronize вызывается этот код!

я пробовал и без Synchronize и без потока... всеравно... раз через раз исчезает(

Автор: source777 18.1.2008, 00:11
Цитата

я пробовал и без Synchronize и без потока... всеравно... раз через раз исчезает(
ты бы код целтком привёл, а то очень странное описание проблемы...
Можно ещё ShowWindow(Application->Handle, SW_HIDE); попробовать для скрытия окна...

Автор: bi0s_0x269 18.1.2008, 00:27
все вроде решилась проблемма... причина была в том что перед кодом скрытия окна
вызывалась процедура соединения с сервером...
поменял их местами вроде проблема исчезла...

бред какойто но факт

Автор: Sharkfire 18.1.2008, 11:01
Цитата(source777 @  18.1.2008,  00:11 Найти цитируемый пост)
ShowWindow(Application->Handle, SW_HIDE);

Это операция для того что бы скрывать кнопку в таскбаре

Автор: xvr 18.1.2008, 14:33
Цитата(bi0s_0x269 @ 17.1.2008,  23:20)
есть программка которая использует компонент TTrayIcon.
Главная форма: fmMain
компонент TTrayIcon: tiTray

в начале работы вызываю следующий код:

fmMain->Hide();
fmMain->tiTray->Visible = true;

в конце работы:

fmMain->tiTray->Visible = false;
fmMain->Show();

Проблема в том что иногда при вызове первого кода главное окно не прячется а остается видимым.
гдето 1 из 10 раз. как повезет! никак не пойму в чем дело(

Была аналогичная проблема - программа должна была целиком минимизироваться в иконку прямо при старте (BCB 6.0), помогло только это:
Код

void __fastcall TForm1::FormActivate(TObject *Sender)
{
 TrayIcon1->Minimize();
 OnActivate=NULL;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)