Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.09;
Скачать: CL | DM;

Вниз

хммм. Visible := true; <-- как на API ?   Найти похожие ветки 

 
DevilDevil ©   (2007-08-14 16:42) [0]

Проблема вообще вот в чём...

Используется несколько потоков, один из которых вызывает Синхронайз()...

В определённый момент приложение зависает.
Опытным путём было установлено, что программа зависает в момент Компонент.Visible := true; Ранее упомянутый поток тоже останавливается в момент синхронизации.

Предположение следующее...
Компонент каким то образом посылает себе какое то сообщение.
"Одновременно" в OnIdle обрабатывается неглавный поток, ...

В общем, внесите во весь этот бред смысл; почему SetVisible(true) может приводить к зависанию?

P.S. два этих потока (главный и неглавный) никак не связаны. особенно через этот компонент.
P.P.S. вот я и пробовал отослать компоненту сообщение для визуализации, избегая стандартного Visible подхода... но так и не понял, как это делается на WinApi. Ни ShowWindow, ни WM_SHOWWINDOW окно (компонент) не визуализировали.


 
Eraser ©   (2007-08-14 16:50) [1]


> DevilDevil ©   (14.08.07 16:42) 

для стандартных делфевских форм лучше дейтсвительно испольовать VCL средства, а не winAPI, иначе проблемы могут быть.

попробуй сразу после и непосредственно перед вызовом SetVisible вызывать Application.ProcessMessages, хотя лучше конечно код покажи.


 
DevilDevil ©   (2007-08-14 17:10) [2]

не помогает.

 int PanelsCount = FList->Count;

 for (int i = 0; i < PanelsCount;i++)
 {
   TActivePanel* P  = (TActivePanel*)FList->Items[i];
   if (P == Panel)
      {
       P->SetTitleColors(P->ColorActive1, P->ColorActive2);   //ACTIVE1, ACTIVE2);
       if (RestoreOnMinimize && P->Minimized) {P->Maximized = false; P->Minimized = false;}
       Application->ProcessMessages();
       if (!P->Visible) P->Visible = true;
       //if (!P->Visible) SendMessage(P->Handle, WM_SHOWWINDOW, 1, 0);
       //ShowWindow(P->Handle, SW_SHOWNORMAL);

       P->BringToFront();
      }
   else
      P->SetTitleColors(P->ColorInactive1, P->ColorInactive2);//INACTIVE1, INACTIVE2);
 }


Всё виснет по Visible = true;


 
MetalFan ©   (2007-08-14 17:33) [3]

а иде тут паскаль???


 
DevilDevil ©   (2007-08-14 17:52) [4]

for i := 0 to PanelsCount-1 do
begin
   P  = TActivePanel(FList[i]);

  if P = Panel) then
  begin
     P.SetTitleColors(P.ColorActive1, P.ColorActive2);
     if RestoreOnMinimize or P.Minimized then
        begin
           P.Maximized := false;
           P.Minimized  := false;
        end;

     Application.ProcessMessages;
     P.Visible := true;

     P.BringToFront;
  end
  else
     P.SetTitleColors(P.ColorInactive1, P.ColorInactive2);
end;


P.S. вся работа здесь производится с моим компонентом; но виснет именно на P.Visible := true;


 
Eraser ©   (2007-08-14 18:07) [5]


> P.S. вся работа здесь производится с моим компонентом;

а, ну так с этого и надо было начинать ) тут уж нужно смотреть реализацию свойства компонента. думаю ошибка в 17 строке.


 
DevilDevil ©   (2007-08-14 18:10) [6]

> думаю ошибка в 17 строке.

Врядли... комментарии вроде не компилируются...

А если серьёзно, в плане Visible, он остался вся тем же TCustomPanel


 
Eraser ©   (2007-08-14 18:13) [7]


> DevilDevil ©   (14.08.07 18:10) [6]

дома гляну возможную причину, сейчас под рукой Делфи нет.



Страницы: 1 вся ветка

Текущий архив: 2007.09.09;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.034 c
2-1187172658
vegarulez
2007-08-15 14:10
2007.09.09
Вопрос про отчистку памяти.


3-1178986882
olevacho_
2007-05-12 20:21
2007.09.09
Узнать дату на сервере


3-1178640142
Empleado
2007-05-08 20:02
2007.09.09
А никто не использует TSQLMonitor (SqlExpr.pas)?


2-1187255588
vitv
2007-08-16 13:13
2007.09.09
RxSysTray-проблема


2-1187433176
Kikoz
2007-08-18 14:32
2007.09.09
Продолжительность MP3





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский