19 / 15 / 7
Регистрация: 23.09.2010
Сообщений: 158
1

окно на передний план+ сворачивание

26.01.2012, 03:43. Показов 8703. Ответов 8
Метки нет (Все метки)

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

а заодно спрошу) как сделать форму поверх всех окон. P.S.по этому вопросу гугл не смотрел, мозг спит...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2012, 03:43
Ответы с готовыми решениями:

Вывести окно на передний план
findwindow('Приложение с едит1',nil); что-то типо в общем нужно чтобы вывело окно с едита 1,...

Выводим окно на передний план
SetForegroundWindow не выводит, а только переключается на окно!

Переместить TLabel на передний план
Здравствуйте, имеется картинка, создающаяся динамически, и label, созданный руками. Картинка,...

Hint от ToolBar выводит на передний план Form1
Открыл все три формы. На двух из них есть ToolBar с одной кнопкой имеющей Hint. При наведении...

8
Shiningemerald
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
26.01.2012, 09:47 2
Цитата Сообщение от CRazs Посмотреть сообщение
а заодно спрошу) как сделать форму поверх всех окон. P.S.по этому вопросу гугл не смотрел, мозг спит...
может быть
Form1.FormStyle:=fsStayOnTop;

еще есть такая процедура:

Delphi
1
2
procedure SwitchToThisWindow(Wnd: HWND; Restore: Boolean); stdcall;
external 'user32.dll' name 'SwitchToThisWindow';
Вызов процедуры:

Delphi
1
2
3
4
5
6
7
8
procedure FormFocus(hWnd: HWND; nCmdShow: Integer; Delay: Integer = 0);
begin
ShowWindow(hWnd, nCmdShow);
Sleep(Delay);
SwitchToThisWindow(hWnd, True);
end;
 
FormFocus(Handle, SW_RESTORE, 100);
1
19 / 15 / 7
Регистрация: 23.09.2010
Сообщений: 158
26.01.2012, 23:29  [ТС] 3
Цитата Сообщение от Electroflower Посмотреть сообщение
Delphi
1
2
procedure SwitchToThisWindow(Wnd: HWND; Restore: Boolean); stdcall;
external 'user32.dll' name 'SwitchToThisWindow';
Вызов процедуры:

Delphi
1
2
3
4
5
6
7
8
procedure FormFocus(hWnd: HWND; nCmdShow: Integer; Delay: Integer = 0);
begin
ShowWindow(hWnd, nCmdShow);
Sleep(Delay);
SwitchToThisWindow(hWnd, True);
end;
 
FormFocus(Handle, SW_RESTORE, 100);
что то я ни хрена не понял как это использовать
0
568 / 291 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
27.01.2012, 08:18 4
Цитата Сообщение от CRazs Посмотреть сообщение
динамически создаются формы по кнопке
Не вяжется. Покажи как создаешь формы.
Цитата Сообщение от CRazs Посмотреть сообщение
при нажатии на кнопку форма создается, но тоже свернутая.
0
19 / 15 / 7
Регистрация: 23.09.2010
Сообщений: 158
27.01.2012, 15:34  [ТС] 5
Цитата Сообщение от rdama Посмотреть сообщение
Не вяжется. Покажи как создаешь формы.
все вяжется))) кнопка не на форме а на клаве сори что не уточнил...
жму printscreen создается форма со скриншотом и должно вылезти окно, но если основная форма свернута то она создается свернутой
0
568 / 291 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
27.01.2012, 17:22 6
Цитата Сообщение от CRazs Посмотреть сообщение
но если основная форма свернута то она создается свернутой
Вот и говорю не вяжется. У тебя что show и hide использованы?
Если да то это не создание форм и ни какого отношения к этому не имеет.
Ну и раз такая кухня то есть такое свойство как windowstate выстави его в wsMaximized и все.
1
19 / 15 / 7
Регистрация: 23.09.2010
Сообщений: 158
27.01.2012, 18:47  [ТС] 7
Цитата Сообщение от rdama Посмотреть сообщение
Вот и говорю не вяжется. У тебя что show и hide использованы?
Если да то это не создание форм и ни какого отношения к этому не имеет.
Ну и раз такая кухня то есть такое свойство как windowstate выстави его в wsMaximized и все.
Delphi
1
2
3
4
5
как то так...
ShowWindow(Application.Handle,SW_HIDE);
...
Application.Restore;
SetForeGroundWindow(Application.MainForm.Handle);
это все канешн хорошо, только не wsMaximized, а wsNormal ))
для динамической формы работает, а вот на form3 неработает, даже если в таймер пихаю wsnormal то непоказывает... хотя это естественна реакция). а есть решение для созданных форм?
0
568 / 291 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
28.01.2012, 06:43 8
И так у тебя формы не создаются динамически, показываются.
Форма у тебя создается 1 раз при старте программы (исходя из твоего кода).
И потом API функцией ShowWindow ты ее прячешь или отображаешь.
Т.е. т.к. твоя форма не уничтожается следовательно она сохраняет все свои позиции. Если ты ее свернул и спрятал SW_HIDE, то она при появлении будет свернута.
То что я тебе дал в виде куска кода это и есть динамическое создание форм.
Но при этом надо убрать авто создание формы при старте приложения.
И еще раз у тебя нет тут ни какой динамики. У тебя скрывание и показывание форм.
Почитай что есть ShowWindow и SetForeGroundWindow. Надеюсь ссылки на MSDN найдешь
0
19 / 15 / 7
Регистрация: 23.09.2010
Сообщений: 158
28.01.2012, 19:15  [ТС] 9
Цитата Сообщение от rdama Посмотреть сообщение
И так у тебя формы не создаются динамически, показываются.
Форма у тебя создается 1 раз при старте программы (исходя из твоего кода).
И потом API функцией ShowWindow ты ее прячешь или отображаешь.
Т.е. т.к. твоя форма не уничтожается следовательно она сохраняет все свои позиции. Если ты ее свернул и спрятал SW_HIDE, то она при появлении будет свернута.
То что я тебе дал в виде куска кода это и есть динамическое создание форм.
Но при этом надо убрать авто создание формы при старте приложения.
И еще раз у тебя нет тут ни какой динамики. У тебя скрывание и показывание форм.
Почитай что есть ShowWindow и SetForeGroundWindow. Надеюсь ссылки на MSDN найдешь
слыыыш...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    formsc:array of tform; // это раз
...
procedure createPRTSCform;
begin
    lform:=length(formsc);
    SetLength(formsc,lform+1);
    formsc[lform]:= tform.Create(form1) ;
    //formsc[lform].BorderStyle:=bsDialog;
    formsc[lform].Height:=256;
    formsc[lform].Width:=645;
    formsc[lform].Left:=204;
    formsc[lform].Top:=113;
    formsc[lform].tag:=lform;
    formsc[lform].Color:=clGray;
//а это два
...
            formsc[btn.tag].Close;
//и это три
у меня есть и те и те формы, для динамических форм это сработало, а для тех которые "НЕ" динамические, нет...
а есть решение для созданных форм?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2012, 19:15
Помогаю со студенческими работами здесь

Как поставить текст на передний план перед RadioGroup
Как поставить текст на передний план перед RadioGroup? (у меня Label, возможно поставить другой?)...

При наведении курсора на кнопку вывести эту кнопку на передний план
Можно ли сделать так что при наведении курсора на Button в запущенном проекте он бы вставал а...

Окно на передний план
Захотелось реализовать такую штуку, например: вот я на калькуляторе посчитал выражение, и его нужно...

Окно на передний план
Доброго времени суток. Подскажите, пожалуйста, как в tkinter переводить окно на передний план. По...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru