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

Вниз

Опять про сворачивание дочерних окно   Найти похожие ветки 

 
Димыч ©   (2006-11-30 11:26) [0]

Изучив несколько ответов на вопрос "Почему дочерние окно сворачивается не в панель задач а слева над ним?", понял что ответ один нужно дочернее окно создавать самому, при этом родителем назначать DesktopWindow так как указано ниже

procedure TForm1.FormCreate(Sender: TObject);
begin
frm:=TForm2.CreateParented(GetDesktopWindow);
frm.Show;
show;
end;


Моя проблема вследующем формы (главная и дочерняя) уже созданы обычным способом
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);

и имеют сложную конструукцию (весь интерфейс рисуется на них своими силами), и только потом я столкнулся с тем самым явлением (некрасивое сворачивание дочернего окна) и не представляю как теперь от него избавиться. Неужели переписывать всё заново, может есть какой то способ задать дочерней форме родителя DesktopWindow например при её создании (в procedure TForm2.FormCreate(Sender: TObject))


 
Cawa ©   (2006-11-30 13:12) [1]

Ни каких проблем удали из проекта
Application.CreateForm(TForm2, Form2);
,а там же из подключения модуль ( Unit2 in "Unit2.pas" {Form2} ).
А в главном юните в Uses пропиши модуль с твоей формой.
После можешь создавать форму и вызывать её.


 
Димыч ©   (2006-11-30 13:35) [2]

Дело в том что модуль Unit2  ссылается на модуль Unit1, если сделать ссылку в Unit1  на Unit2  будет ошибка, конечно модно её устранить на на это надо время, я надеялся на то что можно указать родителя дочерней форме при её создании обычным способом


 
Юрий Зотов ©   (2006-11-30 14:01) [3]

> Димыч ©   (30.11.06 13:35) [2]

1. Ссылку в Unit1 на Unit2 можно сделать в implementation. Ошибки не будет.

2. Можно в дочерней форме перекрыть CreateParams или CreateWnd и там прописывать Desktop, как Parent.


 
Димыч ©   (2006-11-30 14:07) [4]

Вот второй вариант мне очень нравиться, только я не знаток перекрываний если не трудно приведите пример.


 
Димыч ©   (2006-11-30 14:31) [5]

написал вот так

procedure Tform5.CreateParams(var Params: TCreateParams);
begin
params.WndParent:=GetDesktopWindow;
inherited;
end;


неработает, окно сворачивается как и раньше


 
Димыч ©   (2006-11-30 14:33) [6]

Все нашел ошибку

procedure Tform5.CreateParams(var Params: TCreateParams);
begin
inherited;
params.WndParent:=GetDesktopWindow;
end;


Спасибо за советы


 
Юрий Зотов ©   (2006-11-30 14:45) [7]

> Димыч

Естественно. Ведь inherited вызывает унаследованный метод и надо, чтобы он не затер Ваши установки. Поэтому их надо делать ПОСЛЕ inherited.



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

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

Наверх





Память: 0.46 MB
Время: 0.05 c
2-1164547518
Мишок
2006-11-26 16:25
2006.12.17
автозагрузка


11-1141342016
Dimaxx
2006-03-03 02:26
2006.12.17
Может я не так делаю?...


2-1164655919
Сладкий
2006-11-27 22:31
2006.12.17
Проблема совместимости или просто ...


3-1160130740
Patrick
2006-10-06 14:32
2006.12.17
Сообщение "Timeout Expired"


15-1164776598
DelphiN!
2006-11-29 08:03
2006.12.17
Как изменить рабочую группу компьютера в локальной сети?





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