Componentes.Terceros.jvcl/official/3.32/run/JvJVCLAboutForm.pas

283 lines
7.8 KiB
ObjectPascal
Raw Blame History

{-----------------------------------------------------------------------------
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: JvJVCLAboutForm.PAS, released on 2001-02-28.
The Initial Developer of the Original Code is Michael Beck [mbeck att bigfoot dott com]
Portions created by Michael Beck are Copyright (C) 2002 Michael Beck
All Rights Reserved.
Contributor(s):
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvJVCLAboutForm.pas 10622 2006-05-28 12:33:53Z jfudickar $
unit JvJVCLAboutForm;
{$I jvcl.inc}
interface
uses
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
{$IFDEF MSWINDOWS}
Windows,
JclWin32,
{$ENDIF MSWINDOWS}
SysUtils, Classes, IniFiles, Messages, Controls, Forms, StdCtrls, ExtCtrls,
Dialogs, Buttons,
Jpeg,
JclSysInfo,
JVCLVer, JvBaseDlg, JvComponent;
type
TJvJVCLAboutForm = class(TJvForm)
Bevel1: TBevel;
lblVersion: TLabel;
pnlImage: TPanel;
imgStarfield: TImage;
btnOK: TButton;
JvHotLink1: TLabel;
JvHotLink4: TLabel;
lblNews: TLabel;
Label1: TLabel;
Label2: TLabel;
lblCopyRight: TLabel;
lblRights: TLabel;
imgProjectJEDI: TImage;
MainPanel: TPanel;
Bevel2: TBevel;
lblVisitJedi: TLabel;
lblMailingList: TLabel;
lblNewsgroup: TLabel;
lblJvHotLink2: TLabel;
lblBugs: TLabel;
lblBugsURL: TLabel;
btnHelp: TSpeedButton;
btnOptions: TSpeedButton;
OpenDialog1: TOpenDialog;
Bevel3: TBevel;
lblWindowsVersion: TLabel;
Label4: TLabel;
lblMemory: TLabel;
procedure btnOKClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btnHelpClick(Sender: TObject);
procedure btnOptionsClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure OpenURLClick(Sender: TObject);
private
FHelpFile: string;
FHelpDirectory: string;
public
procedure LoadOptions;
procedure SaveOptions;
class function Execute(StoreSettings: Boolean): Boolean;
end;
TJvJVCLAboutComponent = class(TJvCommonDialogP)
private
FStoreSettings: Boolean;
public
function Execute: Boolean; override;
published
property StoreSettings: Boolean read FStoreSettings write FStoreSettings default False;
end;
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
RCSfile: '$URL: https://jvcl.svn.sourceforge.net/svnroot/jvcl/tags/JVCL3_32/run/JvJVCLAboutForm.pas $';
Revision: '$Revision: 10622 $';
Date: '$Date: 2006-05-28 14:33:53 +0200 (dim., 28 mai 2006) $';
LogPath: 'JVCL\run'
);
{$ENDIF UNITVERSIONING}
implementation
uses
JvJVCLUtils, JvJCLUtils;
{$R *.dfm}
const
cOptions = 'Options';
cBoundsLeft = 'Bounds.Left';
cBoundsTop = 'Bounds.Top';
cHelpFile = 'Help.File';
cHelpDirectory = 'Help.Directory';
{$IFDEF MSWINDOWS}
cJVCLIni = '\JVCL.ini';
{$ENDIF MSWINDOWS}
{$IFDEF UNIX}
cJVCLIni = '/.JVCL';
{$ENDIF UNIX}
procedure TJvJVCLAboutForm.FormShow(Sender: TObject);
{$IFDEF MSWINDOWS}
var
VersionInfo: TOSVersionInfoEx;
{$ENDIF MSWINDOWS}
begin
lblVersion.Caption := 'Version: ' + JVCL_VERSIONSTRING;
{$IFDEF MSWINDOWS}
FillChar(VersionInfo, SizeOf(TOSVersionInfoEx), #0);
VersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfoEx);
JclWin32.GetVersionEx(VersionInfo);
if VersionInfo.wServicePackMajor = 0 then
lblWindowsVersion.Caption := Format('%s (Build %u)',
[GetWindowsVersionString, VersionInfo.dwBuildNumber])
else
lblWindowsVersion.Caption := Format('%s (Build %u: %s)',
[GetWindowsVersionString, VersionInfo.dwBuildNumber, GetWindowsServicePackVersionString]);
{$ENDIF MSWINDOWS}
{$IFDEF UNIX}
lblWindowsVersion.Caption := GetOSVersionString;
Label4.Caption := 'Memory Available to OS:';
{$ENDIF UNIX}
lblMemory.Caption := Format('%u KB', [GetTotalPhysicalMemory div 1024]);
lblCopyRight.Caption := 'Copyright <20> Project JEDI, 1999 - ' + FormatDateTime('yyyy', Now);
// LoadOptions;
btnHelp.Enabled := FHelpFile <> '';
end;
procedure TJvJVCLAboutForm.Panel1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
{$IFDEF VCL}
Perform(WM_SYSCOMMAND, SC_MOVE + 2, 0);
{$ENDIF VCL}
end;
procedure TJvJVCLAboutForm.btnHelpClick(Sender: TObject);
begin
Exec(FHelpFile, '', FHelpDirectory);
Close;
end;
procedure TJvJVCLAboutForm.btnOptionsClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
FHelpFile := ExtractFileName(OpenDialog1.FileName);
FHelpDirectory := ExtractFileDir(OpenDialog1.FileName);
// SaveOptions;
btnHelp.Enabled := FHelpFile <> '';
end;
end;
procedure TJvJVCLAboutForm.LoadOptions;
var
L, T: Integer;
begin
{$IFDEF MSWINDOWS}
with TIniFile.Create(ExtractFileDir(Application.ExeName) + cJVCLIni) do
{$ENDIF MSWINDOWS}
{$IFDEF UNIX}
with TIniFile.Create(GetEnvironmentVariable('HOME') + cJVCLIni) do
{$ENDIF UNIX}
try
L := ReadInteger(cOptions, cBoundsLeft, -1);
T := ReadInteger(cOptions, cBoundsTop, -1);
FHelpFile := ReadString(cOptions, cHelpFile, '');
FHelpDirectory := ReadString(cOptions, cHelpDirectory, '');
finally
Free;
end;
//make sure the form is positioned on screen ...
//(ie make sure nobody's fiddled with the INI file!)
if (L >= 0) and (T >= 0) and (L < Screen.Width) and (T < Screen.Height) then
begin
Left := L;
Top := T;
end;
end;
procedure TJvJVCLAboutForm.SaveOptions;
begin
{$IFDEF MSWINDOWS}
with TIniFile.Create(ExtractFileDir(Application.ExeName) + cJVCLIni) do
{$ENDIF MSWINDOWS}
{$IFDEF UNIX}
with TIniFile.Create(GetEnvironmentVariable('HOME') + cJVCLIni) do
{$ENDIF UNIX}
try
if WindowState = wsNormal then
begin
WriteInteger(cOptions, cBoundsLeft, Left);
WriteInteger(cOptions, cBoundsTop, Top);
end;
WriteString(cOptions, cHelpFile, FHelpFile);
WriteString(cOptions, cHelpDirectory, FHelpDirectory);
finally
Free;
end;
end;
procedure TJvJVCLAboutForm.FormDestroy(Sender: TObject);
begin
// SaveOptions;
end;
procedure TJvJVCLAboutForm.btnOKClick(Sender: TObject);
begin
Close;
end;
function TJvJVCLAboutComponent.Execute: Boolean;
begin
Result := TJvJVCLAboutForm.Execute(StoreSettings);
end;
class function TJvJVCLAboutForm.Execute(StoreSettings: Boolean): Boolean;
begin
with Self.Create(Application) do
try
if StoreSettings then
LoadOptions;
// (rom) used as component outside the IDE the buttons are not useful
btnHelp.Visible := StoreSettings;
btnOptions.Visible := StoreSettings;
Result := ShowModal = mrOk;
if StoreSettings then
SaveOptions;
finally
Free;
end;
end;
procedure TJvJVCLAboutForm.OpenURLClick(Sender: TObject);
begin
OpenObject((Sender as TLabel).Caption);
end;
{$IFDEF UNITVERSIONING}
initialization
RegisterUnitVersion(HInstance, UnitVersioning);
finalization
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
end.