From 3e52125f09104e0d64ca30557403486166b3f1cd Mon Sep 17 00:00:00 2001
From: alexs75
Date: Wed, 25 Aug 2010 17:45:41 +0000
Subject: [PATCH] new component for display service status
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1302 8e941d3f-bd1b-0410-a28a-d453659cc2b4
---
components/rx/docs/rxfpc.xml | 40 +++++++++++
components/rx/registerrx.pas | 26 +------
components/rx/registerrxdb.pas | 15 +++-
components/rx/registerrxtools.pas | 40 +++++++++++
components/rx/rxnew.lpk | 13 +++-
components/rx/rxnew.pas | 4 +-
components/rx/rxsystemservices.pas | 112 +++++++++++++++++++++++++++++
components/rx/rxviewspanel.pas | 30 +++++++-
8 files changed, 251 insertions(+), 29 deletions(-)
create mode 100644 components/rx/registerrxtools.pas
create mode 100644 components/rx/rxsystemservices.pas
diff --git a/components/rx/docs/rxfpc.xml b/components/rx/docs/rxfpc.xml
index 05c9976ec..69db2f643 100644
--- a/components/rx/docs/rxfpc.xml
+++ b/components/rx/docs/rxfpc.xml
@@ -163,6 +163,7 @@
+
RxDBGrid-а.
@@ -566,6 +567,7 @@
+
RxDBGrid-а.
@@ -1151,6 +1153,7 @@ TRxDBCalcEdit является наследником TDBCalcEdit и имеет
+
Count
@@ -2428,6 +2431,7 @@ Description
+
const SearchDomain, FileName:
@@ -2450,6 +2454,7 @@ Description
+
String;
@@ -2472,6 +2477,7 @@ Description
+
out UserName, DomainName:
@@ -2494,6 +2500,7 @@ Description
+
String);
@@ -2535,6 +2542,7 @@ Description
+
const DirName:
@@ -2551,6 +2559,7 @@ Description
+
string):
@@ -2567,6 +2576,7 @@ Description
+
string;
Функция проверяет все разделители каталогов в указанном имени файла/каталога и, если нужно, меняет их на значение константыDirectorySeparator.
@@ -2596,6 +2606,7 @@ Description
+
string;
Функция GetUserName возвращает имя оператора, залогиненго в системе
@@ -2842,5 +2853,34 @@ Description
+
+
+
+
+
+
+ Компонента получает состояние служб на указанном компьютере
+
+
+
+
+ Массив содержит список служб, работающих в системе
+
+
+ Количество эелементов в массиве Items
+
+
+ Имя компьютера, на котором опрашиваются службы
+
+
+ Фильтр отбора служб по типу (служба/драйвер)
+
+
+ Фильтр отбора служб по статусу работает/остановлена
+
+ Модуль содержит компоненту TRxSystemServices
+ Модуль RxSystemServices предназначен для получения информации о состоянии работающих в системе служб (windows) / демонов (unix-like)
+Cодержит компоненту TRxSystemServices.
+
diff --git a/components/rx/registerrx.pas b/components/rx/registerrx.pas
index 72a91567d..fb33161d6 100644
--- a/components/rx/registerrx.pas
+++ b/components/rx/registerrx.pas
@@ -42,11 +42,11 @@ procedure Register;
implementation
uses
- PropEdits, dbdateedit, dbcurredit, rxlookup, folderlister, rxmemds, duallist,
+ PropEdits, dbdateedit, dbcurredit, rxlookup, folderlister, duallist,
curredit, rxswitch, rxdice, rxdbcomb, rxtoolbar, rxxpman, PageMngr, RxAppIcon,
- Dialogs, ComponentEditors, seldsfrm, DBPropEdits, DB, rxctrls, RxLogin,
+ Dialogs, ComponentEditors, DBPropEdits, DB, rxctrls,
RxCustomChartPanel, AutoPanel, pickdate, rxconst, tooledit, rxclock,
- rxceEditLookupFields, rxpopupunit, rxspin, RxTimeEdit, RxVersInfo,
+ rxceEditLookupFields, rxpopupunit, rxspin, RxTimeEdit,
RxAboutDialog, RxViewsPanel;
type
@@ -102,11 +102,6 @@ begin
RegisterComponents('RX DBAware',[TRXLookupEdit, TRxDBLookupCombo]);
end;
-procedure RegisterRxMemDS;
-begin
- RegisterComponents('RX DBAware',[TRxMemoryData]);
-end;
-
procedure RegisterRxDBComb;
begin
RegisterComponents('RX DBAware',[TRxDBComboBox]);
@@ -183,16 +178,6 @@ begin
RegisterComponents('RX',[TRxTimeEdit]);
end;
-procedure RegisterRxLogin;
-begin
- RegisterComponents('RX',[TRxLoginDialog]);
-end;
-
-procedure RegisterRxVersInfo;
-begin
- RegisterComponents('RX',[TRxVersionInfo]);
-end;
-
procedure RegisterRxAboutDialog;
begin
RegisterComponents('RX',[TRxAboutDialog]);
@@ -227,19 +212,14 @@ begin
RegisterUnit('rxclock', @RegisterRxClock);
RegisterUnit('rxspin', @RegisterRxSpin);
RegisterUnit('RxTimeEdit', @RegisterRxTimeEdit);
- RegisterUnit('RxLogin', @RegisterRxLogin);
- RegisterUnit('RxVersInfo', @RegisterRxVersInfo);
RegisterUnit('RxAboutDialog', @RegisterRxAboutDialog);
RegisterUnit('RxViewsPanel', @RegisterRxViewsPanel);
//RX DBAware
RegisterUnit('dbdateedit', @RegisterUnitDBDateEdit);
RegisterUnit('rxlookup', @RegisterRXLookup);
- RegisterUnit('rxmemds', @RegisterRxMemDS);
RegisterUnit('rxdbcomb', @RegisterRxDBComb);
- //Component Editors
- RegisterComponentEditor(TRxMemoryData, TMemDataSetEditor);
//
RegisterPropertyEditor(TypeInfo(string), TPopUpColumn, 'FieldName', TPopUpColumnFieldProperty);
diff --git a/components/rx/registerrxdb.pas b/components/rx/registerrxdb.pas
index 5e42dbfa0..48d9654d9 100644
--- a/components/rx/registerrxdb.pas
+++ b/components/rx/registerrxdb.pas
@@ -40,7 +40,8 @@ uses
procedure Register;
implementation
-uses DB, DBPropEdits, rxdbgrid, RxDBSpinEdit, RxDBTimeEdit, RxDBCtrls, PropEdits;
+uses DB, DBPropEdits, rxdbgrid, RxDBSpinEdit, RxDBTimeEdit, RxDBCtrls, rxmemds,
+ ComponentEditors, seldsfrm, PropEdits;
type
@@ -111,13 +112,23 @@ begin
RegisterComponents('RX DBAware',[TRxDBGrid]);
end;
+procedure RegisterRxMemDS;
+begin
+ RegisterComponents('RX DBAware',[TRxMemoryData]);
+end;
+
procedure Register;
begin
RegisterUnit('RxDBTimeEdit', @RegisterRxDBTimeEdit);
RegisterUnit('RxDBSpinEdit', @RegisterRxDBSpinEdit);
RegisterUnit('RxDBCtrls', @RegisterRxDBCtrls);
RegisterUnit('rxdbgrid', @RegisterRxDbGrid);
-//
+ RegisterUnit('rxmemds', @RegisterRxMemDS);
+
+ //Component Editors
+ RegisterComponentEditor(TRxMemoryData, TMemDataSetEditor);
+
+ //
RegisterPropertyEditor(TypeInfo(string), TRxColumn, 'FieldName', TRxDBGridFieldProperty);
RegisterPropertyEditor(TypeInfo(string), TRxColumnFooter, 'FieldName', TRxDBGridFooterFieldProperty);
end;
diff --git a/components/rx/registerrxtools.pas b/components/rx/registerrxtools.pas
new file mode 100644
index 000000000..2e3e68ec7
--- /dev/null
+++ b/components/rx/registerrxtools.pas
@@ -0,0 +1,40 @@
+unit RegisterRxTools;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, LazarusPackageIntf;
+
+procedure Register;
+
+implementation
+uses RxSystemServices, RxLogin, RxVersInfo;
+const
+ sRxToolsPage = 'RX Tools';
+
+procedure RegisterRxSystemServices;
+begin
+ RegisterComponents(sRxToolsPage, [TRxSystemServices]);
+end;
+
+procedure RegisterRxLogin;
+begin
+ RegisterComponents(sRxToolsPage, [TRxLoginDialog]);
+end;
+
+procedure RegisterRxVersInfo;
+begin
+ RegisterComponents(sRxToolsPage, [TRxVersionInfo]);
+end;
+
+procedure Register;
+begin
+ RegisterUnit('RxLogin', @RegisterRxLogin);
+ RegisterUnit('RxVersInfo', @RegisterRxVersInfo);
+ RegisterUnit('RxSystemServices', @RegisterRxSystemServices);
+end;
+
+end.
+
diff --git a/components/rx/rxnew.lpk b/components/rx/rxnew.lpk
index 6269b22dd..a8068c096 100644
--- a/components/rx/rxnew.lpk
+++ b/components/rx/rxnew.lpk
@@ -27,7 +27,7 @@ translate to Lazarus by alexs in 2005 - 2009
-
+
@@ -240,7 +240,7 @@ translate to Lazarus by alexs in 2005 - 2009
-
+
@@ -250,6 +250,15 @@ translate to Lazarus by alexs in 2005 - 2009
+
+
+
+
+
+
+
+
+
diff --git a/components/rx/rxnew.pas b/components/rx/rxnew.pas
index 32b77995f..c68cf41c1 100644
--- a/components/rx/rxnew.pas
+++ b/components/rx/rxnew.pas
@@ -15,7 +15,8 @@ uses
rxsortmemds, AutoPanel, pickdate, rxiconv, rxceEditLookupFields, rxclock,
rxspin, RxDBSpinEdit, RegisterRxDB, RxTimeEdit, RxDBTimeEdit, RxDBCtrls,
rxfilterby, rxconst, rxFileUtils, RxVersInfo, RxAboutDialog,
- rxAboutFormUnit, dbcurredit, RxViewsPanel, LazarusPackageIntf;
+ rxAboutFormUnit, dbcurredit, RxViewsPanel, RxSystemServices,
+ RegisterRxTools, LazarusPackageIntf;
implementation
@@ -23,6 +24,7 @@ procedure Register;
begin
RegisterUnit('registerrx', @registerrx.Register);
RegisterUnit('RegisterRxDB', @RegisterRxDB.Register);
+ RegisterUnit('RegisterRxTools', @RegisterRxTools.Register);
end;
initialization
diff --git a/components/rx/rxsystemservices.pas b/components/rx/rxsystemservices.pas
new file mode 100644
index 000000000..0d35f3532
--- /dev/null
+++ b/components/rx/rxsystemservices.pas
@@ -0,0 +1,112 @@
+unit RxSystemServices;
+
+{$mode objfpc}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs;
+
+type
+ TRxServiceType = (sstAll, sstService, sstDrivers);
+ TRxServiceStatus = (sssAll, sssActive, sssInactive);
+ TRxServiceState = (srsStoped, //SERVICE_STOPPED : S := 'Сервис не запущен'
+ srsStartPending, //SERVICE_START_PENDING : S := 'Сервис в процессе запуска';
+ srsStopPending, //SERVICE_STOP_PENDING : S := 'Сервис в процессе завершения';
+ srsRunning, //SERVICE_RUNNING : S := 'Сервис запущен';
+ srsContinuePending, //SERVICE_CONTINUE_PENDING : S := 'Сервис в процессе запуска после временной оснановки';
+ srsPausePending, //SERVICE_PAUSE_PENDING : S := 'Сервис в процессе временной оснановки';
+ srsPaused //SERVICE_PAUSED : S := 'Сервис временно оснановлен';
+ );
+
+ TRxServiceItem = record
+ Name:string;
+ Description:string;
+ Status:TRxServiceState;
+ end;
+
+type
+
+ { TRxSystemServices }
+
+ TRxSystemServices = class(TComponent)
+ private
+ FItemCount: integer;
+ FServerName: string;
+ FServiceStatus: TRxServiceStatus;
+ FServiceType: TRxServiceType;
+ function GetItems(Index: integer): TRxServiceItem;
+ procedure SetItemCount(const AValue: integer);
+ procedure SetItems(Index: integer; const AValue: TRxServiceItem);
+ procedure SetServerName(const AValue: string);
+ procedure SetServiceStatus(const AValue: TRxServiceStatus);
+ procedure SetServiceType(const AValue: TRxServiceType);
+ protected
+ procedure ClearItems;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ property Items[Index:integer]:TRxServiceItem read GetItems write SetItems;
+ property ItemCount:integer read FItemCount write SetItemCount;
+ published
+ property ServerName:string read FServerName write SetServerName;
+ property ServiceType:TRxServiceType read FServiceType write SetServiceType; //(sstAll, sstService, sstDrivers);
+ property ServiceStatus:TRxServiceStatus read FServiceStatus write SetServiceStatus; //(sssAll, sssActive, sssInactive);
+ end;
+
+implementation
+
+{ TRxSystemServices }
+
+procedure TRxSystemServices.SetServerName(const AValue: string);
+begin
+ if FServerName=AValue then exit;
+ FServerName:=AValue;
+end;
+
+function TRxSystemServices.GetItems(Index: integer): TRxServiceItem;
+begin
+
+end;
+
+procedure TRxSystemServices.SetItemCount(const AValue: integer);
+begin
+ if FItemCount=AValue then exit;
+ FItemCount:=AValue;
+end;
+
+procedure TRxSystemServices.SetItems(Index: integer;
+ const AValue: TRxServiceItem);
+begin
+
+end;
+
+procedure TRxSystemServices.SetServiceStatus(const AValue: TRxServiceStatus);
+begin
+ if FServiceStatus=AValue then exit;
+ FServiceStatus:=AValue;
+end;
+
+procedure TRxSystemServices.SetServiceType(const AValue: TRxServiceType);
+begin
+ if FServiceType=AValue then exit;
+ FServiceType:=AValue;
+end;
+
+procedure TRxSystemServices.ClearItems;
+begin
+ FItemCount:=0;
+end;
+
+constructor TRxSystemServices.Create(AOwner: TComponent);
+begin
+ inherited Create(AOwner);
+end;
+
+destructor TRxSystemServices.Destroy;
+begin
+ ClearItems;
+ inherited Destroy;
+end;
+
+end.
diff --git a/components/rx/rxviewspanel.pas b/components/rx/rxviewspanel.pas
index 824a1f384..93da669e4 100644
--- a/components/rx/rxviewspanel.pas
+++ b/components/rx/rxviewspanel.pas
@@ -38,7 +38,7 @@ interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
- Buttons, StdCtrls;
+ Buttons, StdCtrls, LCLType;
type
TRxViewsPanel = class;
@@ -54,11 +54,15 @@ type
FLabel:TLabel;
function GetAction: TBasicAction;
function GetCaption: string;
+ function GetEnabled: Boolean;
+ function GetHint: TTranslateString;
function GetImageIndex: integer;
function GetTag: Longint;
function GetVisible: boolean;
procedure SetAction(const AValue: TBasicAction);
procedure SetCaption(const AValue: string);
+ procedure SetEnabled(const AValue: Boolean);
+ procedure SetHint(const AValue: TTranslateString);
procedure SetImageIndex(const AValue: integer);
procedure SetTag(const AValue: Longint);
procedure SetVisible(const AValue: boolean);
@@ -76,6 +80,8 @@ type
property Caption:string read GetCaption Write SetCaption;
property Tag: Longint read GetTag write SetTag default 0;
property ImageIndex:integer read GetImageIndex write SetImageIndex;
+ property Hint:TTranslateString read GetHint write SetHint;
+ property Enabled: Boolean read GetEnabled write SetEnabled default True;
end;
@@ -224,6 +230,7 @@ end;
procedure TRxViewsPanel.InternalSelectView(Item: TRxViewsPanelItem);
begin
+ FItemIndex:=Item.Index;
if Assigned(FOnSelectViewEvent) then
FOnSelectViewEvent(Item.Index, Item);
end;
@@ -267,6 +274,16 @@ begin
Result:=FLabel.Caption;
end;
+function TRxViewsPanelItem.GetEnabled: Boolean;
+begin
+ Result:=FButton.Enabled;
+end;
+
+function TRxViewsPanelItem.GetHint: TTranslateString;
+begin
+ Result:=FButton.Hint;
+end;
+
function TRxViewsPanelItem.GetImageIndex: integer;
begin
{ if Assigned(FButton.Action) then
@@ -295,6 +312,17 @@ begin
FLabel.Caption:=AValue;
end;
+procedure TRxViewsPanelItem.SetEnabled(const AValue: Boolean);
+begin
+ FButton.Enabled:=AValue;
+ FLabel.Enabled:=AValue;
+end;
+
+procedure TRxViewsPanelItem.SetHint(const AValue: TTranslateString);
+begin
+ FButton.Hint:=AValue;
+end;
+
procedure TRxViewsPanelItem.SetImageIndex(const AValue: integer);
begin
if FImageIndex=AValue then exit;