Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему главная форма не отображается по верх форм которые она соз


Страницы:   1 2

Matveih1 ©   (2009-02-06 15:21:00) 

Есть главная форма.

var
 F: TForm2;
begin
 F := TForm2.Create(self);
 try
   F.Show;
 except
   FreeAndNil(F);
 end;


создается вторая форма. Но если я хочу вернуться на первую(главную) то она отображается за второй или любой другой созданной. Как от этого избавиться?
Такое происходит на Delphi 2007


Matveih1   (2009-03-19 17:37:00) [1]

Спасибо, буду пробовать.


KilkennyCat   (2009-02-22 08:41:00) [2]

Добавлю, что это 2009. 2007 у мня нет.
Причем, сие появляется только при создании нового проекта, при открытии и конвертации проектов из старых версий (в моем случае - 7) не добавляется.


KilkennyCat   (2009-02-22 08:38:00) [3]

program Project1;

uses
 Forms,
 Unit1 in 'Unit1.pas' {Form1},
 Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
 Application.Initialize;
//  Application.MainFormOnTaskbar := True; - закомментирование данной строки позволит достичь желаемого эффекта.
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


KilkennyCat   (2009-02-22 08:12:00) [4]


> Matveih1 ©   (09.02.09 12:16) [30]

что тут непонятного? Было предложено протестировать на машине, где 2007 не устанавливалась.


iWorm   (2009-02-22 04:45:00) [5]

Действительно, такое расхождение в поведении присутствует и в делфи 2009 по сравнению с D7
var
F: TForm;
begin
F := TForm.Create(self);
try
  F.Show;
except
  FreeAndNil(F);
end;


Matveih1   (2009-02-09 12:16:00) [6]


> [29] AndreyV ©
> А где не установлен 2007?

не понял вопрос. Или это опять шутки ради (ибо не знаем как ответить)?


AndreyV   (2009-02-09 11:24:00) [7]

> [27] Matveih1 ©   (09.02.09 11:19)
> Такая ситуация проявляется на разных машинахю. Но на всех
> делфи установлен из одного дистрибутива. И такая ситуация
> только с делфи 2007.

А где не установлен 2007?


{RASkov}   (2009-02-09 11:21:00) [8]

> на всех делфи установлен из одного дистрибутива. И такая
> ситуация только с делфи 2007

Попробуй другой дистрибутив... Если это глюк Д2007, то тебе тут не помогут....
....хотя нет, тут могут больше, чем можно себе представить :)


Matveih1   (2009-02-09 11:19:00) [9]

Такая ситуация проявляется на разных машинахю. Но на всех делфи установлен из одного дистрибутива. И такая ситуация только с делфи 2007. На более ранних версия все отрабатывает нормально


{RASkov}   (2009-02-09 11:16:00) [10]

Что-то мне подсказывает, что данная ситуация только на твоей машине проявляется.... жаль не на чем проверить.... т.е. нет у меня 2007 делфи


Matveih1   (2009-02-09 10:51:00) [11]

И в этом, и вновь созданном(пустом) где только код из [0] - присутствует.


{RASkov}   (2009-02-09 10:41:00) [12]

Описанная ситуация проявляется только в "этом проекте", или вновь созданном(пустом) и только код из [0] - присутствует?


Matveih1   (2009-02-09 10:29:00) [13]

Если это надо вставить после создания формы то не помогает. Или куда надо вставить этот кусок?


Сергей М.   (2009-02-09 10:21:00) [14]

А если вызвать

SetWindowPos(F.Handle, HWND_ NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);

картина меняется ?


Matveih1   (2009-02-09 10:13:00) [15]

Получает. Но на передний план не выходит. На заднем плане с ней можно делать все что угодно


Сергей М.   (2009-02-09 09:57:00) [16]

А главная форма фокус при этом получает ? Или F оставаясь на переднем плане  и фокус не отпускает ?


Matveih1   (2009-02-09 09:44:00) [17]

Да в Delphi 2007 именно так. В D7 такой же код отрабатывает нормально.


Сергей М.   (2009-02-09 09:34:00) [18]


> там же не finally


Да, верно, упустил.

Т.е. ты утверждаешь, что F при заведомом StayOnTop=False остается на переднем плане при попытке вернуть фокус главной SDI-форме ?


Matveih1   (2009-02-09 09:31:00) [19]

Почему я ее уничтожил?

except
  FreeAndNil(F);

не уничтожает. там же не finally


Сергей М.   (2009-02-09 09:28:00) [20]


> просто щелкнуть по ней не закрывая вторую форму


Так а что ее закрывать, "вторую форму"-то ?
Ты ж ее создал и тут жесобственноручно уничтожил, даже не дав юзеру возможности насладиться ею на переднем плане ..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо