Can you minimize a MDI child form to an Icon rather than just a small form caption bar??
If it is easy just say yes, but if it requires some complicated inheritance and changing of the basic code of a Form then please supply code with answer. (* I will increase the points if it turns out to be more difficult than it sounds *).
Yes it's possible and no, it's not easy.
If you use Windows NT 3.51, it's easy enough, just don't do anything.(About win 3.51 look)
It's because the implementaion has changed in NT 4 and Win 95 that this behaveour has changed.
First you have to remove the bar:
That's easy enough here's an example
procedure TForm2.FormResize(Sender: TObject);
begin
//Mdi child close *without* titlebar
if windowstate=wsMinimized then
if ShowWindow(Self.Handle, SW_HIDE)=true then
//in Real life you would create this dynamically,
and add code to do an 'Arrange Icon'
form1.image1.picture.Assign(self.icon);
end;
The doubleclickhandler for the Image should read:
{You can lookup the MDIchild in ther MdiChildren list}
procedure TForm1.Image1DblClick(Sender: TObject);
begin
//This is for one mdichild only, but you can expand the imagelist
//With a property 'AssociatedChild' or something
SetWindowPos(form2.Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE OR
SWP_NOSIZE OR SWP_SHOWWINDOW);
Windows.SetFocus(Form2.Handle);
end;
Although by no means complete, that's a way to do it.
I see that Form1 (nb rw) would be your main form - you need to so that you have somewhere to display the image. have a panel to see the image. I made the image a Dockable object and the panel a dock site and had some fun being able to move it around with out having to make any mouse event code.
It is also interesting that as you have coded it, this works when you hit the X but not actually when you hit minimize icon?
If you use Windows NT 3.51, it's easy enough, just don't do anything.(About win 3.51 look)
It's because the implementaion has changed in NT 4 and Win 95 that this behaveour has changed.
First you have to remove the bar:
That's easy enough here's an example
procedure TForm2.FormResize(Sender: TObject);
begin
//Mdi child close *without* titlebar
if windowstate=wsMinimized then
if ShowWindow(Self.Handle, SW_HIDE)=true then
//in Real life you would create this dynamically,
and add code to do an 'Arrange Icon'
form1.image1.picture.Assig
end;
The doubleclickhandler for the Image should read:
{You can lookup the MDIchild in ther MdiChildren list}
procedure TForm1.Image1DblClick(Send
begin
//This is for one mdichild only, but you can expand the imagelist
//With a property 'AssociatedChild' or something
SetWindowPos(form2.Handle,
SWP_NOSIZE OR SWP_SHOWWINDOW);
Windows.SetFocus(Form2.Han
end;
Although by no means complete, that's a way to do it.