mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2024-11-24 08:02:15 +02:00
ca8bc9dff4
Added the PDS file to extract the HTML Help files using PasDoc Added more XML documentation Fixed some XML errors. Removed the license copy from the pas units. Updated the LICENSE.md file
206 lines
6.0 KiB
ObjectPascal
206 lines
6.0 KiB
ObjectPascal
unit uCEFScrollViewComponent;
|
|
|
|
{$IFDEF FPC}
|
|
{$MODE OBJFPC}{$H+}
|
|
{$ENDIF}
|
|
|
|
{$I cef.inc}
|
|
|
|
{$IFNDEF TARGET_64BITS}{$ALIGN ON}{$ENDIF}
|
|
{$MINENUMSIZE 4}
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF DELPHI16_UP}
|
|
{$IFDEF MSWINDOWS}WinApi.Windows,{$ENDIF} System.Classes,
|
|
{$ELSE}
|
|
{$IFDEF MSWINDOWS}Windows,{$ENDIF} Classes,
|
|
{$IFDEF FPC}
|
|
LCLProc, LCLType, LCLIntf, LResources, InterfaceBase,
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
uCEFTypes, uCEFInterfaces, uCEFConstants, uCEFViewsFrameworkEvents, uCEFViewComponent;
|
|
|
|
type
|
|
{$IFNDEF FPC}{$IFDEF DELPHI16_UP}[ComponentPlatformsAttribute(pfidWindows or pfidOSX or pfidLinux)]{$ENDIF}{$ENDIF}
|
|
TCEFScrollViewComponent = class(TCEFViewComponent)
|
|
protected
|
|
FScrollView : ICefScrollView;
|
|
|
|
procedure DestroyView; override;
|
|
procedure Initialize; override;
|
|
|
|
function GetInitialized : boolean; override;
|
|
function GetAsView : ICefView; override;
|
|
function GetAsScrollView : ICefScrollView; override;
|
|
function GetContentView : ICefView;
|
|
function GetVisibleContentRect : TCefRect;
|
|
function GetHasHorizontalScrollbar : boolean;
|
|
function GetHorizontalScrollbarHeight : Integer;
|
|
function GetHasVerticalScrollbar : boolean;
|
|
function GetVerticalScrollbarWidth : Integer;
|
|
|
|
procedure SetContentView(const view: ICefView);
|
|
|
|
// ICefViewDelegateEvents
|
|
procedure doCreateCustomView; override;
|
|
|
|
public
|
|
procedure CreateScrollView;
|
|
|
|
property ContentView : ICefView read GetContentView write SetContentView;
|
|
property VisibleContentRect : TCefRect read GetVisibleContentRect;
|
|
property HorizontalScrollbarHeight : Integer read GetHorizontalScrollbarHeight;
|
|
property VerticalScrollbarWidth : Integer read GetVerticalScrollbarWidth;
|
|
property HasHorizontalScrollbar : boolean read GetHasHorizontalScrollbar;
|
|
property HasVerticalScrollbar : boolean read GetHasVerticalScrollbar;
|
|
end;
|
|
|
|
{$IFDEF FPC}
|
|
procedure Register;
|
|
{$ENDIF}
|
|
|
|
// *********************************************************
|
|
// ********************** ATTENTION ! **********************
|
|
// *********************************************************
|
|
// ** **
|
|
// ** MANY OF THE EVENTS IN CEF4DELPHI COMPONENTS LIKE **
|
|
// ** TCHROMIUM, TFMXCHROMIUM OR TCEFAPPLICATION ARE **
|
|
// ** EXECUTED IN A CEF THREAD BY DEFAULT. **
|
|
// ** **
|
|
// ** WINDOWS CONTROLS MUST BE CREATED AND DESTROYED IN **
|
|
// ** THE SAME THREAD TO AVOID ERRORS. **
|
|
// ** SOME OF THEM RECREATE THE HANDLERS IF THEY ARE **
|
|
// ** MODIFIED AND CAN CAUSE THE SAME ERRORS. **
|
|
// ** **
|
|
// ** DON'T CREATE, MODIFY OR DESTROY WINDOWS CONTROLS **
|
|
// ** INSIDE THE CEF4DELPHI EVENTS AND USE **
|
|
// ** SYNCHRONIZATION OBJECTS TO PROTECT VARIABLES AND **
|
|
// ** FIELDS IF THEY ARE ALSO USED IN THE MAIN THREAD. **
|
|
// ** **
|
|
// ** READ THIS FOR MORE INFORMATION : **
|
|
// ** https://www.briskbard.com/index.php?pageid=cef **
|
|
// ** **
|
|
// ** USE OUR FORUMS FOR MORE QUESTIONS : **
|
|
// ** https://www.briskbard.com/forum/ **
|
|
// ** **
|
|
// *********************************************************
|
|
// *********************************************************
|
|
|
|
implementation
|
|
|
|
uses
|
|
uCEFScrollView, uCEFMiscFunctions, uCEFViewDelegate;
|
|
|
|
procedure TCEFScrollViewComponent.CreateScrollView;
|
|
begin
|
|
CreateView;
|
|
end;
|
|
|
|
procedure TCEFScrollViewComponent.doCreateCustomView;
|
|
var
|
|
TempDelegate : ICefViewDelegate;
|
|
begin
|
|
if (FScrollView = nil) then
|
|
try
|
|
TempDelegate := TCustomViewDelegate.Create(self);
|
|
FScrollView := TCefScrollViewRef.CreateScrollView(TempDelegate);
|
|
finally
|
|
TempDelegate := nil;
|
|
end;
|
|
end;
|
|
|
|
procedure TCEFScrollViewComponent.Initialize;
|
|
begin
|
|
inherited Initialize;
|
|
|
|
FScrollView := nil;
|
|
end;
|
|
|
|
procedure TCEFScrollViewComponent.DestroyView;
|
|
begin
|
|
FScrollView := nil;
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetInitialized : boolean;
|
|
begin
|
|
Result := (FScrollView <> nil);
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetAsView : ICefView;
|
|
begin
|
|
Result := FScrollView as ICefView;
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetAsScrollView : ICefScrollView;
|
|
begin
|
|
Result := FScrollView;
|
|
end;
|
|
|
|
procedure TCEFScrollViewComponent.SetContentView(const view: ICefView);
|
|
begin
|
|
if Initialized then FScrollView.SetContentView(view);
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetContentView : ICefView;
|
|
begin
|
|
if Initialized then
|
|
Result := FScrollView.GetContentView
|
|
else
|
|
Result := nil;
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetVisibleContentRect : TCefRect;
|
|
var
|
|
TempRect : TCefRect;
|
|
begin
|
|
if Initialized then
|
|
TempRect := FScrollView.GetVisibleContentRect
|
|
else
|
|
begin
|
|
TempRect.x := 0;
|
|
TempRect.y := 0;
|
|
TempRect.width := 0;
|
|
TempRect.height := 0;
|
|
end;
|
|
|
|
Result := TempRect;
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetHasHorizontalScrollbar : boolean;
|
|
begin
|
|
Result := Initialized and FScrollView.HasHorizontalScrollbar;
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetHorizontalScrollbarHeight : Integer;
|
|
begin
|
|
if Initialized then
|
|
Result := FScrollView.GetHorizontalScrollbarHeight
|
|
else
|
|
Result := 0;
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetHasVerticalScrollbar : boolean;
|
|
begin
|
|
Result := Initialized and FScrollView.HasVerticalScrollbar;
|
|
end;
|
|
|
|
function TCEFScrollViewComponent.GetVerticalScrollbarWidth : Integer;
|
|
begin
|
|
if Initialized then
|
|
Result := FScrollView.GetVerticalScrollbarWidth
|
|
else
|
|
Result := 0;
|
|
end;
|
|
|
|
{$IFDEF FPC}
|
|
procedure Register;
|
|
begin
|
|
{$I res/tcefscrollviewcomponent.lrs}
|
|
RegisterComponents('Chromium Views Framework', [TCEFScrollViewComponent]);
|
|
end;
|
|
{$ENDIF}
|
|
|
|
end.
|