A_V
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору достаточно всего лишь вызвать Application.CreateForm(TFormX, FormX); если до этого через Application.CreateForm не было создано ни одной формы (датамодуль не считается) то она и станет главной. т.е главная форма - это тупо первая созданная через Application.CreateForm можно в принципе выставить принудительно и другую, даже если MainForm уже установлен: Код: procedure SetAsMain(Instance: TForm); procedure ChangeAppWindow(const Handle: THandle; const SetAppWindow, RestoreVisibility: Boolean); var Style: Integer; WasVisible, WasIconic: Boolean; begin Style := GetWindowLong(Handle, GWL_EXSTYLE); if (SetAppWindow and (Style and WS_EX_APPWINDOW = 0)) or (not SetAppWindow and (Style and WS_EX_APPWINDOW = WS_EX_APPWINDOW)) then begin WasIconic := Winapi.Windows.IsIconic(Handle); WasVisible := IsWindowVisible(Handle); if WasVisible or WasIconic then ShowWindow(Handle, SW_HIDE); if SetAppWindow then SetWindowLong(Handle, GWL_EXSTYLE, Style or WS_EX_APPWINDOW) else SetWindowLong(Handle, GWL_EXSTYLE, Style and not WS_EX_APPWINDOW); if (RestoreVisibility and WasVisible) or WasIconic then begin if WasIconic then ShowWindow(Handle, SW_MINIMIZE) else ShowWindow(Handle, SW_SHOW); end; end; end; begin PPointer(@Application.MainForm)^ := Instance; if Application.MainFormOnTaskBar then SetWindowLong(Instance.Handle, GWL_EXSTYLE, GetWindowLong(Instance.Handle, GWL_EXSTYLE) or WS_EX_NOACTIVATE); ChangeAppWindow(Instance.Handle, not Application.MainFormOnTaskBar, not Application.MainFormOnTaskBar); end; | но вообще это хак, лучше так не делать ) | Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 17:53 25-02-2014 | Исправлено: A_V, 17:56 25-02-2014 |
|