|
@@ -7,7 +7,7 @@ interface
|
|
uses
|
|
uses
|
|
Classes, SysUtils, Types, Math, FPImage, Fresnel.DOM, Fresnel.Layouter,
|
|
Classes, SysUtils, Types, Math, FPImage, Fresnel.DOM, Fresnel.Layouter,
|
|
Fresnel.Controls, fresnel.renderer, AvgLvlTree, Laz_AVL_Tree, LazLoggerBase,
|
|
Fresnel.Controls, fresnel.renderer, AvgLvlTree, Laz_AVL_Tree, LazLoggerBase,
|
|
- Graphics, Controls, LCLIntf, Forms, LCLStrConsts, LResources;
|
|
|
|
|
|
+ Graphics, Controls, LCLIntf, Forms, LCLStrConsts, LResources, fresnel.events;
|
|
|
|
|
|
type
|
|
type
|
|
TFresnelLCLFontEngine = class;
|
|
TFresnelLCLFontEngine = class;
|
|
@@ -81,6 +81,7 @@ type
|
|
FLayoutQueued: boolean;
|
|
FLayoutQueued: boolean;
|
|
FRenderer: TFresnelLCLRenderer;
|
|
FRenderer: TFresnelLCLRenderer;
|
|
FViewport: TFresnelViewport;
|
|
FViewport: TFresnelViewport;
|
|
|
|
+ procedure HandleClick(Sender: TObject);
|
|
procedure OnDomChanged(Sender: TObject);
|
|
procedure OnDomChanged(Sender: TObject);
|
|
procedure OnQueuedLayout({%H-}Data: PtrInt);
|
|
procedure OnQueuedLayout({%H-}Data: PtrInt);
|
|
procedure SetLayoutQueued(const AValue: boolean);
|
|
procedure SetLayoutQueued(const AValue: boolean);
|
|
@@ -158,6 +159,7 @@ type
|
|
FLayoutQueued: boolean;
|
|
FLayoutQueued: boolean;
|
|
FRenderer: TFresnelLCLRenderer;
|
|
FRenderer: TFresnelLCLRenderer;
|
|
FVisible: boolean;
|
|
FVisible: boolean;
|
|
|
|
+ procedure DoFormClick(Sender: TObject);
|
|
function GetAllowDropFiles: Boolean;
|
|
function GetAllowDropFiles: Boolean;
|
|
function GetAlphaBlend: Boolean;
|
|
function GetAlphaBlend: Boolean;
|
|
function GetAlphaBlendValue: Byte;
|
|
function GetAlphaBlendValue: Byte;
|
|
@@ -285,6 +287,8 @@ procedure FresnelRectToRect(const Src: TFresnelRect; out Dest: TRect);
|
|
|
|
|
|
implementation
|
|
implementation
|
|
|
|
|
|
|
|
+uses fresnel.lclevents;
|
|
|
|
+
|
|
function CompareFresnelLCLFont(Item1, Item2: Pointer): integer;
|
|
function CompareFresnelLCLFont(Item1, Item2: Pointer): integer;
|
|
var
|
|
var
|
|
Font1: TFresnelLCLFont absolute Item1;
|
|
Font1: TFresnelLCLFont absolute Item1;
|
|
@@ -442,6 +446,27 @@ begin
|
|
Result:=Form.AllowDropFiles;
|
|
Result:=Form.AllowDropFiles;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TCustomFresnelForm.DoFormClick(Sender: TObject);
|
|
|
|
+
|
|
|
|
+Var
|
|
|
|
+ aInit : TFresnelMouseEventInit;
|
|
|
|
+ aEl : TFresnelElement;
|
|
|
|
+ evt : TFresnelMouseEvent;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ InitMouseEvent(FForm,aInit);
|
|
|
|
+ aEl:=GetElementAt(aInit.PagePos.X,aInit.PagePos.Y);
|
|
|
|
+ if aEl=Nil then
|
|
|
|
+ aEl:=Self;
|
|
|
|
+ evt:=aEl.EventDispatcher.CreateEvent(aEl,evtClick) as TFresnelMouseEvent;
|
|
|
|
+ try
|
|
|
|
+ evt.initEvent(aInit);
|
|
|
|
+ aEl.EventDispatcher.DispatchEvent(evt);
|
|
|
|
+ finally
|
|
|
|
+ evt.Free;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TCustomFresnelForm.OnFormResize(Sender: TObject);
|
|
procedure TCustomFresnelForm.OnFormResize(Sender: TObject);
|
|
begin
|
|
begin
|
|
inherited SetWidth(Form.ClientWidth);
|
|
inherited SetWidth(Form.ClientWidth);
|
|
@@ -692,6 +717,7 @@ begin
|
|
FForm.Name:=Name;
|
|
FForm.Name:=Name;
|
|
FForm.Visible:=false;
|
|
FForm.Visible:=false;
|
|
FForm.OnResize:=@OnFormResize;
|
|
FForm.OnResize:=@OnFormResize;
|
|
|
|
+ FForm.OnClick:=@DoFormClick;
|
|
FCanvas:=Form.Canvas;
|
|
FCanvas:=Form.Canvas;
|
|
Form.OnPaint:=@FormPaint;
|
|
Form.OnPaint:=@FormPaint;
|
|
|
|
|
|
@@ -896,6 +922,26 @@ begin
|
|
LayoutQueued:=true;
|
|
LayoutQueued:=true;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TFresnelLCLControl.HandleClick(Sender: TObject);
|
|
|
|
+Var
|
|
|
|
+ aInit : TFresnelMouseEventInit;
|
|
|
|
+ aEl : TFresnelElement;
|
|
|
|
+ evt : TFresnelMouseEvent;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ InitMouseEvent(Self,aInit);
|
|
|
|
+ aEl:=FViewport.GetElementAt(aInit.PagePos.X,aInit.PagePos.Y);
|
|
|
|
+ if aEl=Nil then
|
|
|
|
+ aEl:=Self.Viewport;
|
|
|
|
+ evt:=aEl.EventDispatcher.CreateEvent(aEl,evtClick) as TFresnelMouseEvent;
|
|
|
|
+ try
|
|
|
|
+ evt.initEvent(aInit);
|
|
|
|
+ aEl.EventDispatcher.DispatchEvent(evt);
|
|
|
|
+ finally
|
|
|
|
+ evt.Free;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TFresnelLCLControl.OnQueuedLayout(Data: PtrInt);
|
|
procedure TFresnelLCLControl.OnQueuedLayout(Data: PtrInt);
|
|
begin
|
|
begin
|
|
ViewPort.ApplyCSS;
|
|
ViewPort.ApplyCSS;
|
|
@@ -941,6 +987,7 @@ begin
|
|
Layouter.Viewport:=ViewPort;
|
|
Layouter.Viewport:=ViewPort;
|
|
FRenderer:=TFresnelLCLRenderer.Create(nil);
|
|
FRenderer:=TFresnelLCLRenderer.Create(nil);
|
|
FRenderer.Canvas:=Canvas;
|
|
FRenderer.Canvas:=Canvas;
|
|
|
|
+ OnClick:=@HandleClick;
|
|
end;
|
|
end;
|
|
|
|
|
|
destructor TFresnelLCLControl.Destroy;
|
|
destructor TFresnelLCLControl.Destroy;
|