Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.03;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.015 c
8-1193561865
kas86
2007-10-28 11:57
2009.05.03
Вопрос по JPEG из DLL


2-1237538453
igorntk
2009-03-20 11:40
2009.05.03
Уникальные поля в DBase


4-1209045469
AlexK
2008-04-24 17:57
2009.05.03
MAPI_E_INVALID_ENTRYID


2-1237363573
Darvin
2009-03-18 11:06
2009.05.03
Состояние буфера СОМ порта


2-1237293422
ivanoff
2009-03-17 15:37
2009.05.03
как получить список дней недели от Windows (на его языке)