Browse Source

* LCL edit demo

Michaël Van Canneyt 5 months ago
parent
commit
b77b0921cf

+ 1 - 0
demo/lcl/Edit/.gitignore

@@ -0,0 +1 @@
+editdemo

+ 83 - 0
demo/lcl/Edit/editdemo.lpi

@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="12"/>
+    <General>
+      <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+        <MainUnitHasScaledStatement Value="False"/>
+      </Flags>
+      <SessionStorage Value="InProjectDir"/>
+      <Title Value="editdemo"/>
+      <UseAppBundle Value="False"/>
+      <ResourceType Value="res"/>
+    </General>
+    <CustomData Count="3">
+      <Item0 Name="OpenAPIBase"/>
+      <Item1 Name="OpenAPIConfig"/>
+      <Item2 Name="OpenAPIFile"/>
+    </CustomData>
+    <BuildModes>
+      <Item Name="Default" Default="True"/>
+    </BuildModes>
+    <PublishOptions>
+      <Version Value="2"/>
+      <UseFileFilters Value="True"/>
+    </PublishOptions>
+    <RunParams>
+      <FormatVersion Value="2"/>
+    </RunParams>
+    <RequiredPackages>
+      <Item>
+        <PackageName Value="FresnelLCL"/>
+      </Item>
+    </RequiredPackages>
+    <Units>
+      <Unit>
+        <Filename Value="editdemo.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="EditDemo"/>
+      </Unit>
+      <Unit>
+        <Filename Value="frmedit.pp"/>
+        <IsPartOfProject Value="True"/>
+      </Unit>
+      <Unit>
+        <Filename Value="frmhost.pas"/>
+        <IsPartOfProject Value="True"/>
+        <ComponentName Value="HostForm"/>
+        <HasResources Value="True"/>
+        <ResourceBaseClass Value="Form"/>
+      </Unit>
+    </Units>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="11"/>
+    <Target>
+      <Filename Value="editdemo"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir);/home/michael/source/fpgui/src/corelib/"/>
+      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <Linking>
+      <Debugging>
+        <DebugInfoType Value="dsDwarf3"/>
+      </Debugging>
+    </Linking>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions>
+      <Item>
+        <Name Value="EAbort"/>
+      </Item>
+      <Item>
+        <Name Value="ECodetoolError"/>
+      </Item>
+      <Item>
+        <Name Value="EFOpenError"/>
+      </Item>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 20 - 0
demo/lcl/Edit/editdemo.lpr

@@ -0,0 +1,20 @@
+program EditDemo;
+
+uses
+  {$IFDEF Unix}
+  cthreads,
+  {$ENDIF}
+  Forms,
+  Interfaces,
+  Fresnel,
+//  Fresnel.lcl,
+  frmedit,
+  frmhost;
+
+begin
+  RequireDerivedFormResource:=True;
+  Application.Initialize;
+  Application.CreateForm(THostForm,HostForm);
+  Application.Run;
+end.
+

+ 100 - 0
demo/lcl/Edit/frmedit.pp

@@ -0,0 +1,100 @@
+unit frmedit;
+
+{$mode ObjFPC}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, Fresnel.Forms, Fresnel.Controls, Fresnel.Events,
+  FCL.Events, Fresnel.Edit, Fresnel.Classes;
+
+type
+
+  { TEditForm }
+
+  TEditForm = class(TFresnelForm)
+    Body1: TBody;
+    Div1: TDiv;
+    Label1: TLabel;
+    Edit1 : TEdit;
+    procedure Label1Click(Event: TAbstractEvent);
+  private
+    FBlocked : Boolean;
+  public
+    constructor CreateNew(aOwner: TComponent); override;
+  end;
+
+var
+  EditForm: TEditForm;
+
+implementation
+
+{ TEditForm }
+
+procedure TEditForm.Label1Click(Event: TAbstractEvent);
+begin
+  FBlocked:=Not FBlocked;
+  if FBlocked then
+    Label1.Caption:='Allow typing'
+  else
+    Label1.Caption:='Block typing';
+end;
+
+constructor TEditForm.CreateNew(aOwner: TComponent);
+begin
+  inherited CreateNew(aOWner);
+
+  Caption:='Edit demo';
+  FormBounds:=BoundsRectFre(450,300,350,255);
+  Stylesheet.Text:=
+    'div {'+
+    '  padding: 3px; '+
+    '  border: 2px solid black; '+
+    '  margin: 6px;'+
+    '}';
+
+  Body1:=TBody.Create(Self);
+  Body1.Parent:=Self;
+  Body1.Style:='border: 2px solid blue;'#10;
+  Body1.Name:='Body1';
+
+  Div1:=TDiv.Create(Self);
+  Div1.Parent:=Body1;
+  Div1.Style:='background-color: blue;'#10'border-color: black;'#10'height:30px;';
+  Div1.Name:='Div1';
+
+  Label1:=TLabel.Create(Self);
+  Label1.Parent:=Div1;
+  With Label1 do
+    begin
+    Name:='Label1';
+    Style := 'color: red;';
+    Caption := 'Block typing';
+    OnClick := @Label1Click;
+    end;
+  Stylesheet.Add('div {'
+    //+'  background:#44cc66;'
+    +'  background:linear-gradient(#ededed, #bab1ba);'
+    +'  border:7px solid #18ab29;'
+    +'  padding:16px 31px;'
+    +'  font-size:15px; '
+    +'  font-family:Arial; '
+    + ' font-weight:bold;'
+    +'  text-shadow: 0 1 1 #333;'
+    +'  color:#fff;'
+    +'}'
+    +'div:hover {'
+    +'  background:#88bb22;'
+    +'};');
+
+  Edit1:=TEdit.Create(Self);
+  Edit1.Name:='Edit1';
+  Edit1.Value:='Edit1';
+  Edit1.Parent:=Body1;
+  Edit1.Style:='font-size:15px; family:Arial; background-color: yellow;'#10
+     +'border-color: black;'#10; // 'height:30px;width: 100px;';
+  Edit1.Focus;
+  Caption:='Fresnel Edit Demo';
+end;
+
+end.

+ 9 - 0
demo/lcl/Edit/frmhost.lfm

@@ -0,0 +1,9 @@
+object HostForm: THostForm
+  Left = 638
+  Height = 240
+  Top = 259
+  Width = 320
+  Caption = 'Edit demo using LCL'
+  LCLVersion = '4.99.0.0'
+  OnPaint = FormPaint
+end

+ 56 - 0
demo/lcl/Edit/frmhost.pas

@@ -0,0 +1,56 @@
+{
+  This is the HostForm of the LCL application.
+  Once it is shown, it automatically opens the fresnel form.
+}
+unit frmhost;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, frmEdit;
+
+type
+
+  { THostForm }
+
+  THostForm = class(TForm)
+    procedure FormPaint(Sender: TObject);
+  private
+    FQueued: boolean;
+    procedure ShowFresnelForm({%H-}Data: PtrInt);
+  public
+  end;
+
+var
+  HostForm: THostForm;
+
+implementation
+
+uses Fresnel.LCL;
+
+{$R *.lfm}
+
+{ THostForm }
+
+procedure THostForm.FormPaint(Sender: TObject);
+begin
+  if FQueued then exit;
+  FQueued:=true;
+  Application.QueueAsyncCall(@ShowFresnelForm,0)
+end;
+
+procedure THostForm.ShowFresnelForm(Data: PtrInt);
+var
+  lFontEngine : TFresnelLCLFontEngine;
+begin
+  EditForm:=TEditForm.CreateNew(Self);
+  lFontEngine:=TFresnelLCLFontEngine.Create(self);
+  lFontEngine.Canvas:=Self.Canvas;
+  EditForm.FontEngine:=lFontEngine;
+  EditForm.Show;
+end;
+
+end.
+