Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1237538453
igorntk
2009-03-20 11:40
2009.05.03
Уникальные поля в DBase


2-1237898311
Андрей (начинающий)
2009-03-24 15:38
2009.05.03
Отображение ListView с большим количеством строк


2-1237449117
немо2
2009-03-19 10:51
2009.05.03
ADO в MSSQL2000. Как получить ответ в мемо


2-1237488796
Yuriy
2009-03-19 21:53
2009.05.03
Рамочка TsMonthCalendar (AlphaControls)


2-1237455998
AlexeyMK
2009-03-19 12:46
2009.05.03
Чужое окно сделать дочерним MDI





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