Reserving the screen's edge lazarus / 8-Other ---------------------------------------------------------------------- cyber_python · 2007-11-19 21:47 Does anyone know how I can reserve the screen's edge (for example the windows taskbar reserves the bottom edge of the screen) so tah other apps do not take it into account (they dont use it when maximized - only my application makes use of it)? Also is there a way to have transparent forms in lazarus that use an image as their background (no borders or caption but a transparent bitmap as form - something like the skins of winamp) ? ---------------------------------------------------------------------- Marc · 2007-11-20 11:18 Quote from: "cyber_python"Does anyone know how I can reserve the screen's edge (for example the windows taskbar reserves the bottom edge of the screen) so tah other apps do not take it into account (they dont use it when maximized - only my application makes use of it)? The taskbar is part of the desktop (it is handled by the same process: explorer.exe) Also minimizing/maximizing apps is handled there Maybe you can do some tricks to change the clientarea of the desktop, but i've never tried Quote Also is there a way to have transparent forms in lazarus that use an image as their background (no borders or caption but a transparent bitmap as form - something like the skins of winamp) ? Transparent forms are not yet supported, but might be some day (seen the amount of widgetset staring to supportit) Borderless/headerless forms are possible, see for instance the lazarus splashform ---------------------------------------------------------------------- cyber_python · 2007-11-28 23:14 "Maybe you can do some tricks to change the clientarea of the desktop, but i've never tried " I found out that we can use the winapi SystemParametersInfo to get or set the desktop's client area, like this : Code: [Select] //add "windows" unit to your uses clause function setDesktopWorkingArea(newArea : TRECT; out originalArea : TRECT) : boolean; var  lRet : boolean;  apiRECT : TRECT;  r : PRECT; begin   result:=false;     r:= @apiRECT;   lRet := SystemParametersInfo(SPI_GETWORKAREA, 0, r, 0);     if(lRet)then   begin     originalArea.Top:=  apiRect.Top;   originalArea.Left:=  apiRECT.Left;   originalArea.Bottom:=  apiRECT.Bottom;   originalArea.Right:=  apiRECT.Right;     apiRect.Top:=  newArea.Top;   apiRect.Left:=  newArea.Left;   apiRect.Bottom:=  newArea.Bottom;   apiRect.Right:=  newArea.Right;     lRet := SystemParametersInfo(SPI_SETWORKAREA, 0, r, 0);     if(lRet)then result:=true;     end; end; function getDesktopWorkingArea : TRECT; var  lRet : boolean;  apiRECT : TRECT;  r : PRECT; begin     r:= @apiRECT;   lRet := SystemParametersInfo(SPI_GETWORKAREA, 0, r, 0);     if(lRet)then   begin   result.Top:=  apiRect.Top; result.Left:=  apiRECT.Left; result.Bottom:=  apiRECT.Bottom; result.Right:=  apiRECT.Right;     end; end;