369 lines
9.0 KiB
ObjectPascal
369 lines
9.0 KiB
ObjectPascal
{******************************************************************
|
|
|
|
JEDI-VCL Demo
|
|
|
|
Copyright (C) 2002 Project JEDI
|
|
|
|
Original author:
|
|
|
|
Contributor(s):
|
|
|
|
You may retrieve the latest version of this file at the JEDI-JVCL
|
|
home page, located at http://jvcl.sourceforge.net
|
|
|
|
The contents of this file are used with permission, 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_1Final.html
|
|
|
|
Software distributed under the License is distributed on an
|
|
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
implied. See the License for the specific language governing
|
|
rights and limitations under the License.
|
|
|
|
******************************************************************}
|
|
|
|
unit About;
|
|
|
|
{$I jvcl.inc}
|
|
|
|
interface
|
|
|
|
uses Classes, Graphics, Controls;
|
|
|
|
procedure ShowAbout(const Developer, Company: string;
|
|
HiVer, LoVer, Year: Integer);
|
|
procedure ShowAboutDialog(const AppTitle, Developer, Company: string;
|
|
AppIcon: TIcon; HiVer, LoVer, Year: Integer);
|
|
procedure VerAboutBox;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Windows, SysUtils, Messages, Consts, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons,
|
|
JvJVCLUtils, JvVersionInfo, JvConsts, JvJCLUtils;
|
|
|
|
{$IFDEF COMPILER3_UP}
|
|
resourcestring
|
|
{$ELSE}
|
|
const
|
|
{$ENDIF}
|
|
sYear = '%s © %d';
|
|
sFreeMemory = '%s KB';
|
|
sAbout = 'About';
|
|
{$IFDEF WIN32}
|
|
sFreeMemoryLabel = 'Physical memory:';
|
|
sFreeResourcesLabel = 'Memory in use:';
|
|
{$ELSE}
|
|
sFreeMemoryLabel = 'Free memory:';
|
|
sFreeResourcesLabel = 'Free system resources:';
|
|
{$ENDIF WIN32}
|
|
sVersion = 'Version %d.%.2d';
|
|
sFileVer = 'Version %s';
|
|
sExeFile = 'Executable file %s';
|
|
|
|
{ TAboutDialog }
|
|
|
|
type
|
|
TAboutDialog = class(TForm)
|
|
FProgramIcon: TImage;
|
|
FProductName: TLabel;
|
|
FProductVersion: TLabel;
|
|
FCopyright: TLabel;
|
|
FYearLabel: TLabel;
|
|
FMemSize: TLabel;
|
|
FPercent: TLabel;
|
|
private
|
|
procedure UpdateMemoryInfo;
|
|
function GetWindowsVersion: string;
|
|
procedure SetVersion(LoVer, HiVer: Integer);
|
|
procedure SetCopyright(const Developer, Company: string; Year: Integer);
|
|
procedure SetAppData(const AppTitle: string; AIcon: TIcon);
|
|
protected
|
|
procedure CreateParams(var Params: TCreateParams); override;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
end;
|
|
|
|
{ Utility routines }
|
|
|
|
function MakeAboutDialog: TForm;
|
|
begin
|
|
Result := TAboutDialog.Create(Application);
|
|
with Result do
|
|
{ scale to screen res }
|
|
if Screen.PixelsPerInch <> 96 then begin
|
|
ScaleBy(Screen.PixelsPerInch, 96);
|
|
{ The ScaleBy method does not scale the font well, so set the
|
|
font back to the original info. }
|
|
Font.Name := 'MS Sans Serif';
|
|
Font.Size := 8;
|
|
Font.Style := [];
|
|
Font.Color := clWindowText;
|
|
Left := (Screen.Width div 2) - (Width div 2);
|
|
Top := (Screen.Height div 2) - (Height div 2);
|
|
end;
|
|
end;
|
|
|
|
procedure VerAboutBox;
|
|
const
|
|
DefVersion = '0.09';
|
|
SCopyright = 'Copyright © %d';
|
|
var
|
|
JvVerInf: TJvVersionInfo ;
|
|
begin
|
|
JvVerInf := TJvVersionInfo .Create(Application.ExeName);
|
|
try
|
|
with TAboutDialog(MakeAboutDialog) do
|
|
try
|
|
if JvVerInf.Valid then begin
|
|
FYearLabel.Caption := JvVerInf.LegalCopyright;
|
|
if FYearLabel.Caption = '' then
|
|
FYearLabel.Caption := Format(SCopyright,
|
|
[ExtractYear(JvVerInf.VerFileDate)]);
|
|
FProductVersion.Caption := Format(sFileVer, [JvVerInf.FileVersion]);
|
|
end
|
|
else begin
|
|
FYearLabel.Caption := Format(SCopyright,
|
|
[ExtractYear(JvVerInf.VerFileDate)]);
|
|
FProductVersion.Caption := Format(sFileVer, [DefVersion]);
|
|
end;
|
|
FCopyright.Caption := Format(sExeFile,
|
|
[FormatDateTime('c', JvVerInf.VerFileDate)]);
|
|
SetAppData(Application.Title, Application.Icon);
|
|
ShowModal;
|
|
finally
|
|
Free;
|
|
end;
|
|
finally
|
|
JvVerInf.Free;
|
|
end
|
|
end;
|
|
|
|
procedure ShowAboutDialog(const AppTitle, Developer, Company: string;
|
|
AppIcon: TIcon; HiVer, LoVer, Year: Integer);
|
|
begin
|
|
with TAboutDialog(MakeAboutDialog) do
|
|
try
|
|
SetVersion(LoVer, HiVer);
|
|
SetCopyright(Developer, Company, Year);
|
|
SetAppData(AppTitle, AppIcon);
|
|
ShowModal;
|
|
finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
procedure ShowAbout(const Developer, Company: string;
|
|
HiVer, LoVer, Year: Integer);
|
|
begin
|
|
ShowAboutDialog(Application.Title, Developer, Company, Application.Icon,
|
|
HiVer, LoVer, Year);
|
|
end;
|
|
|
|
{ TAboutDialog }
|
|
|
|
constructor TAboutDialog.Create(AOwner: TComponent);
|
|
begin
|
|
{$IFDEF BCB}
|
|
inherited CreateNew(AOwner, 0);
|
|
{$ELSE}
|
|
inherited CreateNew(AOwner);
|
|
{$ENDIF BCB}
|
|
BorderStyle := bsDialog;
|
|
Position := poScreenCenter;
|
|
ClientHeight := 143;
|
|
ClientWidth := 339;
|
|
Caption := sAbout;
|
|
|
|
with Font do begin
|
|
{$IFNDEF WIN32}
|
|
Color := clWindowText;
|
|
Size := 8;
|
|
Name := 'MS Sans Serif';
|
|
{$ENDIF}
|
|
Style := [];
|
|
end;
|
|
|
|
FProgramIcon := TImage.Create(Self);
|
|
with FProgramIcon do begin
|
|
Parent := Self;
|
|
Left := 12;
|
|
Top := 8;
|
|
Width := 32;
|
|
Height := 32;
|
|
AutoSize := True;
|
|
end;
|
|
|
|
FProductName := TLabel.Create(Self);
|
|
with FProductName do begin
|
|
Parent := Self;
|
|
Left := 60;
|
|
Top := 6;
|
|
Width := 205;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
ShowAccelChar := False;
|
|
end;
|
|
|
|
FProductVersion := TLabel.Create(Self);
|
|
with FProductVersion do begin
|
|
Parent := Self;
|
|
Left := 60;
|
|
Top := 23;
|
|
Width := 205;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
Caption := sVersion;
|
|
end;
|
|
|
|
FCopyright := TLabel.Create(Self);
|
|
with FCopyright do begin
|
|
Parent := Self;
|
|
Left := 60;
|
|
Top := 57;
|
|
Width := 273;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
end;
|
|
|
|
FYearLabel := TLabel.Create(Self);
|
|
with FYearLabel do begin
|
|
Parent := Self;
|
|
Left := 60;
|
|
Top := 40;
|
|
Width := 273;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
end;
|
|
|
|
with TBevel.Create(Self) do begin
|
|
Parent := Self;
|
|
Shape := bsTopLine;
|
|
Style := bsLowered;
|
|
Left := 60;
|
|
Top := 81;
|
|
Width := 273;
|
|
Height := 2;
|
|
end;
|
|
|
|
with TLabel.Create(Self) do begin
|
|
Parent := Self;
|
|
Left := 60;
|
|
Top := 91;
|
|
Width := 269;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
Caption := GetWindowsVersion;
|
|
end;
|
|
|
|
with TLabel.Create(Self) do begin
|
|
Parent := Self;
|
|
Left := 60;
|
|
Top := 107;
|
|
Width := 130;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
Caption := sFreeMemoryLabel;
|
|
end;
|
|
|
|
FMemSize := TLabel.Create(Self);
|
|
with FMemSize do begin { free memory }
|
|
Parent := Self;
|
|
Left := 210;
|
|
Top := 107;
|
|
Width := 125;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
end;
|
|
|
|
with TLabel.Create(Self) do begin
|
|
Parent := Self;
|
|
Left := 60;
|
|
Top := 123;
|
|
Width := 130;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
Caption := sFreeResourcesLabel;
|
|
end;
|
|
|
|
FPercent := TLabel.Create(Self);
|
|
with FPercent do begin { free resources or memory in use }
|
|
Parent := Self;
|
|
Left := 210;
|
|
Top := 123;
|
|
Width := 125;
|
|
Height := 13;
|
|
ParentFont := True;
|
|
end;
|
|
|
|
with TButton.Create(Self) do begin
|
|
Parent := Self;
|
|
Left := 272;
|
|
Top := 6;
|
|
Width := 61;
|
|
Height := 25;
|
|
Caption := SOkButton;
|
|
Cursor := crHandPoint;
|
|
Default := False;
|
|
Cancel := True;
|
|
ModalResult := mrOk;
|
|
end;
|
|
UpdateMemoryInfo;
|
|
end;
|
|
|
|
procedure TAboutDialog.CreateParams(var Params: TCreateParams);
|
|
begin
|
|
inherited CreateParams(Params);
|
|
if Application.MainForm <> nil then
|
|
Params.WndParent := Application.MainForm.Handle;
|
|
end;
|
|
|
|
procedure TAboutDialog.SetCopyright(const Developer, Company: string;
|
|
Year: Integer);
|
|
begin
|
|
FYearLabel.Caption := Format(sYear, [Company, Year]);
|
|
FCopyright.Caption := Developer;
|
|
end;
|
|
|
|
procedure TAboutDialog.SetVersion(LoVer, HiVer: Integer);
|
|
begin
|
|
FProductVersion.Caption := Format(sVersion, [HiVer, LoVer]);
|
|
end;
|
|
|
|
procedure TAboutDialog.UpdateMemoryInfo;
|
|
{$IFDEF WIN32}
|
|
var
|
|
MemStatus: TMemoryStatus;
|
|
{$ENDIF}
|
|
begin
|
|
{$IFDEF WIN32}
|
|
MemStatus.dwLength := SizeOf(TMemoryStatus);
|
|
GlobalMemoryStatus(MemStatus);
|
|
FMemSize.Caption := Format(sFreeMemory, [FormatFloat(',0.##',
|
|
MemStatus.dwTotalPhys / 1024.0)]);
|
|
FPercent.Caption := Format('%d %%', [MemStatus.dwMemoryLoad]);
|
|
{$ELSE}
|
|
FMemSize.Caption := Format(sFreeMemory, [FormatFloat(',0.##',
|
|
GetFreeSpace(0) / 1024.0)]);
|
|
FPercent.Caption := Format('%d %%',
|
|
[GetFreeSystemResources(GFSR_SYSTEMRESOURCES)]);
|
|
{$ENDIF}
|
|
end;
|
|
|
|
function TAboutDialog.GetWindowsVersion: string;
|
|
begin
|
|
Result := JvJCLUtils.GetWindowsVersion;
|
|
end;
|
|
|
|
procedure TAboutDialog.SetAppData(const AppTitle: string; AIcon: TIcon);
|
|
begin
|
|
if (AIcon <> nil) and not AIcon.Empty then Icon := AIcon
|
|
else Icon.Handle := LoadIcon(0, IDI_APPLICATION);
|
|
FProductName.Caption := AppTitle;
|
|
FProgramIcon.Picture.Icon := Icon;
|
|
end;
|
|
|
|
end.
|