From: <sf...@us...> - 2010-11-02 08:36:39
|
Revision: 3406 http://jcl.svn.sourceforge.net/jcl/?rev=3406&view=rev Author: sfarrow Date: 2010-11-02 08:36:32 +0000 (Tue, 02 Nov 2010) Log Message: ----------- Provided overloads for the ScreenShot function, allowing the passing in of a TCustomForm descendent, a TWinControl Descendent or both. Also added the ability to print the contents of a control given it's name. Added relevant exception resource strings to JclVclResources. Modified Paths: -------------- trunk/jcl/source/vcl/JclGraphics.pas trunk/jcl/source/vcl/JclVclResources.pas Modified: trunk/jcl/source/vcl/JclGraphics.pas =================================================================== --- trunk/jcl/source/vcl/JclGraphics.pas 2010-10-31 21:33:36 UTC (rev 3405) +++ trunk/jcl/source/vcl/JclGraphics.pas 2010-11-02 08:36:32 UTC (rev 3406) @@ -54,7 +54,7 @@ uses Windows, - Classes, SysUtils, +forms, Classes, SysUtils, {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} @@ -510,6 +510,10 @@ RegionBitmapMode: TJclRegionBitmapMode; UseAlphaChannel: Boolean = False): HRGN; procedure ScreenShot(bm: TBitmap; Left, Top, Width, Height: Integer; Window: THandle = HWND_DESKTOP); overload; procedure ScreenShot(bm: TBitmap; IncludeTaskBar: Boolean = True); overload; +procedure ScreenShot(bm: TBitmap; ControlToPrint: TWinControl); overload; +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: TWinControl); overload; +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm); overload; +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: String); overload; function MapWindowRect(hWndFrom, hWndTo: THandle; ARect: TRect):TRect; // PolyLines and Polygons @@ -2134,6 +2138,66 @@ ScreenShot(bm, R.Left, R.Top, R.Right, R.Bottom, HWND_DESKTOP); end; +procedure ScreenShot(bm: TBitmap; ControlToPrint: TWinControl); overload; +begin +//uses the ActiveForm property of TScreen to determine on which form the control will be searched for. + if ControlToPrint <> nil then + ScreenShot(bm, Screen.ActiveForm, ControlToPrint) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) + end; + +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: TWinControl); overload; +begin + if FormToPrint <> nil then + begin + if (ControlToPrint is TWinControl) then + ScreenShot(bm, FormToPrint, ControlToPrint.Name) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidControlType,[ControlToPrint.Name]) + end + else if ControlToPrint <> nil then + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) +end; + +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm); overload; +begin + //Prints the entire forms area. + if FormToPrint <> nil then + ScreenShot(bm, FormToPrint.Left, FormToPrint.Top, FormToPrint.Width, FormToPrint.Height, FormToPrint.Handle) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) +end; + +procedure ScreenShot(bm: TBitmap; FormToPrint: TCustomForm; ControlToPrint: String); overload; +var + Component: TComponent; +begin + if FormToPrint <> nil then + begin + if Length(ControlToPrint) =0 then + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['component']) + else + begin + Component :=nil; + FormToPrint.FindComponent(ControlToPrint); + if Component =nil then + raise EJclGraphicsError.CreateResFmt(@RsComponentDoesNotExist,[ControlToPrint, FormToPrint.Name]) + else + begin + if Component is TWinControl then + ScreenShot(bm, TWinControl(Component).Left, TWinControl(Component).Top, TWinControl(Component).Width, TWinControl(Component).Height, TWinControl(Component).Handle) + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidControlType,[ControlToPrint]); + end; + end; + end + else + raise EJclGraphicsError.CreateResFmt(@RSInvalidFormOrComponent, ['form']) +end; + function MapWindowRect(hWndFrom, hWndTo: THandle; ARect:TRect):TRect; begin MapWindowPoints(hWndFrom, hWndTo, ARect, 2); Modified: trunk/jcl/source/vcl/JclVclResources.pas =================================================================== --- trunk/jcl/source/vcl/JclVclResources.pas 2010-10-31 21:33:36 UTC (rev 3405) +++ trunk/jcl/source/vcl/JclVclResources.pas 2010-11-02 08:36:32 UTC (rev 3406) @@ -72,6 +72,9 @@ RsRegionCouldNotCreated = 'Region could not be created'; RsInvalidHandleForRegion = 'Invalid handle for region'; RsInvalidRegionInfo = 'Invalid RegionInfo'; + RsInvalidControlType = '%s is not descended from TWinControl'; + RsComponentDoesNotExist = '%s does not exist on form %s'; + RsInvalidFormOrComponent = 'A %s with a nil reference has been pass to the routine'; RsBitmapExtension = '.bmp'; RsJpegExtension = '.jpg'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |