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

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

использование TDialogOpen [D7, XP]


Fr ©   (2011-02-06 13:16:00) 

Вызываю:
    if OpenDlg1.Execute then begin
      ...
   end;


И, почему-то, сам диалог уходит при исполнении на задний план. Чтобы его увидеть приходится переключаться между окнами Alt+Tab.

В чем причина?


Германн   (2011-02-08 01:32:00) [1]


> реально! я вот повторил этот изврат, как мог, с Гейтс-кой
> помощью, и по своему разумению восстановил, опять так и
> не показанную  здесь CreateWithHint,

Я бы не смог найти своё разумение в том бреде!


sniknik   (2011-02-08 00:10:00) [2]

>> А если положил
> то, да.
реально! я вот повторил этот изврат, как мог, с Гейтс-кой помощью, и по своему разумению восстановил, опять так и не показанную  здесь CreateWithHint, в которой поклална все... и диалог не уходит на задний план! тусуется на переднем... нада же. ;)


clickmaker   (2011-02-07 22:46:00) [3]

> А если положил так сразу проблеммы начинаются?

проблемы начинаются при трансректальных попытках вызова этого диалога )


Дмитрий Белькевич   (2011-02-07 18:23:00) [4]


> Сегодня диалог на форму не бросили, а завтра батонов в палитре
> нету... :(


Как страшно жить...


b z   (2011-02-07 17:13:00) [5]


> Jeer ©   (07.02.11 17:09) [14
И тчо?


Jeer   (2011-02-07 17:09:00) [6]


> А если положил


то, да.


b z   (2011-02-07 16:57:00) [7]


> clickmaker ©   (07.02.11 16:01) [11]
А если положил так сразу проблеммы начинаются?


Dennis I. Komarov   (2011-02-07 16:16:00) [8]


> можно вообще не класть на форму

Люди!!! Да что же это делается! Как же так? В этом и есть вся смысла программирования. Это так мы дойдем и до программ без форм, что же тогда делать? Сегодня диалог на форму не бросили, а завтра батонов в палитре нету... :(


clickmaker   (2011-02-07 16:01:00) [9]

может быть, открою тайну, но диалог можно вообще не класть на форму
достаточно так
with TOpenDialog.Create
do begin
 if Execute then
 ...


Плохиш   (2011-02-07 15:58:00) [10]

Потому что, по коду, сначала показывается диалог, после обработки из стека выбирается и обрабатывается сообщение на показ созданной формы.


Fr   (2011-02-07 15:53:00) [11]

сама новая форма нормально отображается на переднем плане, а диалог за ней :(


Fr   (2011-02-07 15:52:00) [12]

Т.е. результат ваших "Буратин" :) : открывать диалог из главной формы, а не из вновь создаваемой?

А причина-то какая? из-за чего уходит на второй план диалог?


Плохиш   (2011-02-07 15:49:00) [13]


> procedure TfrmMain.mmOpenClick(Sender: TObject);
> var j: integer;
> begin
>  Tfrm1.CreateWithHint(Application,'2','');  // создание
> второй формы и запись в ее Hint '2'
>  for j:=0 to Screen.FormCount-1 do
>    with Tfrm1(Screen.Forms[j]) do
>      if Hint='2' then begin
>        mOpenFileClick(Self);
>        break;
>      end;
> end;
>

Это типа 4 байта в стеке съэкономил?
Ну так ССЗБ


Jeer   (2011-02-07 15:40:00) [14]


> Никаких извращений нет.


Полный комплект.


clickmaker   (2011-02-07 15:36:00) [15]

> ну нужно мне так :)

ССЗБ


Fr   (2011-02-07 15:35:00) [16]


> Почему из TfrmMain не вызвать?


ну нужно мне так :)


clickmaker   (2011-02-07 15:34:00) [17]

> Никаких извращений нет

а по-моему есть. Зачем такой странный способ вызова диалога? Почему из TfrmMain не вызвать?


Fr   (2011-02-07 15:29:00) [18]

Никаких извращений нет. Есть основная форма. На ней лежит кнопка. При нажатии на эту кнопку создается вторая форма, на которой лежит TOpenDialog. При execute этого диалога сам диалог оказывается на заднем плане. Вопрос - почему?

procedure TfrmMain.mmOpenClick(Sender: TObject);
var j: integer;
begin
 Tfrm1.CreateWithHint(Application,'2','');  // создание второй формы и запись в ее Hint '2'
 for j:=0 to Screen.FormCount-1 do
   with Tfrm1(Screen.Forms[j]) do
     if Hint='2' then begin
       mOpenFileClick(Self);
       break;
     end;
end;

procedure Tfrm1.mOpenFileClick(Sender: TObject);
begin
 try
   if OpenDlg1.Execute then begin
      ...
   end;
    ...
 finally
     ...
 end;
end;


sniknik   (2011-02-06 14:14:00) [19]

> В чем причина?
не в показанном коде, точно, а например в скрытых извращениях типа вкладывания этого вызова в dll и т.д.


Наверх

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