Стартовый пул
This commit is contained in:
619
poweredby/latest_stable/aboutpoweredbyunit.pas
Normal file
619
poweredby/latest_stable/aboutpoweredbyunit.pas
Normal file
@@ -0,0 +1,619 @@
|
||||
{ TAboutPoweredby and TAboutBox Component License
|
||||
|
||||
Copyright (C) 2014 Gordon Bamber minesadorada@charcodelvalle.com
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
}
|
||||
unit AboutPoweredbyunit;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, Controls, Dialogs, Forms, Graphics, LResources, SysUtils,
|
||||
ExtCtrls, StdCtrls, StrUtils,Buttons,PropEdits;
|
||||
const
|
||||
C_DEFAULTLICENSEFORMWIDTH = 500;
|
||||
C_DEFAULTLICENSEFORMWIDTH_LINUX = C_DEFAULTLICENSEFORMWIDTH + 100;
|
||||
C_DEFAULTLICENSEFORMHEIGHT = 400;
|
||||
C_DEFAULTLICENSEFORMHEIGHT_LINUX = C_DEFAULTLICENSEFORMHEIGHT + 50;
|
||||
|
||||
type
|
||||
TLicenseType = (abNone, abGPL, abLGPL, abMIT, abModifiedGPL, abProprietry);
|
||||
|
||||
TAboutbox = class(TComponent)
|
||||
private
|
||||
{ Private declarations }
|
||||
fDialog: TForm;
|
||||
fBackgroundbitmap: TBitMap;
|
||||
fBackgroundResourceName:String;
|
||||
fDescription: TStrings;
|
||||
fDialogTitle, fVersion, fAuthorname, fAuthorEmail, fOrganisation,
|
||||
fComponentName: string;
|
||||
fDialogHeight, fDialogWidth: integer;
|
||||
fStretchBackground: boolean;
|
||||
fFont: TFont;
|
||||
fColor: TColor;
|
||||
fLicenseType: TLicenseType;
|
||||
procedure SetBackgroundBitmap(const AValue: TBitMap);
|
||||
procedure SetDescriptionStrings(const AValue: TStrings);
|
||||
procedure SetFont(const AValue: TFont);
|
||||
procedure ShowLicense(Sender: TObject);
|
||||
procedure SetDialogTitle(Const AValue:String);
|
||||
protected
|
||||
{ Protected declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
procedure ShowDialog;
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
published
|
||||
{ Published declarations }
|
||||
// Set these properties in your component Constructor method
|
||||
property BackGround: TBitMap read fBackgroundbitmap write SetBackgroundBitmap;
|
||||
property BackgroundResourceName:String read fBackgroundResourceName write fBackgroundResourceName;
|
||||
property Description: TStrings read fDescription write SetDescriptionStrings;
|
||||
property Title: string read fDialogTitle write SetDialogTitle;
|
||||
property Height: integer read fDialogHeight write fDialogHeight;
|
||||
property Width: integer read fDialogWidth write fDialogWidth;
|
||||
property Font: TFont read fFont write SetFont;
|
||||
property BackGroundColor: TColor read fColor write fColor;
|
||||
property StretchBackground: boolean read fStretchBackground
|
||||
write fStretchBackground default False;
|
||||
property Version: string read fVersion write fVersion;
|
||||
property Authorname: string read fAuthorname write fAuthorname;
|
||||
property Organisation: string read fOrganisation write fOrganisation;
|
||||
property AuthorEmail: string read fAuthorEmail write fAuthorEmail;
|
||||
property ComponentName: string read fComponentName write fComponentName;
|
||||
property LicenseType: TLicenseType read fLicenseType write fLicenseType;
|
||||
end;
|
||||
|
||||
TAboutPoweredBy = class(TComponent)
|
||||
private
|
||||
{ Private declarations }
|
||||
fAboutBox: tAboutBox;
|
||||
procedure SetMyComponentName(Const Avalue:String);
|
||||
procedure SetAboutBoxWidth(Const AValue:Integer);
|
||||
procedure SetAboutBoxHeight(Const AValue:Integer);
|
||||
procedure SetAboutBoxDescription(Const AValue:String);
|
||||
procedure SetAboutBoxFontName(Const AValue:String);
|
||||
procedure SetAboutBoxFontSize(Const AValue:Integer);
|
||||
procedure SetAboutBoxBitmap(Const AValue:TBitmap);
|
||||
procedure SetAboutBoxBackgroundColor(Const AValue:TColor);
|
||||
procedure SetAboutBoxTitle(Const AValue:String);
|
||||
|
||||
procedure SetAboutBoxVersion(Const AValue:String);
|
||||
procedure SetAboutBoxAuthorname(Const AValue:String);
|
||||
procedure SetAboutBoxOrganisation(Const AValue:String);
|
||||
procedure SetAboutBoxAuthorEmail(Const AValue:String);
|
||||
procedure SetAboutBoxBackgroundResourceName(Const AValue:String);
|
||||
procedure SetAboutBoxLicenseType(Const AValue:String);
|
||||
procedure SetAboutBoxStretchBackgroundImage(Const AValue:Boolean);
|
||||
protected
|
||||
{ Protected declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
constructor Create(AOwner: TComponent); override; // Constructor must be public
|
||||
destructor Destroy; override; // Destructor must be public
|
||||
|
||||
// Set these (hidden) properties in your inherited component's Create procedure
|
||||
property AboutBoxComponentName:String write SetMyComponentName;
|
||||
property AboutBoxWidth:Integer write SetAboutBoxWidth;
|
||||
property AboutBoxHeight:Integer write SetAboutBoxHeight;
|
||||
property AboutBoxDescription:String write SetAboutBoxDescription;
|
||||
property AboutBoxFontName:String write SetAboutBoxFontName;
|
||||
property AboutBoxFontSize:Integer write SetAboutBoxFontSize;
|
||||
property AboutBoxBackgroundColor:TColor write SetAboutBoxBackgroundColor;
|
||||
property AboutBoxTitle:String write SetAboutBoxTitle;
|
||||
|
||||
property AboutBoxVersion:String write SetAboutBoxVersion;
|
||||
property AboutBoxAuthorname:String write SetAboutBoxAuthorname;
|
||||
property AboutBoxOrganisation:String write SetAboutBoxOrganisation;
|
||||
property AboutBoxAuthorEmail:String write SetAboutBoxAuthorEmail;
|
||||
property AboutBoxLicenseType:String write SetAboutBoxLicenseType;
|
||||
property AboutBoxBackgroundResourceName:String write SetAboutBoxBackgroundResourceName;
|
||||
property AboutBoxStretchBackgroundImage:Boolean write SetAboutBoxStretchBackgroundImage;
|
||||
published
|
||||
// The clickable 'About' property will automaticcally appear in any component
|
||||
// descended from TAboutPoweredby
|
||||
|
||||
// About this component...
|
||||
property About: tAboutBox read fAboutBox write fAboutBox;
|
||||
end;
|
||||
|
||||
// Declaration for the 'About' property editor
|
||||
TAboutPropertyEditor = class(TClassPropertyEditor)
|
||||
public
|
||||
procedure Edit; override;
|
||||
function GetAttributes: TPropertyAttributes; override;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
|
||||
{For i8n if required}
|
||||
resourcestring
|
||||
rs_Componentname='Component name';
|
||||
rs_About='About';
|
||||
rs_License='License';
|
||||
rs_By='By';
|
||||
rs_For='For';
|
||||
rs_DatafileMissing='Resource datafile license.lrs is missing';
|
||||
rs_LicenseTextError='There is something wrong with the Licence text';
|
||||
rs_AboutBoxError = 'Subcomponent TAboutBox Error';
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{ TABoutBox}
|
||||
|
||||
constructor TAboutbox.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
fBackgroundbitmap := TBitMap.Create;
|
||||
fDescription := TStringList.Create;
|
||||
fFont := TFont.Create;
|
||||
fColor := clDefault;
|
||||
fLicenseType := abNone;
|
||||
fComponentName:=rs_Componentname;
|
||||
fDialogTitle:=rs_About + ' ' + fComponentName;
|
||||
|
||||
fDialogWidth:=320;
|
||||
fDialogHeight:=280;
|
||||
fVersion:='1.0.0.0';
|
||||
fLicenseType:=abNone;
|
||||
end;
|
||||
|
||||
destructor TAboutbox.Destroy;
|
||||
begin
|
||||
FreeAndNil(fFont);
|
||||
FreeAndNil(fDescription);
|
||||
FreeAndNil(fBackgroundbitmap);
|
||||
inherited Destroy;
|
||||
end;
|
||||
procedure TAboutbox.SetDialogTitle(Const AValue:String);
|
||||
begin
|
||||
if AnsiContainsText(fDialogTitle, rs_About) then
|
||||
fDialogTitle := AValue
|
||||
else
|
||||
fDialogTitle := rs_About + ' ' + Avalue;
|
||||
end;
|
||||
|
||||
procedure TAboutbox.ShowDialog;
|
||||
var
|
||||
OKbutton, LicenseButton: TBitBtn;
|
||||
lbl_Description: TLabel;
|
||||
img_BackGround: TImage;
|
||||
sz: string;
|
||||
iCount: integer;
|
||||
r:TLResource;
|
||||
begin
|
||||
fDialog := TForm.CreateNew(nil);
|
||||
try //.. finally FreeAndNil everything
|
||||
with fDialog do
|
||||
begin
|
||||
// Set Dialog properties
|
||||
position := poScreenCenter;
|
||||
borderstyle := bsToolWindow;
|
||||
Caption := fDialogTitle;
|
||||
formstyle := fsSystemStayOnTop;
|
||||
color := fColor;
|
||||
font := fFont;
|
||||
if (fDialogHeight > 0) then
|
||||
Height := fDialogHeight
|
||||
else
|
||||
Height := 240;
|
||||
if (fDialogWidth > 0) then
|
||||
Width := fDialogWidth
|
||||
else
|
||||
Width := 320;
|
||||
|
||||
// Create a background image
|
||||
img_BackGround := Timage.Create(fDialog);
|
||||
with img_BackGround do
|
||||
// Set img_BackGround properties
|
||||
begin
|
||||
Align := alClient;
|
||||
Stretch := fStretchBackground;
|
||||
// Bitmap assigned?
|
||||
if Assigned(fBackgroundbitmap) then
|
||||
Picture.Assign(fBackgroundbitmap);
|
||||
// Resource file?
|
||||
r := LazarusResources.Find(fBackgroundResourceName);
|
||||
if r <> nil then
|
||||
img_BackGround.Picture.LoadFromLazarusResource(fBackgroundResourceName);
|
||||
SendToBack;
|
||||
parent := fDialog;
|
||||
end;
|
||||
|
||||
// Create a BitBtn button
|
||||
okbutton := TBitBtn.Create(fDialog);
|
||||
// Set BitBtn properties
|
||||
with okButton do
|
||||
begin
|
||||
Kind := bkClose;
|
||||
left := (fDialog.Width div 2) - Width div 2;
|
||||
top := fDialog.Height - Height - 10;
|
||||
ParentFont:=False;
|
||||
parent := fDialog;
|
||||
end;
|
||||
|
||||
// Create a License Button
|
||||
LicenseButton := TBitBtn.Create(fDialog);
|
||||
if (fLicenseType <> abNone) then
|
||||
// Put it on the right
|
||||
begin
|
||||
LicenseButton.Top := OKButton.Top;
|
||||
LicenseButton.Caption := rs_License + '...';
|
||||
LicenseButton.left := Width - LicenseButton.Width - 10;
|
||||
LicenseButton.OnClick := @ShowLicense;
|
||||
LicenseButton.ParentFont:=False;
|
||||
LicenseButton.Parent := fDialog;
|
||||
end;
|
||||
|
||||
|
||||
// Create a label control
|
||||
lbl_Description := Tlabel.Create(fDialog);
|
||||
// Set label properties
|
||||
with lbl_Description do
|
||||
begin
|
||||
left := 8;
|
||||
Top := 30;
|
||||
Width := fDialog.Width - 8;
|
||||
Height := fDialog.Height - 30;
|
||||
Autosize := False;
|
||||
ParentFont := True;
|
||||
Alignment := taCenter;
|
||||
end;
|
||||
|
||||
// Build up Label text
|
||||
sz := '';
|
||||
// Component name
|
||||
if fComponentName <> '' then
|
||||
sz += fComponentName + LineEnding;
|
||||
// Author name (+Email)
|
||||
if fAuthorname <> '' then
|
||||
sz += rs_By + ': ' + fAuthorname + LineEnding;
|
||||
if fAuthorEmail <> '' then
|
||||
sz += ' (' + fAuthorEmail + ')' + LineEnding
|
||||
else
|
||||
sz += LineEnding;
|
||||
|
||||
sz += LineEnding;
|
||||
|
||||
// Version
|
||||
if fVersion <> '' then
|
||||
sz += 'Version: ' + fVersion + LineEnding;
|
||||
// License
|
||||
case fLicenseType of
|
||||
abGPL: sz += rs_License + ': GPL' + LineEnding;
|
||||
abLGPL: sz += rs_License + ': LGPL' + LineEnding;
|
||||
abMIT: sz += rs_License + ': M.I.T.' + LineEnding;
|
||||
abModifiedGPL: sz += rs_License + ': Modified GPL' + LineEnding;
|
||||
abProprietry: sz += rs_License + ': Proprietry' + LineEnding;
|
||||
end;
|
||||
if fOrganisation <> '' then
|
||||
sz += rs_For + ': ' + fOrganisation + LineEnding;
|
||||
if fDescription.Count > 0 then
|
||||
begin
|
||||
sz += LineEnding;
|
||||
for iCount := 1 to fDescription.Count do
|
||||
sz += fDescription[iCount - 1] + LineEnding;
|
||||
end;
|
||||
|
||||
lbl_Description.Caption := sz;
|
||||
lbl_Description.parent := fDialog;
|
||||
// Display the dialog modally
|
||||
ShowModal;
|
||||
end;
|
||||
finally
|
||||
// Free all resources
|
||||
FreeAndNil(img_BackGround);
|
||||
FreeAndNil(lbl_Description);
|
||||
FreeAndNil(LicenseButton);
|
||||
FreeAndNil(okbutton);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TAboutbox.ShowLicense(Sender: TObject);
|
||||
// Triggered by License button Click
|
||||
var
|
||||
sLicenseString: string;
|
||||
theList: TStringList;
|
||||
f: integer;
|
||||
LicenceForm: TForm;
|
||||
lblText: TLabel;
|
||||
closebuttton: TBitBtn;
|
||||
r: TLResource;
|
||||
szLicenseFile: string;
|
||||
begin
|
||||
// Quit early?
|
||||
if fLicenseType = abNone then
|
||||
Exit;
|
||||
|
||||
// Set to resource name in license.lrs
|
||||
case fLicenseType of
|
||||
abNone: szLicenseFile := '';
|
||||
abGPL: szLicenseFile := 'gpl.txt';
|
||||
abLGPL: szLicenseFile := 'lgpl.txt';
|
||||
abMIT: szLicenseFile := 'mit.txt';
|
||||
abModifiedgpl: szLicenseFile := 'modifiedgpl.txt';
|
||||
end;
|
||||
|
||||
|
||||
// Use a string list to split the text file into lines
|
||||
theList := TStringList.Create;
|
||||
// Create a window, label and close button on-the-fly
|
||||
LicenceForm := TForm.Create(nil);
|
||||
lblText := TLabel.Create(LicenceForm);
|
||||
closebuttton := TBitBtn.Create(LicenceForm);
|
||||
// Load up the text into variable 'sLicenseString'
|
||||
sLicenseString := LineEnding + LineEnding + fComponentName + LineEnding;
|
||||
try
|
||||
try
|
||||
begin
|
||||
// Load license text from resource string
|
||||
r := LazarusResources.Find(szLicenseFile);
|
||||
if r = nil then
|
||||
raise Exception.Create(rs_DatafileMissing);
|
||||
thelist.Add(r.Value);
|
||||
for f := 0 to TheList.Count - 1 do
|
||||
sLicenseString += TheList[f] + LineEnding;
|
||||
end;
|
||||
except
|
||||
On e: Exception do
|
||||
MessageDlg(rs_AboutBoxError,
|
||||
rs_LicenseTextError, mtError, [mbOK], 0);
|
||||
end;
|
||||
|
||||
// Replace boilerplate text if possible
|
||||
sLicenseString := AnsiReplaceText(sLicenseString, '<year>',
|
||||
{$I %DATE%}
|
||||
);
|
||||
sLicenseString := AnsiReplaceText(sLicenseString, '<name of author>', fAuthorname);
|
||||
sLicenseString := AnsiReplaceText(sLicenseString, '<contact>',
|
||||
'(' + fAuthorEmail + ')');
|
||||
sLicenseString := AnsiReplaceText(sLicenseString, '<copyright holders>',
|
||||
fOrganisation);
|
||||
|
||||
// Make up the form window and controls
|
||||
with LicenceForm do
|
||||
begin
|
||||
// Form
|
||||
{$IFDEF WINDOWS}
|
||||
// More compact GUI?
|
||||
Width := C_DEFAULTLICENSEFORMWIDTH;
|
||||
Height := C_DEFAULTLICENSEFORMHEIGHT;
|
||||
{$ELSE WINDOWS}
|
||||
Width := C_DEFAULTLICENSEFORMWIDTH_LINUX;
|
||||
Height := C_DEFAULTLICENSEFORMHEIGHT_LINUX;
|
||||
{$ENDIF}
|
||||
// autosize:=true;
|
||||
// If you enable autosize, the button placement goes awry!
|
||||
|
||||
// The Modified GPL has an extra clause
|
||||
if (szLicenseFile = 'modifiedgpl.txt') or
|
||||
(Pos('As a special exception', sLicenseString) > 0) then
|
||||
Height := Height + 100;
|
||||
position := poScreenCenter;
|
||||
borderstyle := bsToolWindow;
|
||||
Caption := fComponentName + ': Licensing';
|
||||
formstyle := fsSystemStayOnTop;
|
||||
|
||||
// Label
|
||||
lblText.Align := alClient;
|
||||
lblText.Alignment := taCenter;
|
||||
lblText.Caption := sLicenseString;
|
||||
lblText.Parent := LicenceForm;
|
||||
|
||||
// Close Button
|
||||
closebuttton.Kind := bkClose;
|
||||
closebuttton.left := (Width div 2) - closebuttton.Width div 2;
|
||||
closebuttton.top := Height - closebuttton.Height - 10;
|
||||
closebuttton.parent := LicenceForm;
|
||||
// Show modally over the existing modal form
|
||||
PopupParent := TForm(Sender);
|
||||
ShowModal;
|
||||
end;
|
||||
finally
|
||||
// Free up all component created resources from memory
|
||||
FreeAndNil(theList);
|
||||
FreeAndNil(lblText);
|
||||
FreeAndNil(closebuttton);
|
||||
FreeAndNil(LicenceForm);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TAboutbox.SetBackgroundBitmap(const AValue: TBitMap);
|
||||
begin
|
||||
if Assigned(AValue) then
|
||||
fBackgroundbitmap.Assign(AValue);
|
||||
end;
|
||||
|
||||
procedure TAboutbox.SetDescriptionStrings(const AValue: TStrings);
|
||||
begin
|
||||
if Assigned(AValue) then
|
||||
fDescription.Assign(Avalue);
|
||||
end;
|
||||
|
||||
procedure TAboutbox.SetFont(const AValue: TFont);
|
||||
begin
|
||||
if Assigned(AValue) then
|
||||
fFont.Assign(AValue);
|
||||
end;
|
||||
|
||||
{ TAboutPoweredby }
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterPropertyEditor(TypeInfo(TAboutbox),
|
||||
TAboutPoweredby, 'About', TAboutPropertyEditor);
|
||||
end;
|
||||
|
||||
procedure TAboutPropertyEditor.Edit;
|
||||
// Communicate with the component properties
|
||||
Var
|
||||
AAboutBox:TAboutBox;
|
||||
begin
|
||||
AAboutBox:=TAboutBox(GetObjectValue(TAboutBox));
|
||||
AABoutBox.ShowDialog;
|
||||
end;
|
||||
|
||||
function TAboutPropertyEditor.GetAttributes: TPropertyAttributes;
|
||||
// Show the ellipsis
|
||||
begin
|
||||
Result := [paDialog, paReadOnly];
|
||||
end;
|
||||
|
||||
// Sets for AboutBox dialog properties
|
||||
procedure TAboutPoweredby.SetMyComponentName(Const Avalue:String);
|
||||
begin
|
||||
fAboutBox.ComponentName:=AValue;
|
||||
fAboutBox.Title:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxWidth(Const AValue:Integer);
|
||||
begin
|
||||
fAboutBox.Width:=Avalue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxHeight(Const AValue:Integer);
|
||||
begin
|
||||
fAboutBox.Height:=Avalue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxDescription(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.Description.Clear;
|
||||
fAboutBox.Description.Add(AValue);
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxFontName(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.Font.Name:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxFontSize(Const AValue:Integer);
|
||||
begin
|
||||
if (AValue > 6) then fAboutBox.Font.Size:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxTitle(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.Title:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxBitmap(Const AValue:TBitmap);
|
||||
begin
|
||||
If Assigned(Avalue) then fAboutBox.Assign(AValue);
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxBackgroundColor(Const AValue:TColor);
|
||||
begin
|
||||
fAboutBox.BackGroundColor:=AValue;;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxVersion(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.Version:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxAuthorname(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.Authorname:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxOrganisation(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.Organisation:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxAuthorEmail(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.AuthorEmail:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxBackgroundResourceName(Const AValue:String);
|
||||
begin
|
||||
fAboutBox.BackgroundResourceName:=AValue;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxLicenseType(Const AValue:string);
|
||||
begin
|
||||
Case Upcase(AValue) of
|
||||
'GPL':fAboutBox.LicenseType:=abGPL;
|
||||
'LGPL':fAboutBox.LicenseType:=abLGPL;
|
||||
'MIT':fAboutBox.LicenseType:=abMIT;
|
||||
'MODIFIEDGPL':fAboutBox.LicenseType:=abModifiedGPL;
|
||||
'PROPRIETRY':fAboutBox.LicenseType:=abProprietry;
|
||||
else
|
||||
fAboutBox.LicenseType:=abNone;
|
||||
end;
|
||||
end;
|
||||
procedure TAboutPoweredby.SetAboutBoxStretchBackgroundImage(Const AValue:Boolean);
|
||||
begin
|
||||
fAboutBox.StretchBackground:=AValue;
|
||||
end;
|
||||
|
||||
// End Sets
|
||||
|
||||
constructor TAboutPoweredby.Create(AOwner: TComponent);
|
||||
var
|
||||
TempImage: TPicture;
|
||||
r:TLResource;
|
||||
begin
|
||||
// Inherit default properties
|
||||
inherited Create(AOwner);
|
||||
// Use tAboutBox as a subcomponent
|
||||
fAboutBox := tAboutBox.Create(nil);
|
||||
with fAboutBox do
|
||||
begin
|
||||
SetSubComponent(True); // Tell the IDE to store the modified properties
|
||||
// Default of TAboutPoweredby values override TAbouBox.Create defaults
|
||||
ComponentName := 'TAboutPoweredby';
|
||||
Description.Add('This is to demonstrate'); //TStrings
|
||||
Description.Add('the use of TAboutPoweredby'); //TStrings
|
||||
Description.Add('Set its properties in your Constructor'); //TStrings
|
||||
Width := 320; //Integer
|
||||
Height := 280; //Integer
|
||||
// Set any Font properties or subproperties here
|
||||
// Font.Name := 'Arial';
|
||||
Font.Color := clNavy;
|
||||
Font.Size:=10;
|
||||
// BackGroundColor shows if no BackGround image is set
|
||||
BackGroundColor := clWindow;
|
||||
Version := '1.0.0.0';
|
||||
AuthorName := 'Gordon Bamber';
|
||||
AuthorEmail := 'minesadorada@charcodelvalle.com';
|
||||
Organisation := 'Public Domain';
|
||||
|
||||
//Types available: abNone, abGPL, abLGPL, abMIT, abModifiedGPL, abProprietry
|
||||
LicenseType := abLGPL;
|
||||
|
||||
// BackGround image is optional
|
||||
// It must be in a resouce file in the initialization section
|
||||
|
||||
//== How to set a background image to your About dialog --
|
||||
// The BackGround property is a TBitmap
|
||||
// Use a Temporary TPicture to load a JPG.
|
||||
// NOTE a PNG file will create an error when your component is used in an application!
|
||||
r := LazarusResources.Find(fAboutBox.BackgroundResourceName);
|
||||
if r <> nil then
|
||||
begin
|
||||
TempImage := TPicture.Create;
|
||||
// .lrs file is in the initialization section
|
||||
TempImage.LoadFromLazarusResource(fAboutBox.BackgroundResourceName);
|
||||
BackGround.Assign(TempImage.Bitmap);
|
||||
TempImage.Free;
|
||||
StretchBackground := fAboutBox.StretchBackground; //Boolean
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
destructor TAboutPoweredby.Destroy;
|
||||
begin
|
||||
FreeAndNil(fAboutBox);
|
||||
inherited Destroy;
|
||||
end;
|
||||
initialization
|
||||
{$I license.lrs}
|
||||
|
||||
end.
|
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
poweredby/latest_stable/graphics_resources/powered_by.png
Normal file
BIN
poweredby/latest_stable/graphics_resources/powered_by.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
77
poweredby/latest_stable/poweredby.lpk
Normal file
77
poweredby/latest_stable/poweredby.lpk
Normal file
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<Package Version="4">
|
||||
<PathDelim Value="\"/>
|
||||
<Name Value="poweredby"/>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<AddToProjectUsesSection Value="True"/>
|
||||
<Author Value="user minesadorada at freepascal forum"/>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<SearchPaths>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<GenerateDebugInfo Value="False"/>
|
||||
</Debugging>
|
||||
</Linking>
|
||||
</CompilerOptions>
|
||||
<Description Value="A splash window component
|
||||
Method: ShowPoweredBy
|
||||
Graphic shown will depend on widgetset"/>
|
||||
<License Value="TPoweredby Component
|
||||
Copyright (C)2014 minesadorada@charcodelvalle.com
|
||||
Modified GPL
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version with the following modification:
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent modules,and
|
||||
to copy and distribute the resulting executable under terms of your choice,
|
||||
provided that you also meet, for each linked independent module, the terms
|
||||
and conditions of the license of that module. An independent module is a
|
||||
module which is not derived from or based on this library. If you modify
|
||||
this library, you may extend this exception to your version of the library,
|
||||
but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
"/>
|
||||
<Version Major="1" Minor="1"/>
|
||||
<Files Count="2">
|
||||
<Item1>
|
||||
<Filename Value="upoweredby.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="uPoweredby"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Filename Value="aboutpoweredbyunit.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="AboutPoweredbyunit"/>
|
||||
</Item2>
|
||||
</Files>
|
||||
<RequiredPkgs Count="1">
|
||||
<Item1>
|
||||
<PackageName Value="IDEIntf"/>
|
||||
</Item1>
|
||||
</RequiredPkgs>
|
||||
<UsageOptions>
|
||||
<UnitPath Value="$(PkgOutDir)"/>
|
||||
</UsageOptions>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
</PublishOptions>
|
||||
</Package>
|
||||
</CONFIG>
|
22
poweredby/latest_stable/poweredby.pas
Normal file
22
poweredby/latest_stable/poweredby.pas
Normal file
@@ -0,0 +1,22 @@
|
||||
{ This file was automatically created by Lazarus. Do not edit!
|
||||
This source is only used to compile and install the package.
|
||||
}
|
||||
|
||||
unit poweredby;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uPoweredby, AboutPoweredbyunit, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterUnit('uPoweredby', @uPoweredby.Register);
|
||||
RegisterUnit('AboutPoweredbyunit', @AboutPoweredbyunit.Register);
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterPackage('poweredby', @Register);
|
||||
end.
|
BIN
poweredby/latest_stable/updates/poweredby.zip
Normal file
BIN
poweredby/latest_stable/updates/poweredby.zip
Normal file
Binary file not shown.
15
poweredby/latest_stable/updates/update_poweredby.json
Normal file
15
poweredby/latest_stable/updates/update_poweredby.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"UpdatePackageData" : {
|
||||
"DisableInOPM" : false,
|
||||
"DownloadZipURL" : "https://svn.code.sf.net/p/lazarus-ccr/svn/components/poweredby/latest_stable/updates/poweredby.zip",
|
||||
"Name" : "poweredby.zip"
|
||||
},
|
||||
"UpdatePackageFiles" : [
|
||||
{
|
||||
"ForceNotify" : false,
|
||||
"InternalVersion" : 2,
|
||||
"Name" : "poweredby.lpk",
|
||||
"Version" : "1.0.4.0"
|
||||
}
|
||||
]
|
||||
}
|
354
poweredby/latest_stable/upoweredby.pas
Normal file
354
poweredby/latest_stable/upoweredby.pas
Normal file
@@ -0,0 +1,354 @@
|
||||
{ TPoweredby Component
|
||||
|
||||
Copyright (C)2014 Gordon Bamber minesadorada@charcodelvalle.com
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version with the following modification:
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent modules,and
|
||||
to copy and distribute the resulting executable under terms of your choice,
|
||||
provided that you also meet, for each linked independent module, the terms
|
||||
and conditions of the license of that module. An independent module is a
|
||||
module which is not derived from or based on this library. If you modify
|
||||
this library, you may extend this exception to your version of the library,
|
||||
but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
}
|
||||
unit uPoweredby;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{$IFDEF WINDOWS}Windows, JwaWindows,{$ENDIF}Classes, Controls, Dialogs,
|
||||
Forms, Graphics, LResources, SysUtils,
|
||||
ExtCtrls, InterfaceBase, LCLType, LCLVersion, AboutPoweredbyunit;
|
||||
|
||||
const
|
||||
C_VERSIONSTRING = '1.0.4.0';
|
||||
C_WIDGETSET_GTK = 'GTK widget set';
|
||||
C_WIDGETSET_GTK2 = 'GTK 2 widget set';
|
||||
C_WIDGETSET_GTK3 = 'GTK 3 widget set';
|
||||
C_WIDGETSET_WIN = 'Win32/Win64 widget set';
|
||||
C_WIDGETSET_WINCE = 'WinCE widget set';
|
||||
C_WIDGETSET_CARBON = 'Carbon widget set';
|
||||
C_WIDGETSET_QT = 'QT widget set';
|
||||
C_WIDGETSET_fpGUI = 'fpGUI widget set';
|
||||
C_WIDGETSET_COCOA = 'Cocoa widget set';
|
||||
C_WIDGETSET_CUSTOM = 'Custom drawn widget set';
|
||||
C_WIDGETSET_OTHER = 'Other gui';
|
||||
|
||||
type
|
||||
TPoweredby = class(TAboutPoweredBy)
|
||||
private
|
||||
{ Private declarations }
|
||||
fPoweredByForm: TForm;
|
||||
fVersionString: string;
|
||||
fDelayMilliseconds: integer;
|
||||
fFadeInMilliseconds: integer;
|
||||
fShowOnlyOnce, fAlreadyShown: boolean;
|
||||
// Used by Timer to close the PoweredBy form
|
||||
procedure ClosePoweredByForm(Sender: TObject);
|
||||
// Windows only!
|
||||
procedure FadeInPoweredBy(Sender: TObject);
|
||||
procedure SetDelayMilliSeconds(AValue: integer);
|
||||
function GetWidgetSetString: string;
|
||||
function GetFPCTargetInfoString: string;
|
||||
function GetInfoLCLVersion: string;
|
||||
function GetInfoFPCVersion: string;
|
||||
{$IFDEF WINDOWS}
|
||||
procedure MakeTransparentWindow(var AForm: TForm; var AImage: TImage);
|
||||
{$ENDIF}
|
||||
protected
|
||||
{ Protected declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
// Call the method 'ShowPoweredByForm' to show the shaped window
|
||||
procedure ShowPoweredByForm;
|
||||
// Called when component is dropped onto a form
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
published
|
||||
{ Published declarations }
|
||||
// Minimum delay=1000msec; Maximum delay=10000msec. Fade-in time is automatically adjusted
|
||||
property DelayMilliSecs: integer read fDelayMilliSeconds
|
||||
write SetDelayMilliSeconds default 1000;
|
||||
// Call the method 'ShowPoweredByForm' to show the shaped window
|
||||
property Version: string read fVersionString;
|
||||
// Reports the current WidgetSet
|
||||
property InfoWidgetSet: string read GetWidgetSetString;
|
||||
// Reports your current Environment
|
||||
property InfoFPCTarget: string read GetFPCTargetInfoString;
|
||||
// Reports your current Environment
|
||||
property InfoFPCVersion: string read GetInfoFPCVersion;
|
||||
// Reports your current Environment
|
||||
property InfoLCLVersion: string read GetInfoLCLVersion;
|
||||
// Useful if you have ShowPoweredByForm in your TForm.Activate() method
|
||||
property ShowOnlyOnce: boolean read fShowOnlyOnce write fShowOnlyOnce default False;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
|
||||
implementation
|
||||
|
||||
uses {$IF (lcl_major > 0) and (lcl_minor > 6)}LCLPlatformDef {$ENDIF};
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
{$I upoweredby_icon.lrs}
|
||||
RegisterComponents('Additional', [TPoweredby]);
|
||||
end;
|
||||
|
||||
constructor TPoweredby.Create(AOwner: TComponent);
|
||||
// Initialise private vars
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
fVersionString := C_VERSIONSTRING;
|
||||
fDelayMilliseconds := 1000;
|
||||
fFadeInMilliseconds := 20;
|
||||
fAlreadyShown := False;
|
||||
fShowOnlyOnce := False;
|
||||
// About dialog
|
||||
AboutBoxComponentName := 'PoweredBy component';
|
||||
AboutBoxWidth := 400;
|
||||
// AboutBoxHeight (integer)
|
||||
AboutBoxDescription := 'Component that shows a Powered By graphic.' +
|
||||
LineEnding + 'Use method ShowPoweredByForm in your form.create()' +
|
||||
LineEnding + 'to use the component';
|
||||
AboutBoxBackgroundColor := clWindow;
|
||||
AboutBoxFontName := 'Arial';
|
||||
AboutBoxFontSize := 10;
|
||||
AboutBoxVersion := C_VERSIONSTRING;
|
||||
AboutBoxAuthorname := 'Gordon Bamber';
|
||||
AboutBoxOrganisation := 'Public Domain';
|
||||
AboutBoxAuthorEmail := 'minesadorada@charcodelvalle.com';
|
||||
AboutBoxLicenseType := 'MODIFIEDGPL';
|
||||
end;
|
||||
|
||||
function TPoweredby.GetInfoLCLVersion: string;
|
||||
begin
|
||||
Result := lcl_version;
|
||||
end;
|
||||
|
||||
function TPoweredby.GetInfoFPCVersion: string;
|
||||
begin
|
||||
Result:={$I %FPCVERSION%};
|
||||
end;
|
||||
|
||||
function TPoweredby.GetFPCTargetInfoString: string;
|
||||
begin
|
||||
Result := {$I %FPCTARGETCPU%}+' - '+{$I %FPCTARGETOS%};
|
||||
end;
|
||||
|
||||
function priv_GetWidgetSetString: string;
|
||||
// This code cannot be a method of TPoweredBy
|
||||
begin
|
||||
case WidgetSet.LCLPlatform of
|
||||
lpGtk: Result := C_WIDGETSET_GTK;
|
||||
lpGtk2: Result := C_WIDGETSET_GTK2;
|
||||
lpWin32: Result := C_WIDGETSET_WIN;
|
||||
lpWinCE: Result := C_WIDGETSET_WINCE;
|
||||
lpCarbon: Result := C_WIDGETSET_CARBON;
|
||||
lpCocoa: Result := C_WIDGETSET_COCOA;
|
||||
lpQT: Result := C_WIDGETSET_QT;
|
||||
lpfpGUI: Result := C_WIDGETSET_fpGUI;
|
||||
// When were these first included in InterfaceBase?
|
||||
{$IFDEF FPC_FULLVERSION>24200}
|
||||
lpGtk3: Result := C_WIDGETSET_GTK3;
|
||||
lpCustomDrawn: Result := C_WIDGETSET_CUSTOM;
|
||||
{$ENDIF}
|
||||
else
|
||||
Result := C_WIDGETSET_OTHER;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPoweredby.GetWidgetSetString: string;
|
||||
begin
|
||||
Result := priv_GetWidgetSetString;
|
||||
end;
|
||||
|
||||
procedure TPoweredby.SetDelayMilliSeconds(AValue: integer);
|
||||
begin
|
||||
if ((fDelayMilliSeconds <> AValue) and (AValue > 0) and (AValue < 11000)) then
|
||||
begin
|
||||
fDelayMilliseconds := AValue;
|
||||
fFadeInMilliseconds := (AValue div 1000) * 20;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TPoweredby.ClosePoweredByForm(Sender: TObject);
|
||||
// Called by Timer event in ShowPoweredByForm to close Modal window
|
||||
// Also the image OnClick event
|
||||
begin
|
||||
fPoweredByForm.Close;
|
||||
end;
|
||||
|
||||
procedure TPoweredby.FadeInPoweredBy(Sender: TObject);
|
||||
// Use Alphablend property of TForm
|
||||
begin
|
||||
if (fPoweredByForm.AlphaBlendValue < 245) then
|
||||
fPoweredByForm.AlphaBlendValue := fPoweredByForm.AlphaBlendValue + 10;
|
||||
end;
|
||||
|
||||
function CanShowRoundedGraphic: boolean;
|
||||
{
|
||||
Check the current WidgetSet, and add to the list that can show the rounded graphic
|
||||
Choices are:
|
||||
lpGtk,
|
||||
lpGtk2,
|
||||
lpGtk3,
|
||||
lpWin32,
|
||||
lpWinCE,
|
||||
lpCarbon,
|
||||
lpQT,
|
||||
lpfpGUI,
|
||||
lpNoGUI,
|
||||
lpCocoa,
|
||||
lpCustomDrawn
|
||||
}
|
||||
begin
|
||||
Result := False;
|
||||
case WidgetSet.LCLPlatform of
|
||||
lpWin32, lpQT: Result := True;
|
||||
else
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
{$IFDEF WINDOWS}
|
||||
procedure TPoweredby.MakeTransparentWindow(var AForm: TForm; var AImage: TImage);
|
||||
var
|
||||
BlendFunction: TBlendFunction;
|
||||
Size: TSize;
|
||||
P: TPoint;
|
||||
ExStyle: DWORD;
|
||||
begin
|
||||
with AForm do
|
||||
begin
|
||||
ExStyle := GetWindowLongA(Handle, GWL_EXSTYLE);
|
||||
if (ExStyle and WS_EX_LAYERED = 0) then
|
||||
SetWindowLong(Handle, GWL_EXSTYLE, ExStyle or WS_EX_LAYERED);
|
||||
ClientWidth := AImage.picture.Bitmap.Width;
|
||||
ClientHeight := AImage.picture.Bitmap.Height;
|
||||
P.x := 0;
|
||||
P.y := 0;
|
||||
Size.cx := AImage.picture.Bitmap.Width;
|
||||
Size.cy := AImage.picture.Bitmap.Height;
|
||||
BlendFunction.BlendOp := AC_SRC_OVER;
|
||||
BlendFunction.BlendFlags := 0;
|
||||
BlendFunction.SourceConstantAlpha := 255;
|
||||
BlendFunction.AlphaFormat := AC_SRC_ALPHA;
|
||||
UpdateLayeredWindow(Handle, 0, nil, @Size, AImage.picture.Bitmap.Canvas.Handle,
|
||||
@P, 0, @BlendFunction, ULW_ALPHA);
|
||||
end;
|
||||
end;
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
procedure TPoweredby.ShowPoweredByForm;
|
||||
|
||||
// Graphics are in graphics.lrs
|
||||
// 1 ) Constructs a new TForm with an image control
|
||||
// 2 ) Sets a timer to fade it in using the Alphablend property
|
||||
// 3 ) Sets another timer to close the form
|
||||
|
||||
// Note: Windows can fade in a shaped transparent screen
|
||||
// But some widgetsets (GTK,Carbon) cannot
|
||||
var
|
||||
img_Background: TImage;
|
||||
DelayTimer: TTimer;
|
||||
FadeInTimer: TTImer;
|
||||
begin
|
||||
// Respect the ShowOnlyOnce property setting
|
||||
if ((fShowOnlyOnce = True) and (fAlreadyShown = True)) then
|
||||
Exit;
|
||||
|
||||
// Try..Finally so we can be sure resources are Freed
|
||||
try
|
||||
try
|
||||
// Create controls
|
||||
fPoweredByForm := TForm.Create(nil);
|
||||
fPoweredByForm.AlphaBlend := True;
|
||||
fPoweredByForm.AlphaBlendValue := 0;
|
||||
img_background := TImage.Create(fPoweredByForm);
|
||||
// Delay Timer
|
||||
Delaytimer := TTimer.Create(fPoweredByForm);
|
||||
delaytimer.Interval := fDelayMilliseconds;
|
||||
delaytimer.OnTimer := @ClosePoweredByForm;
|
||||
|
||||
FadeInTimer := TTimer.Create(fPoweredByForm);
|
||||
FadeInTimer.Interval := fFadeInMilliseconds;
|
||||
FadeInTimer.OnTimer := @FadeInPoweredBy;
|
||||
|
||||
// BackGround image - load from resource
|
||||
with img_background do
|
||||
begin
|
||||
Align := alClient;
|
||||
Stretch := True;
|
||||
Parent := fPoweredByForm;
|
||||
if CanShowRoundedGraphic then
|
||||
Picture.LoadFromLazarusResource('powered_by_graphic')
|
||||
else
|
||||
Picture.LoadFromLazarusResource('linux_powered_by_graphic');
|
||||
OnClick := @ClosePoweredByForm;
|
||||
SendToBack;
|
||||
end;
|
||||
// Set form properties
|
||||
with fPoweredByForm do
|
||||
begin
|
||||
position := poScreenCenter;
|
||||
borderstyle := bsnone;
|
||||
bordericons:=[];
|
||||
formstyle := fsSystemStayOnTop;
|
||||
OnClick := @ClosePoweredByForm;
|
||||
color := clNone;
|
||||
Scaled:=True;
|
||||
if CanShowRoundedGraphic then
|
||||
begin
|
||||
MakeTransparentWindow(fPoweredByForm,img_background);
|
||||
end
|
||||
else
|
||||
begin
|
||||
// If square graphic, then adjust form size
|
||||
Height := img_background.Picture.Height;
|
||||
Width := img_background.picture.Width;
|
||||
end;
|
||||
// Now show the completed form
|
||||
delaytimer.Enabled := True;
|
||||
FadeInTimer.Enabled := True;
|
||||
Application.ProcessMessages;
|
||||
ShowModal; // Closed via the Timer event or a user click
|
||||
fAlreadyShown := True;
|
||||
end;
|
||||
except
|
||||
On E: Exception do
|
||||
raise Exception.CreateFmt('%s Error: %s', [Name, Exception.ClassName]);
|
||||
end;
|
||||
finally
|
||||
FreeAndNil(img_background);
|
||||
FreeAndNil(delayTimer);
|
||||
FreeAndNil(FadeInTimer);
|
||||
FreeAndNil(fPoweredByForm);
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
// Load graphics as lazarus resources into the component
|
||||
{$I graphics.lrs}
|
||||
|
||||
end.
|
Reference in New Issue
Block a user