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

Вниз

Глюк с отображением вкладок PageControl a   Найти похожие ветки 

 
dj kondakov   (2010-03-13 08:50) [0]

Доброго времени суток! Натолкнулся на странный глюк и не знаю, как от него избавиться.
На главной форме приложения расположен PageControl с тремя вкладками. Есть отключаемая возможность запуска в свернутом состоянии и сворачивания в трей, тоже отключаемая. Проблема вот в чем. Если включены обе возможности (то есть приложение при запуске минимизируется в трей), то при его восстановлении оттуда PageControl показывает только активную вкладку, сколько ни переключай его на другие. В других случаях (запуск просто свернутым, сворачивание в трей и восстановление при ручном запуске) все нормально.
Тексты:
Процедура восстановления приложения
procedure TForm1.RestoreMainForm;
var
 i, j: integer;
begin
 Application.ShowMainForm:=true;
 ShowWindow(Application.Handle, SW_RESTORE);
 ShowWindow(Application.MainForm.Handle, SW_RESTORE);
 if not ShownOnce then begin
  for I := 0 to Application.MainForm.ComponentCount -1 do
    if Application.MainForm.Components[I] is TWinControl then
      with Application.MainForm.Components[I] as TWinControl do
        if Visible then begin
          ShowWindow(Handle, SW_SHOWDEFAULT);
          for J := 0 to ComponentCount -1 do
            if Components[J] is TWinControl then
              ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
        end;
    ShownOnce := True;
end;
end;

Процедура сворачивания приложения
procedure TForm1.HideMainForm;
begin
 Application.ShowMainForm:=false;
 ShowWindow(Application.Handle, SW_HIDE);
 ShowWindow(Application.MainForm.Handle, SW_HIDE);
end;

Код из файла проекта, отвечающий за сворачивание при запуске:
Application.CreateForm(TForm1, Form1);
 if Form1.CheckBox2.Checked then begin
   if Form1.CheckBox3.Checked then begin
     Form1.HideMainForm;
     Form1.CreateTrayIcon;
   end else
     Application.Minimize;
   end;
 Application.Run;

Я сам подозреваю процедуру восстановления. Но в чем проблема, понять не могу. Помогите, плиз!


 
Вася   (2010-03-13 09:52) [1]

А зачем цикл по компонентам и прямой вызов API-функций в процедуре восстановления? Для чего так написано?


 
dj kondakov   (2010-03-13 10:01) [2]

Насколько я понял при чтении книги, откуда взят этот код, при создании формы в свернутом состоянии все компоненты на ней будут невидимы, и поэтому их надо показывать каждый по отдельности.


 
Вася   (2010-03-13 10:23) [3]

тут какая то адская смесь из управления видимостью через свойство Visible и прямым применением API, что само по себе может привести к противоречиям, так как контролы состояние запоминают в приватном поле FVisible.


> при создании формы в свернутом состоянии все компоненты
> на ней будут невидимы, и поэтому их надо показывать каждый
> по отдельности


Это неверно.
Убери цикл по компонентам, и убери вызовы API, работай через свойства объектов


 
dj kondakov   (2010-03-13 10:33) [4]

Мда... Закомментил цикл и заменил вызовы ShowWindow коротеньким Form1.Show;. Все заработало как надо! Ну и напишут же бред иногда в умных книжках...
Вася, спасибо!



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.066 c
15-1264341586
Kolan
2010-01-24 16:59
2010.08.27
Исходники DMClient а доступны для всех желающих


15-1262712162
Anatoly Podgoretsky
2010-01-05 20:22
2010.08.27
Режим бога в Вигдоус 7


2-1273825369
Elephon
2010-05-14 12:22
2010.08.27
Заполнение listview


15-1271921592
АлександрВторой
2010-04-22 11:33
2010.08.27
Отчеты в базах данных в Delphi 2009


15-1267771411
oxffff
2010-03-05 09:43
2010.08.27
Буду в Москве с 22.03 по 26.03. Был бы рад встрече.





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