Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2011, 19:17   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Восклицание Показать Form2 по верх Form1 и сделать активной

Стандартно получается такое расположение форм (левый скрин), а надо такое расположение форм (правый скрин). Как такое сделать?
Код:
procedure TForm2.FormCreate(Sender: TObject);
begin
  Show;
end;
Формы также должны при переключении между ними прятаться друг за друга как показано на скринах. StayOnTop не предлагать.
Изображения
Тип файла: gif Form1.gif (6.7 Кб, 124 просмотров)
Тип файла: gif Form2.gif (5.5 Кб, 131 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 30.06.2011, 19:40   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Попробуйте
Код:
Form2.SetFocus
Вадим Мошев вне форума Ответить с цитированием
Старый 30.06.2011, 20:02   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Даже так не помогает
Код:
    SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
    Form2.SetFocus;

Последний раз редактировалось Shouldercannon; 30.06.2011 в 20:37.
Shouldercannon вне форума Ответить с цитированием
Старый 30.06.2011, 21:05   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

С FormCreate может не работать

А по идее так должно сработать

Код:
procedure TForm2.FormShow(Sender: TObject);
begin
 SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
или так тоже
Код:
procedure TForm2.FormShow(Sender: TObject);
begin
SetFocus;
end;

Использование
Код:
Form2.show;

Последний раз редактировалось Aliens_wolfs; 30.06.2011 в 21:11.
Aliens_wolfs вне форума Ответить с цитированием
Старый 30.06.2011, 21:16   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Form2.BringToFront;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 30.06.2011, 21:28   #6
Хамяг
Форумчанин
 
Аватар для Хамяг
 
Регистрация: 22.08.2008
Сообщений: 105
По умолчанию

SetForegroundWindow(Form2.Handle);
Хамяг вне форума Ответить с цитированием
Старый 30.06.2011, 21:47   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

В FormCreate и в OnShow не работает Form2.BringToFront; и SetForegroundWindow(Form2.Handle);, и SetFocus;, SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); работает там и там, но форма по-прежнему не активная.

Последний раз редактировалось Shouldercannon; 30.06.2011 в 21:58.
Shouldercannon вне форума Ответить с цитированием
Старый 30.06.2011, 21:54   #8
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Попробуйте функцию которую подсказал Хамяг SetForegroundWindow в Form2 использовать так:

Код:
procedure TForm2.FormShow(Sender: TObject);
begin
SetForegroundWindow(Handle);
end;
Где то вы неправильно эти функции используете на крайняк в таймер в Form2 вставьте оду из подсказанных функций.

Последний раз редактировалось Aliens_wolfs; 30.06.2011 в 21:56.
Aliens_wolfs вне форума Ответить с цитированием
Старый 30.06.2011, 22:00   #9
Хамяг
Форумчанин
 
Аватар для Хамяг
 
Регистрация: 22.08.2008
Сообщений: 105
По умолчанию

Aliens_wolfs, а в чём разница?

кстати, можно попробовать такой изощрённый метод зато работает

Код:
var
  Start: TTimer;

procedure TForm2.FormCreate(Sender: TObject);
begin
  if Start = nil then
  begin
    Show;
    Start:=TTimer.Create(Form2);
    Start.Interval:=1;
    Start.OnTimer:=FormCreate;
    Start.Enabled:=True;
  end
  else
  begin
    Start.Free;
    SetForegroundWindow(Handle);
  end;
end;
Хамяг вне форума Ответить с цитированием
Старый 01.07.2011, 00:05   #10
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Действительно работает
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переменные form2 на form1 motaro Общие вопросы Delphi 16 28.09.2009 07:49
Form1 & Form2 Alex Cones Общие вопросы Delphi 4 31.07.2009 21:50
Управление элементами Form2 из Form1 Niodar Общие вопросы Delphi 4 25.03.2009 04:22
Delphi. Form1 и Form2. Xeon332 Общие вопросы Delphi 8 01.11.2008 15:52
form1 и form2 SLIMMUS Общие вопросы Delphi 3 29.10.2008 01:15