307 lines
10 KiB
ObjectPascal
307 lines
10 KiB
ObjectPascal
{ *************************************************************************** }
|
||
{ }
|
||
{ Jadro pluginu 2 Asseco Solutions }
|
||
{ }
|
||
{ *************************************************************************** }
|
||
|
||
unit plgAbout;
|
||
|
||
interface
|
||
|
||
uses
|
||
Classes, Controls, Forms, StdCtrls, ComCtrls, ExtCtrls, ActnList, ddPlugin_TLB, System.Actions,
|
||
plgForm;
|
||
|
||
type
|
||
TfrmAbout = class(TfrmPlgPredek)
|
||
bOK: TButton;
|
||
PageControlMain: TPageControl;
|
||
tsInfo: TTabSheet;
|
||
tsTechPopis: TTabSheet;
|
||
LV_Info: TListView;
|
||
PaintBoxInfo: TPaintBox;
|
||
bCopy: TButton;
|
||
MemoTechPopis: TMemo;
|
||
ActionList1: TActionList;
|
||
A_Zalozka1: TAction;
|
||
A_Zalozka2: TAction;
|
||
tsLogo: TTabSheet;
|
||
ImageLogoAbout: TImage;
|
||
A_Zalozka3: TAction;
|
||
tsHistorieVerzi: TTabSheet;
|
||
MemoHistorieVerzi: TMemo;
|
||
A_Zalozka4: TAction;
|
||
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
|
||
procedure bCopyClick(Sender: TObject);
|
||
procedure LV_InfoCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
|
||
procedure PaintBoxInfoPaint(Sender: TObject);
|
||
procedure A_Zalozka_X_Execute(Sender: TObject);
|
||
procedure LV_InfoDblClick(Sender: TObject);
|
||
|
||
public
|
||
function ShowModalEx(Helios: IHelios): TModalResult;
|
||
end;
|
||
|
||
{ =========================================================================== }
|
||
|
||
implementation
|
||
|
||
{$R *.DFM}
|
||
|
||
uses
|
||
Windows, SysUtils, Menus, Graphics, plgType, plgMain, ComObj, plgDMGlob,
|
||
ShellAPI, plgInstalace, Clipbrd;
|
||
|
||
const
|
||
proTlustyRadek = Pointer(-1);
|
||
proCervenyRadek = Pointer(-2);
|
||
proUmisteniDLL = Pointer(-3);
|
||
|
||
{ ########################################################################### }
|
||
|
||
procedure TfrmAbout.FormCreate(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
|
||
LV_Info.Font.Name := plgTestMSSansSerifFont(LV_Info.Font.Name);
|
||
|
||
bCopy.Caption := plgCtiOznam(plxJadroKopirovat);
|
||
|
||
tsInfo.Caption := '1 - ' + plgCtiOznam(plxJadroZakladniInformace);
|
||
tsLogo.Caption := '2 - ' + plgCtiOznam(plxJadroLogo);
|
||
tsTechPopis.Caption := '3 - ' + plgCtiOznam(plxJadroTechnickyPopis);
|
||
tsHistorieVerzi.Caption := '4 - ' + plgCtiOznam(plxJadroHistorieVerzi);
|
||
|
||
// aby slo udelat tabulku napr. s popisem formatu importnich souboru apod.
|
||
MemoTechPopis.Font.Name := 'Courier New';
|
||
MemoHistorieVerzi.Font.Name := 'Courier New';
|
||
|
||
LV_Info.Columns[0].Caption := plgCtiOznam(plxJadroAbout_Nazev);
|
||
LV_Info.Columns[1].Caption := plgCtiOznam(plxJadroAbout_Hodnota);
|
||
|
||
with TfrmInstalace.Create(nil) do
|
||
try
|
||
Self.ImageLogoAbout.Picture.Assign(ImageLogo.Picture);
|
||
finally
|
||
Free;
|
||
end;
|
||
|
||
ImageLogoAbout.Left := (tsLogo.Width - ImageLogoAbout.Width) div 2;
|
||
ImageLogoAbout.Top := (tsLogo.Height - ImageLogoAbout.Height) div 2;
|
||
end;
|
||
|
||
{ --------------------------------------------------------------------------- }
|
||
|
||
procedure TfrmAbout.PaintBoxInfoPaint(Sender: TObject);
|
||
begin
|
||
DataModuleGlobPLG.ImageList32_32.Draw(PaintBoxInfo.Canvas, 0, 0, DataModuleGlobPLG.Idx.iiInfo);
|
||
end;
|
||
|
||
{ --------------------------------------------------------------------------- }
|
||
|
||
procedure TfrmAbout.A_Zalozka_X_Execute(Sender: TObject);
|
||
begin
|
||
case TAction(Sender).Tag of
|
||
1: PageControlMain.ActivePage := tsInfo;
|
||
2: PageControlMain.ActivePage := tsLogo;
|
||
3: if tsTechPopis.TabVisible then
|
||
PageControlMain.ActivePage := tsTechPopis;
|
||
4: if tsHistorieVerzi.TabVisible then
|
||
PageControlMain.ActivePage := tsHistorieVerzi;
|
||
end;
|
||
end;
|
||
|
||
{ --------------------------------------------------------------------------- }
|
||
|
||
procedure TfrmAbout.LV_InfoCustomDrawItem(Sender: TCustomListView;
|
||
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
|
||
begin
|
||
if Item.Data = proTlustyRadek then
|
||
Sender.Canvas.Font.Style := [fsBold]
|
||
else
|
||
if Item.Data = proCervenyRadek then
|
||
Sender.Canvas.Font.Color := clRed;
|
||
end;
|
||
|
||
{ --------------------------------------------------------------------------- }
|
||
|
||
procedure TfrmAbout.LV_InfoDblClick(Sender: TObject);
|
||
var
|
||
Cesta: String;
|
||
begin
|
||
if Assigned(LV_Info.Selected) and
|
||
(LV_Info.Selected.Data = proUmisteniDLL) then
|
||
begin
|
||
Cesta := ExtractFileDir(LV_Info.Selected.SubItems[0]);
|
||
if Cesta <> '' then
|
||
ShellExecute(0, 'open', PChar(Cesta), nil, nil, SW_SHOWNORMAL);
|
||
end;
|
||
end;
|
||
|
||
{ --------------------------------------------------------------------------- }
|
||
|
||
procedure TfrmAbout.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
begin
|
||
if PageControlMain.ActivePage = tsInfo then
|
||
begin
|
||
// Ctrl+C nebo Ctrl+Insert
|
||
if (ShortCut(Key, Shift) = ShortCut(ord('C'), [ssCtrl])) or
|
||
(ShortCut(Key, Shift) = ShortCut(VK_INSERT, [ssCtrl])) then
|
||
begin
|
||
bCopyClick(nil);
|
||
Key := 0;
|
||
Exit;
|
||
end;
|
||
end;
|
||
|
||
inherited;
|
||
end;
|
||
|
||
{ --------------------------------------------------------------------------- }
|
||
|
||
procedure TfrmAbout.bCopyClick(Sender: TObject);
|
||
var
|
||
Obsah: String;
|
||
II: Integer;
|
||
LI: TListItem;
|
||
begin
|
||
Obsah := '';
|
||
for II := 0 to LV_Info.Items.Count-1 do
|
||
begin
|
||
LI := LV_Info.Items[II];
|
||
Obsah := Format('%s'#13#10'%s'#9'%s', [Obsah, LI.Caption, LI.SubItems[0]]);
|
||
end;
|
||
Delete(Obsah, 1, 2); // zrus prvni CR+LF
|
||
|
||
Clipboard.AsText := Obsah;
|
||
end;
|
||
|
||
{ --------------------------------------------------------------------------- }
|
||
|
||
function TfrmAbout.ShowModalEx(Helios: IHelios): TModalResult;
|
||
var
|
||
PomPointer: Pointer;
|
||
VerzeZBD, PomStr: String;
|
||
ZmenyOK: Boolean;
|
||
|
||
{ +++++++++++++++++++++++++++ }
|
||
|
||
procedure _PridejText(const Nazev, Hodnota: String; TypRadku: Pointer = nil);
|
||
begin
|
||
with LV_Info.Items.Add do
|
||
begin
|
||
Caption := Nazev;
|
||
SubItems.Add(Hodnota);
|
||
Data := TypRadku;
|
||
end;
|
||
end;
|
||
|
||
{ +++++++++++++++++++++++++++ }
|
||
|
||
begin
|
||
PageControlMain.ActivePage := tsInfo;
|
||
|
||
Caption := Format('%s [%s]', [plgCtiOznam(plxJadroAbout_OPluginu),
|
||
PluginKonfig.PluginVerejneJmeno]);
|
||
|
||
// naplneni informaci
|
||
LV_Info.Items.BeginUpdate;
|
||
try
|
||
LV_Info.Items.Clear;
|
||
|
||
_PridejText('PLUGIN', '', proTlustyRadek);
|
||
_PridejText(plgCtiOznam(plxJadroAbout_Nazev), PluginKonfig.PluginVerejneJmeno);
|
||
_PridejText(plgCtiOznam(plxJadroVerze), plgVerzePluginu(jvCelaUnicode){$IFnDEF BezLadit}+' (beta)'{$ENDIF});
|
||
|
||
if Helios.HeVersion < PluginKonfig.PluginMinimalniPozadovanaVerzeHeliosu then
|
||
PomPointer := proCervenyRadek
|
||
else
|
||
PomPointer := nil;
|
||
_PridejText(Format(plgCtiOznam(plxJadroAbout_MinVerze_X), [Cplg_ProductName]),
|
||
plgObecnaVerze(PluginKonfig.PluginMinimalniPozadovanaVerzeHeliosu, jvCela), PomPointer);
|
||
|
||
if Helios.SQLVersion < PluginKonfig.PluginMinimalniPozadovanaVerzeSQLServeru then
|
||
PomPointer := proCervenyRadek
|
||
else
|
||
PomPointer := nil;
|
||
_PridejText(plgCtiOznam(plxJadroMinVerzeSQLServeru),
|
||
plgVerzeSQLServeru(PluginKonfig.PluginMinimalniPozadovanaVerzeSQLServeru), PomPointer);
|
||
|
||
PomPointer := nil;
|
||
VerzeZBD := plgNactiVerziPluginuZDB(Helios, ZmenyOK);
|
||
if VerzeZBD = '000000000000' then
|
||
VerzeZBD := plgCtiOznam(plxJadroNeinstalovano)
|
||
else
|
||
begin
|
||
VerzeZBD := IntToStr(StrToIntDef(Copy(VerzeZBD, 1, 2),1)) + '.' +
|
||
IntToStr(StrToIntDef(Copy(VerzeZBD, 3, 2),0)) + '.' +
|
||
Copy(VerzeZBD, 5, 4) + '.' +
|
||
Copy(VerzeZBD, 9, 4);
|
||
if ZmenyOK then
|
||
VerzeZBD := Format('%s (%s)', [VerzeZBD, plgCtiOznam(plxOK)])
|
||
else
|
||
begin
|
||
VerzeZBD := Format('%s (ERROR)', [VerzeZBD]);
|
||
PomPointer := proCervenyRadek;
|
||
end;
|
||
end;
|
||
_PridejText(plgCtiOznam(plxJadroInstalovanaVerze), VerzeZBD, PomPointer);
|
||
|
||
_PridejText('', '');
|
||
_PridejText(AnsiUpperCase(plgCtiOznam(plxJadroAbout_Vyrobce)), '', proTlustyRadek);
|
||
_PridejText(plgCtiOznam(plxJadroAbout_Vyrobce), PluginKonfig.PluginCopyrightVyrobce);
|
||
_PridejText(plgCtiOznam(plxJadroAbout_IdentifikaceVyrobce), PluginKonfig.PartnerIdentification);
|
||
|
||
_PridejText('', '');
|
||
_PridejText('PLUGIN (SYS)', '', proTlustyRadek);
|
||
_PridejText('ClassID', GUIDToString(PluginKonfig.PluginClass_ID));
|
||
_PridejText('SysName', PluginKonfig.PluginSystemoveJmeno);
|
||
_PridejText('ClassName', PluginKonfig.PluginClassName);
|
||
if PluginKonfig.PluginIdentifikator <> '' then
|
||
PomStr := PluginKonfig.PluginIdentifikator
|
||
else
|
||
PomStr := plgCtiOznam(plxJadro_Nepouzito_);
|
||
_PridejText(plgCtiOznam(plxJadroIdentifikator), PomStr);
|
||
_PridejText(plgCtiOznam(plxJadroUmisteni), plgGetPluginPathAndName, proUmisteniDLL);
|
||
|
||
if Helios.HeVersion < Cplg_Jadro_MinimalniPozadovanaVerzeHeliosu then
|
||
PomPointer := proCervenyRadek
|
||
else
|
||
PomPointer := nil;
|
||
|
||
_PridejText('', '');
|
||
_PridejText(plgCtiOznam(plxJadroAbout_JADRO), '', proTlustyRadek);
|
||
_PridejText(plgCtiOznam(plxJadroVerze),
|
||
plgObecnaVerze(Cplg_VerzeJadra, jvCelaUnicode) +
|
||
' / IHePlugin3 / ' + plgGetIndependentSQLFloat('%.1f', System.CompilerVersion));
|
||
_PridejText(Format(plgCtiOznam(plxJadroAbout_MinVerze_X), [Cplg_ProductName]),
|
||
plgObecnaVerze(Cplg_Jadro_MinimalniPozadovanaVerzeHeliosu, jvCela), PomPointer);
|
||
// AJ, 8.12.2015 - Administr<74>torsk<73> podpora v HeO
|
||
{ podpora plat<61> od uvoln<6C>n<EFBFBD> tohoto k<>du, tud<75><64> nen<65> nutn<74> <20><>dn<64> podm<64>nka, proto natvrdo }
|
||
_PridejText(plgCtiOznam(plxJadroPodporaTicheInstalacePluginu), plgCtiOznam(plxJadroAno));
|
||
finally
|
||
LV_Info.Items.EndUpdate;
|
||
end;
|
||
|
||
// technicky popis
|
||
if PluginKonfig.PluginTechnickyPopis = '' then
|
||
tsTechPopis.TabVisible := False
|
||
else
|
||
MemoTechPopis.Lines.Text := PluginKonfig.PluginTechnickyPopis;
|
||
|
||
if PluginKonfig.PluginHistorieVerzi = '' then
|
||
tsHistorieVerzi.TabVisible := False
|
||
else
|
||
MemoHistorieVerzi.Lines.Text := PluginKonfig.PluginHistorieVerzi;
|
||
|
||
// vlastni zobrazeni
|
||
Result := ShowModal;
|
||
end;
|
||
|
||
{ ########################################################################### }
|
||
|
||
end.
|