![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему главная форма не отображается по верх форм которые она соз
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]
> просто щелкнуть по ней не закрывая вторую форму
Так а что ее закрывать, "вторую форму"-то ?
Ты ж ее создал и тут жесобственноручно уничтожил, даже не дав юзеру возможности насладиться ею на переднем плане ..