jvcllaz: Add new component JvFormAnimatedIcon

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6736 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2018-11-25 18:46:15 +00:00
parent 9940c604cc
commit c714c4749c
12 changed files with 4560 additions and 0 deletions

View File

@ -0,0 +1 @@
tjvformanimatedicon.bmp

View File

@ -0,0 +1 @@
lazres ../../../resource/jvappfrmreg.res @images.txt

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,29 @@
unit JvAppFrmReg;
{$mode objfpc}{$H+}
interface
uses
SysUtils;
procedure Register;
implementation
{$R ../../resource/jvappfrmreg.res}
uses
Classes, //PropEdits, ComponentEditors,
JvDsgnConsts,
JvFormAnimatedIcon;
procedure Register;
begin
RegisterComponents(RsPaletteJvcl, [
TJvFormAnimatedIcon
]);
end;
end.

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="JvFormAnimatedIcon_Demo"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
<Icon Value="0"/>
</General>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0"/>
</RunParams>
<RequiredPackages Count="3">
<Item1>
<PackageName Value="JvMMLazR"/>
</Item1>
<Item2>
<PackageName Value="JvAppFrmLazR"/>
</Item2>
<Item3>
<PackageName Value="LCL"/>
</Item3>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="JvFormAnimatedIcon_Demo.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<ResourceBaseClass Value="Form"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="JvFormAnimatedIcon_Demo"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,22 @@
program JvFormAnimatedIcon_Demo;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, main
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,54 @@
unit main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls,
JvFormAnimatedIcon, JvBmpAnimator;
type
{ TForm1 }
TForm1 = class(TForm)
ImageList1: TImageList;
JvFormAnimatedIcon1: TJvFormAnimatedIcon;
Label1: TLabel;
ListView1: TListView;
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
procedure AddItem(AIndex: Integer);
begin
with Listview1.Items.Add do begin
Caption := 'Image' + IntToStr(AIndex);
ImageIndex := AIndex;
end;
end;
var
i: Integer;
begin
for i:=0 to ImageList1.Count-1 do
AddItem(i);
end;
end.

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Package Version="4">
<PathDelim Value="\"/>
<Name Value="jvappfrmlazd"/>
<Type Value="RunAndDesignTime"/>
<Author Value="Various authors - see unit header for details."/>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="..\design\JvAppFrm"/>
<UnitOutputDirectory Value="..\lib\$(TargetCPU)-$(TargetOS)\design\jvappfrm"/>
</SearchPaths>
</CompilerOptions>
<Description Value="JVCL application forms (design time) containing form enhancement components:
- TJvFormAnimatedIcon
"/>
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
<Version Major="1" Release="4"/>
<Files Count="1">
<Item1>
<Filename Value="..\design\JvAppFrm\jvappfrmreg.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="JvAppFrmReg"/>
</Item1>
</Files>
<RequiredPkgs Count="3">
<Item1>
<PackageName Value="JvAppFrmLazR"/>
</Item1>
<Item2>
<PackageName Value="JvCoreLazD"/>
</Item2>
<Item3>
<PackageName Value="JvCoreLazR"/>
</Item3>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
</Package>
</CONFIG>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Package Version="4">
<PathDelim Value="\"/>
<Name Value="JvAppFrmLazR"/>
<Author Value="Various authors - see unit headers for details."/>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="..\run\JvAppFrm"/>
<UnitOutputDirectory Value="..\lib\$(TargetCPU)-$(TargetOS)\run\JvAppFrm"/>
</SearchPaths>
</CompilerOptions>
<Description Value="JVCL Application Forms (Runtime) containing form enhancement components:
- TJvFormAnimatedIcon
"/>
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
<Version Major="1" Release="4"/>
<Files Count="1">
<Item1>
<Filename Value="..\run\JvAppFrm\JvFormAnimatedIcon.pas"/>
<UnitName Value="JvFormAnimatedIcon"/>
</Item1>
</Files>
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="JvCoreLazR"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
<UseFileFilters Value="True"/>
</PublishOptions>
</Package>
</CONFIG>

Binary file not shown.

View File

@ -0,0 +1,133 @@
{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: JvFormAnimatedIcon.PAS, released on 2001-02-28.
The Initial Developer of the Original Code is Sébastien Buysse [sbuysse att buypin dott com]
Portions created by Sébastien Buysse are Copyright (C) 2001 Sébastien Buysse.
All Rights Reserved.
Contributor(s): Michael Beck [mbeck att bigfoot dott com].
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.delphi-jedi.org
Known Issues:
-----------------------------------------------------------------------------}
// $Id$
unit JvFormAnimatedIcon;
{$mode objfpc}{$H+}
interface
uses
SysUtils, Classes, Controls, Forms, ExtCtrls,
ImgList, Graphics;
// JvComponentBase;
type
TJvFormAnimatedIcon = class(TComponent) //JvComponent)
private
FForm: TCustomForm;
FActive: Boolean;
FDelay: Cardinal;
FIcons: TImageList;
FTimer: TTimer;
FNumber: Integer;
procedure SetActive(const Value: Boolean);
procedure SetDelay(const Value: Cardinal);
procedure Animate(Sender: TObject);
procedure SetIcons(const Value: TImageList);
protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Icons: TImageList read FIcons write SetIcons;
property Active: Boolean read FActive write SetActive default True;
property Delay: Cardinal read FDelay write SetDelay default 100;
end;
implementation
uses
JvJVCLUtils;
constructor TJvFormAnimatedIcon.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FForm := GetParentForm(TControl(AOwner));
FActive := True;
FNumber := 0;
FDelay := 100;
FTimer := nil;
if not (csDesigning in ComponentState) then
begin
FTimer := TTimer.Create(Self);
FTimer.OnTimer := @Animate;
FTimer.Interval := FDelay;
FTimer.Enabled := FActive;
end;
end;
destructor TJvFormAnimatedIcon.Destroy;
begin
FTimer.Free;
inherited Destroy;
end;
procedure TJvFormAnimatedIcon.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if Operation = opRemove then
begin
if AComponent = FIcons then
SetIcons(nil);
end;
end;
procedure TJvFormAnimatedIcon.Animate(Sender: TObject);
begin
if (FIcons <> nil) and (FIcons.Count <> 0) then
begin
FNumber := (FNumber + 1) mod FIcons.Count;
FIcons.GetIcon(FNumber, TForm(FForm).Icon);
end;
end;
procedure TJvFormAnimatedIcon.SetActive(const Value: Boolean);
begin
FActive := Value;
if not (csDesigning in ComponentState) then
FTimer.Enabled := FActive;
end;
procedure TJvFormAnimatedIcon.SetDelay(const Value: Cardinal);
begin
FDelay := Value;
if not (csDesigning in ComponentState) then
FTimer.Interval := FDelay;
end;
procedure TJvFormAnimatedIcon.SetIcons(const Value: TImageList);
begin
ReplaceComponentReference(Self, Value, TComponent(FIcons));
end;
end.