Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1159206509
KingLion
2006-09-25 21:48
2006.10.15
MS FrameWork 1.1 SDK


2-1159378202
berezne
2006-09-27 21:30
2006.10.15
Запуск БД без принтера


1-1157642594
DroNIX
2006-09-07 19:23
2006.10.15
Нажатие клавиш по определённому алгоритму


5-1141114827
Creative
2006-02-28 11:20
2006.10.15
ссылка на объект в строке StringGrid`а


2-1159267336
syte_ser78
2006-09-26 14:42
2006.10.15
ожидание documentcomplete





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский