![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дочерние окна при сворачивании главного
RDS © (2006-07-05 16:54:00)Программа создает массив дочерних окон. Как можно следать, чтобы при сворачивании главного окна программы, дочерние окна оставались на экране.
Eraser (2006-07-06 15:59:00) [21]просьба к форумчанам, кто читает эту ветку, если не лень - протестируйте данный код, пожалуйста.
Eraser (2006-07-06 15:59:00) [22]> [14] Юрий Зотов © (06.07.06 15:57)
я забыл код второго модуля привести
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
protected
procedure CreateParams(var Params: TCreateParams); override;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TForm2 }
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := HWND_DESKTOP;
end;
end.
Юрий Зотов (2006-07-06 15:57:00) [23]> Eraser © (06.07.06 15:41) [13]
Проверил еще раз. Все делал ТОЧНО как Вы сказали. Не выскакивает.
Eraser (2006-07-06 15:41:00) [24]> [12] Юрий Зотов © (06.07.06 15:35)
ну как же не выскакивает?
Пример на Д2006, на Д7 тоже самое.
Проект из двух форм. На первой форме только 1 кнопка, на второй установлено свойство ShowHint = true и св-во Hint = 'test'
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
TForm2.Create(Application).Show;
end;
end.
при появлении хинта на 2 форме - 1 форма выскакивает на foreground.
Юрий Зотов (2006-07-06 15:35:00) [25]> Eraser © (06.07.06 13:34) [11]
Проверил. Ничего никуда не выскакивает (XP, D6).
Eraser (2006-07-06 13:34:00) [26]> [7] Юрий Зотов © (06.07.06 11:52)
только здесь появится один неприятный глюк, при появлении любого хинта, главная форма приложения будет "выскакивать" на передний план.
как с этим бороться - не знаю, какое-то решение видел в группах google, но оно тоже было глючным. Если знаете правильное решение - дайте знать пожалуйста.
Jeer (2006-07-06 12:05:00) [27]работает
StriderMan (2006-07-06 12:04:00) [28]
> и на нее ShowWindow(hChild, SW_SHOW)
сомнительно, что это будет работать. скорее всего главная форма тоже подымется
Jeer (2006-07-06 11:54:00) [29]А в принципе - можно.
Отлавливать минимизацию главного и на нее ShowWindow(hChild, SW_SHOW)
Юрий Зотов (2006-07-06 11:52:00) [30]procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := HWND_DESKTOP
end;
Jeer (2006-07-06 11:38:00) [31]Такова функциональность взаимодействия главного и дочерних окон неважно какой (MDI или SDI) режим выбран.
RDS (2006-07-06 11:24:00) [32]Под дочерними окнами я понимаю окна, создаваемые главным окном программы. Возможно формулировка не точная, но как это назвать по другому я не знаю.
Юрий Зотов (2006-07-06 11:14:00) [33]Верните FormStyle=fsNormal и поясните - если программа не MDI, то что Вы имеете в виду под словами "дочерние окна"? ParentWindow? Что-то еще?
RDS (2006-07-06 10:59:00) [34]Поставил в главном окне FormStyle=fsMDIForm. Результат тот же самый. При сворачивании главного окна сворачиваются и дочерние.
RDS (2006-07-06 10:55:00) [35]Главное окно программы имеет FormStyle=fsNormal. Это имелось в виду?
Юрий Зотов (2006-07-06 10:51:00) [36]Программа MDI?