Текущий архив: 2006.10.15;
Скачать: CL | DM;
ВнизMDI окна Найти похожие ветки
← →
Sergey_b (2006-09-28 11:31) [0]Здравствуйте все.
Как свернуть дочернее окно на StatusBar?
Заранее благодарен.
← →
Ketmar © (2006-09-28 11:39) [1]никак.
← →
clickmaker © (2006-09-28 11:40) [2]
> свернуть дочернее окно на StatusBar?
то есть?
← →
zdm © (2006-09-28 11:41) [3]StatusBar он не "Панель задач" как в винде
← →
Palladin © (2006-09-28 11:42) [4]скрыть его и нарисовать картинку на статусбаре
← →
clickmaker © (2006-09-28 11:43) [5]неужели... автор называет Панель задач статус баром?
← →
zdm © (2006-09-28 11:48) [6]Да кто его знает что он хотел, автор можно поподробней цель задачи объяснить?
← →
Sergey_b (2006-09-28 11:48) [7]Прошу прощения, на панель задач.
← →
zdm © (2006-09-28 11:49) [8]о я ОРАКУЛ
← →
Sergey_b (2006-09-28 11:50) [9]Чтобы свернутое окно было видно в виде иконки на Панели задач
← →
Sergey_b (2006-09-28 11:51) [10]
> Да кто его знает что он хотел, автор можно поподробней цель
> задачи объяснить?
Чтобы было красиво
← →
Palladin © (2006-09-28 11:53) [11]хем... проще на статусбар :)
← →
Sergey_b (2006-09-28 11:55) [12]
> хем... проще на статусбар :)
Как???
← →
zdm © (2006-09-28 11:55) [13]:)
← →
zdm © (2006-09-28 11:56) [14][1]
← →
Ketmar © (2006-09-28 11:56) [15]>[11] Palladin(c) 28-Sep-2006, 11:53
>хем... проще на статусбар :)
однофигственно. ну подумаешь -- вместо отрисовки статусбара создать окошко со стилем WS_EX_APPWINDOW. ну и обрабатывать его сообщения. что там геморрой, что там. %-)
← →
clickmaker © (2006-09-28 11:56) [16]
> [9] Sergey_b (28.09.06 11:50)
procedure TForm1.CreateParams(var Params: TCreateParams); // должна быть объявлена как override;
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;
← →
Palladin © (2006-09-28 11:58) [17]
> Ketmar © (28.09.06 11:56) [15]
> clickmaker © (28.09.06 11:56) [16]
аа... не работает при fsMDIChild... только что для прикола попытался... внутрь даже влазить нехочу... лентяво...
← →
Sergey_b (2006-09-28 12:02) [18]Что это?
А есть форум для новорожденных?
Где про это можно почитать?
>
>
> procedure TForm1.CreateParams(var Params: TCreateParams);
> // должна быть объявлена как override;
> begin
> inherited CreateParams(Params);
>
> Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
> end;
← →
clickmaker © (2006-09-28 12:09) [19]
> Где про это можно почитать?
Delphi Help
← →
Palladin © (2006-09-28 12:11) [20]
> Ketmar © (28.09.06 11:56) [15]
а... невнимательно прочитал... все равно коряво :) хотя Word так и работает... все таки проще на статусбар :)
← →
Palladin © (2006-09-28 12:14) [21]
> хотя Word так и работает
не... вру... все таки access...
← →
Игорь Шевченко © (2006-09-28 12:19) [22]Дочерние окна на панель задач не сворачиваются в принципе.
← →
saxon (2006-09-28 12:42) [23]
> Игорь Шевченко © (28.09.06 12:19) [22]
хм .. а у access, как уже говорил
> Palladin © (28.09.06 12:14) [21]
что за окна такие?
или там как то хитро с "обыкновенными" работают, может знаете как?
← →
Ketmar © (2006-09-28 12:42) [24]>[22] Игорь Шевченко(c) 28-Sep-2006, 12:19
>Дочерние окна на панель задач не сворачиваются в
>принципе.
это понятно. я предлагал при сворачивании создавать новое окно, недочернее. ну и грохать потом. или нечно вроде этого. %-)
← →
Palladin © (2006-09-28 12:45) [25]
> saxon (28.09.06 12:42) [23]
в access вместе с дочерним окном создается еще одно, как предложил Ketmar, которое с WS_EX_APPWINDOW
← →
saxon (2006-09-28 12:46) [26]
> Palladin © (28.09.06 12:45) [25]
предполагаете или знаете?
← →
Palladin © (2006-09-28 12:55) [27]предполагаю, да и гдето в инете натыкался по этому поводу... статья или FAQ-ли про окна access"а и word"а...
← →
clickmaker © (2006-09-28 12:57) [28]можно взять Spy++ и проверить
← →
Sergey_b (2006-09-28 14:10) [29]Огромное-е спасибо за содержательные ответы
← →
Игорь Шевченко © (2006-09-28 14:27) [30]Ketmar © (28.09.06 12:42) [24]
> это понятно. я предлагал при сворачивании создавать новое
> окно, недочернее. ну и грохать потом. или нечно вроде этого.
> %-)
Криво, но пытается работать:unit Child;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FHSWindow: HWND;
procedure WMSysCommand(var Message: TWmSysCommand); message WM_SYSCOMMAND;
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
const
AClassName = "HSFake";
var
wc: WNDCLASSEXA;
function FakeWindowWndProc (Wnd: HWND; Message: UINT; wParam: WPARAM;
lParam: LPARAM): LRESULT; stdcall;
var
FormInstance: TForm2;
begin
case Message of
WM_NCCREATE:
begin
FormInstance := TForm2(
PCreateStruct(LParam)^.lpCreateParams);
SetWindowLongA(Wnd, 0, Integer(FormInstance));
end;
WM_SYSCOMMAND:
begin
Result := 0;
FormInstance := TForm2(GetWindowLong(Wnd, 0));
case wParam and $FFF0 of
SC_RESTORE:
begin
ShowWindow(Wnd, SW_HIDE);
ShowWindow(FormInstance.Handle, SW_SHOW);
Exit;
end;
SC_MAXIMIZE:
Exit;
SC_CLOSE:
begin
ShowWindow(Wnd, SW_HIDE);
FormInstance.Close;
Exit;
end;
end;
end;
end;
Result := DefWindowProcA(Wnd, Message, wParam, lParam);
end;
{ TForm2 }
procedure TForm2.WMSysCommand(var Message: TWmSysCommand);
begin
if (FHSWindow <> 0) and ((Message.CmdType and $FFF0) = SC_MINIMIZE) then begin
ShowWindow(Handle, SW_HIDE);
ShowWindow(FHSWindow, SW_SHOWMINNOACTIVE);
end else
inherited;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
if FHSWindow <> 0 then begin
DestroyWindow(FHSWindow);
FHSWindow := 0;
end;
FHSWindow := CreateWindowExA(0, AClassName, nil,
WS_OVERLAPPEDWINDOW, Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), HWND_DESKTOP, 0,
HInstance, Self);
Win32Check(FHSWindow <> 0);
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
if FHSWindow <> 0 then
DestroyWindow(FHSWindow);
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
initialization
FillChar (wc, SizeOf(wc), 0);
wc.cbSize := SizeOf(wc);
wc.lpszClassName := AClassName;
wc.cbWndExtra := 4;
wc.hInstance := HInstance;
wc.lpfnWndProc := @FakeWindowWndProc;
wc.hCursor := LoadCursor (0, IDC_ARROW);
wc.hbrBackground := HBRUSH(GetStockObject(WHITE_BRUSH));
RegisterClassExA (wc);
finalization
UnregisterClassA(AClassName, HInstance);
end.unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
New1: TMenuItem;
procedure New1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses
Child;
{$R *.DFM}
procedure TForm1.New1Click(Sender: TObject);
begin
with TForm2.Create(Application) do
Show;
end;
end.
Страницы: 1 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.049 c