Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Вниз

хммм. 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
15-1186590146
Mozart
2007-08-08 20:22
2007.09.09
Я в шоке от таких запросов!!!!


15-1186868686
lookin
2007-08-12 01:44
2007.09.09
Непонятность про мужиков...


15-1187075975
Vlad Oshin
2007-08-14 11:19
2007.09.09
Хочу быть директором :)


15-1185992894
Курдль
2007-08-01 22:28
2007.09.09
Кризис меломана или "что слушать?"


9-1159926882
VolanD666
2006-10-04 05:54
2007.09.09
Сглаживаем тени?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский