Mega Code Archive

 
Categories / Delphi / System
 

Auto hide IDE windows when codingdesigning

Title: auto hide IDE windows when coding/designing? //**************************************** // Paste into AutoHideIDE.dpk //**************************************** package AutoHideIDE; {$R *.res} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$DESIGNONLY} {$IMPLICITBUILD OFF} requires rtl, vcl; contains AutoHide in 'AutoHide.pas'; end. //**************************************** // Paste into AutoHide.pas //**************************************** unit AutoHide; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms; type TAutoHider = class(TObject) protected procedure DelphiOnMessage(var Msg: TMsg; var Handled: Boolean); procedure MyDockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer); procedure MyDestroy(Sender: TObject); public OldDockDrop: TDockDropEvent; OldDestroy: TNotifyEvent; Delphi: TApplication; Bar_Top: TForm; Bar_Left: TForm; ObjInspector: TForm; DockHost: TForm; Bar_Top_Rect: TRect; Bar_Left_Rect: TRect; F_AtTop: Boolean; F_AtLeft: Boolean; procedure Init_Bar_Left; procedure Bar_Left_Visible(val: Boolean); procedure Bar_Top_Visible(Value: Boolean); end; var AutoHider: TAutoHider; implementation { TAutoHide } procedure Restore_Bar_Left; begin AutoHider.ObjInspector.OnDockDrop := nil; if AutoHider.DockHost nil then begin AutoHider.DockHost.OnDestroy := nil; end; AutoHider.Bar_Left.BoundsRect := AutoHider.Bar_Left_Rect; end; procedure Restore_Bar_Top; begin AutoHider.Bar_Top.BoundsRect := AutoHider.Bar_Top_Rect; end; procedure InitAutoHider(Value: Boolean); begin if Value then begin AutoHider.Delphi := Application; AutoHider.Bar_Top := TForm(Application.FindComponent('AppBuilder')); if AutoHider.Bar_Top nil then begin AutoHider.Bar_Top_Rect := AutoHider.Bar_Top.BoundsRect; AutoHider.ObjInspector := AutoHider.Bar_Top.FindComponent('PropertyInspector') as TForm; AutoHider.Bar_Left_Rect := AutoHider.ObjInspector.BoundsRect; AutoHider.OldDockDrop := AutoHider.ObjInspector.OnDockDrop; AutoHider.ObjInspector.OnDockDrop := AutoHider.MyDockDrop; AutoHider.DockHost := nil; AutoHider.Init_Bar_Left; AutoHider.F_AtTop := True; AutoHider.F_AtLeft := True; AutoHider.Delphi.OnMessage := AutoHider.DelphiOnMessage; end; end else begin Restore_Bar_Left; Restore_Bar_Top; end; end; procedure TAutoHider.Bar_Top_Visible(Value: Boolean); begin if Value = F_AtTop then Exit; if Value then begin Bar_Top.Top := 0; Bar_Top.Show; end else begin Bar_Top.Top := -Bar_Top.Height + 3; end; F_AtTop := Value; end; procedure TAutoHider.Bar_Left_Visible(val: Boolean); begin if val = F_AtLeft then Exit; if val then begin Bar_Left.Left := 0; Bar_Left.Top := 0; Bar_Left.Height := Screen.WorkAreaHeight; Bar_Left.Show; end else begin Bar_Left.Left := -Bar_Left.Width + 3; end; F_AtLeft := val; end; procedure TAutoHider.DelphiOnMessage(var Msg: TMsg; var Handled: Boolean); begin if not Delphi.Active then Exit; if (Msg.message = WM_LBUTTONDOWN) then Exit; if (Msg.message = WM_MOUSEMOVE) or (Msg.message = WM_NCMOUSEMOVE) then begin if F_AtTop then if Mouse.CursorPos.Y Bar_Top.Height + 50 then begin Bar_Top_Visible(False); end; if not F_AtTop then if Mouse.CursorPos.Y then begin Bar_Top_Visible(True); end; if F_AtLeft then if (Mouse.CursorPos.x Bar_Left.Width + 50) and (not Bar_left.Active) then begin Bar_Left_Visible(False); end; if not F_AtLeft then if Mouse.CursorPos.X then begin Bar_Left_Visible(True); end; end; end; procedure TAutoHider.MyDestroy(Sender: TObject); begin if Sender is TApplication then begin Bar_Top_Visible(False); Bar_Left_Visible(False); end else begin if Assigned(OldDestroy) then OldDestroy(Sender); DockHost := nil; Bar_Left := ObjInspector; end; end; procedure TAutoHider.Init_Bar_Left; begin if (Delphi.FindComponent('TabDockHostForm') as TForm) nil then DockHost := Delphi.FindComponent('TabDockHostForm') as TForm else if (Delphi.FindComponent('JoinDockForm') as TForm) nil then DockHost := Delphi.FindComponent('JoinDockForm') as TForm; if DockHost nil then begin DockHost.Top := 0; DockHost.Height := Screen.WorkAreaHeight; OldDestroy := DockHost.OnDestroy; DockHost.OnDestroy := MyDestroy; Bar_Left := DockHost; end else begin Bar_Left := ObjInspector; end; end; procedure TAutoHider.MyDockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer); begin if Assigned(OldDockDrop) then OldDockDrop(Sender, Source, X, Y); Init_Bar_Left; end; initialization AutoHider := TAutoHider.Create; InitAutoHider(True); finalization InitAutoHider(False); AutoHider.Delphi.OnMessage := nil; AutoHider.Free; end.