Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
ВнизПочему главная форма не отображается по верх форм которые она соз Найти похожие ветки
← →
Matveih1 © (2009-02-06 15:21) [0]Есть главная форма.
var
F: TForm2;
begin
F := TForm2.Create(self);
try
F.Show;
except
FreeAndNil(F);
end;
создается вторая форма. Но если я хочу вернуться на первую(главную) то она отображается за второй или любой другой созданной. Как от этого избавиться?
Такое происходит на Delphi 2007
← →
Amoeba © (2009-02-06 16:30) [1]А если
F := TForm2.Create(self);
попробовать заменить на
F := TForm2.Create(Application);
← →
Matveih1 © (2009-02-06 16:46) [2]Пробовал. Не помогает
← →
Leonid Troyanovsky © (2009-02-06 17:38) [3]
> Matveih1 © (06.02.09 15:21)
> создается вторая форма. Но если я хочу вернуться
Что значит "вернуться"?
--
Regards, LVT.
← →
{RASkov} © (2009-02-06 17:40) [4]> [0] Matveih1 © (06.02.09 15:21)
Мало информации.... В [0] явных ошибок нет, которые могут привести к нестандартному поведению, описанному там же в [0]...
← →
Matveih1 © (2009-02-06 17:47) [5]
> Что значит "вернуться"?
значит просто щелкнуть по ней не закрывая вторую форму. Ошибок при этом естественно нет. На Delphi 7 точно такой же код отрабатывает нормально
← →
Плохиш © (2009-02-06 18:03) [6]
> Matveih1 © (06.02.09 17:47) [5]
>
>
Так и используй метод Show, как и написал в [0], а не метод ShowModal.
← →
Matveih1 © (2009-02-06 18:06) [7]так я его и использую. На первую форму я перейти могу, и донные вводить могу но она почемуто за второй. Если со второй формы создать еще одну то активная будет впереди, но не первая
← →
Плохиш © (2009-02-06 18:08) [8]у вас ошибка в программе...
← →
Matveih1 © (2009-02-06 18:12) [9]в каком месте здесь ошибка.
var
F: TForm2;
begin
F := TForm2.Create(self);
try
F.Show;
except
FreeAndNil(F);
end;
на Delphi 7 этот же код отрабатывает нормально. Только на Delphi 2007 так получается.
← →
Leonid Troyanovsky © (2009-02-06 18:14) [10]
> Matveih1 © (06.02.09 18:12) [9]
> в каком месте здесь ошибка.
В 17 строке.
--
Regards, LVT.
← →
Matveih1 © (2009-02-06 18:16) [11]
> В 17 строке.
>
> --
> Regards, LVT.
не понял
← →
Leonid Troyanovsky © (2009-02-06 18:22) [12]
> Matveih1 © (06.02.09 18:16) [11]
> не понял
http://podgoretsky.com/ddp/idioms.aspx
--
Regards, LVT.
← →
Matveih1 © (2009-02-06 18:29) [13]больше кода нет. Есть одна кнопка и вот такой обработчик события.
← →
Leonid Troyanovsky © (2009-02-06 18:41) [14]
> Matveih1 © (06.02.09 18:29) [13]
> больше кода нет. Есть одна кнопка и вот такой обработчик
> события.
Приводим _необходимые_ и _достаточные_ условия для
воспроизведения обличаемого глюка.
Т.е., стараемся максимально облегчить участь отвечающих.
Хорошо, что не вошел в их число (бо не владею D2007 :)
--
Regards, LVT.
← →
Matveih1 © (2009-02-09 09:21) [15]Если вопрос не понятен то можно уточнить. Не понятно зачем писать сообщения не относящиеся к теме. Если нет ответа то можно не писать ничего. Проблема на первый взгляд простая. Но однако никто ничего дельного не ответил.
← →
Сергей М. © (2009-02-09 09:28) [16]
> просто щелкнуть по ней не закрывая вторую форму
Так а что ее закрывать, "вторую форму"-то ?
Ты ж ее создал и тут же собственноручно уничтожил, даже не дав юзеру возможности насладиться ею на переднем плане ..
← →
Matveih1 © (2009-02-09 09:31) [17]Почему я ее уничтожил?
except
FreeAndNil(F);
не уничтожает. там же не finally
← →
Сергей М. © (2009-02-09 09:34) [18]
> там же не finally
Да, верно, упустил.
Т.е. ты утверждаешь, что F при заведомом StayOnTop=False остается на переднем плане при попытке вернуть фокус главной SDI-форме ?
← →
Matveih1 © (2009-02-09 09:44) [19]Да в Delphi 2007 именно так. В D7 такой же код отрабатывает нормально.
← →
Сергей М. © (2009-02-09 09:57) [20]А главная форма фокус при этом получает ? Или F оставаясь на переднем плане и фокус не отпускает ?
← →
Matveih1 © (2009-02-09 10:13) [21]Получает. Но на передний план не выходит. На заднем плане с ней можно делать все что угодно
← →
Сергей М. © (2009-02-09 10:21) [22]А если вызвать
SetWindowPos(F.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
картина меняется ?
← →
Matveih1 © (2009-02-09 10:29) [23]Если это надо вставить после создания формы то не помогает. Или куда надо вставить этот кусок?
← →
{RASkov} © (2009-02-09 10:41) [24]Описанная ситуация проявляется только в "этом проекте", или вновь созданном(пустом) и только код из [0] - присутствует?
← →
Matveih1 © (2009-02-09 10:51) [25]И в этом, и вновь созданном(пустом) где только код из [0] - присутствует.
← →
{RASkov} © (2009-02-09 11:16) [26]Что-то мне подсказывает, что данная ситуация только на твоей машине проявляется.... жаль не на чем проверить.... т.е. нет у меня 2007 делфи
← →
Matveih1 © (2009-02-09 11:19) [27]Такая ситуация проявляется на разных машинахю. Но на всех делфи установлен из одного дистрибутива. И такая ситуация только с делфи 2007. На более ранних версия все отрабатывает нормально
← →
{RASkov} © (2009-02-09 11:21) [28]> на всех делфи установлен из одного дистрибутива. И такая
> ситуация только с делфи 2007
Попробуй другой дистрибутив... Если это глюк Д2007, то тебе тут не помогут....
....хотя нет, тут могут больше, чем можно себе представить :)
← →
AndreyV © (2009-02-09 11:24) [29]> [27] Matveih1 © (09.02.09 11:19)
> Такая ситуация проявляется на разных машинахю. Но на всех
> делфи установлен из одного дистрибутива. И такая ситуация
> только с делфи 2007.
А где не установлен 2007?
← →
Matveih1 © (2009-02-09 12:16) [30]
> [29] AndreyV ©
> А где не установлен 2007?
не понял вопрос. Или это опять шутки ради (ибо не знаем как ответить)?
← →
iWorm (2009-02-22 04:45) [31]Действительно, такое расхождение в поведении присутствует и в делфи 2009 по сравнению с D7
var
F: TForm;
begin
F := TForm.Create(self);
try
F.Show;
except
FreeAndNil(F);
end;
← →
KilkennyCat © (2009-02-22 08:12) [32]
> Matveih1 © (09.02.09 12:16) [30]
что тут непонятного? Было предложено протестировать на машине, где 2007 не устанавливалась.
← →
KilkennyCat © (2009-02-22 08:38) [33]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:41) [34]Добавлю, что это 2009. 2007 у мня нет.
Причем, сие появляется только при создании нового проекта, при открытии и конвертации проектов из старых версий (в моем случае - 7) не добавляется.
← →
Matveih1 © (2009-03-19 17:37) [35]Спасибо, буду пробовать.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.008 c