доделал автоматические действия
This commit is contained in:
+2
-1
@@ -26,7 +26,8 @@ uses
|
|||||||
fSimpleGrid in 'fSimpleGrid.pas' {frSimpleGrid: TFrame},
|
fSimpleGrid in 'fSimpleGrid.pas' {frSimpleGrid: TFrame},
|
||||||
fContruct in 'fContruct.pas' {frContruct: TFrame},
|
fContruct in 'fContruct.pas' {frContruct: TFrame},
|
||||||
fGroupsRequest in 'fGroupsRequest.pas' {frGroupsRequest: TFrame},
|
fGroupsRequest in 'fGroupsRequest.pas' {frGroupsRequest: TFrame},
|
||||||
uMyTimer in 'uMyTimer.pas';
|
uMyTimer in 'uMyTimer.pas',
|
||||||
|
uRegExpr in 'uRegExpr.pas';
|
||||||
|
|
||||||
{$R *.res}
|
{$R *.res}
|
||||||
|
|
||||||
|
|||||||
@@ -393,6 +393,7 @@
|
|||||||
<DesignClass>TFrame</DesignClass>
|
<DesignClass>TFrame</DesignClass>
|
||||||
</DCCReference>
|
</DCCReference>
|
||||||
<DCCReference Include="uMyTimer.pas"/>
|
<DCCReference Include="uMyTimer.pas"/>
|
||||||
|
<DCCReference Include="uRegExpr.pas"/>
|
||||||
<None Include=".gitignore"/>
|
<None Include=".gitignore"/>
|
||||||
<BuildConfiguration Include="Base">
|
<BuildConfiguration Include="Base">
|
||||||
<Key>Base</Key>
|
<Key>Base</Key>
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 44
|
TabOrder = 44
|
||||||
RowCount = 0
|
RowCount = 0
|
||||||
OnEditingDone = sgTimersEditingDone
|
OnEditingDone = sgTimersEditingDone
|
||||||
|
OnCellClick = sgTimersCellClick
|
||||||
Viewport.Width = 459.000000000000000000
|
Viewport.Width = 459.000000000000000000
|
||||||
Viewport.Height = 200.000000000000000000
|
Viewport.Height = 200.000000000000000000
|
||||||
object ccTimerEnable: TCheckColumn
|
object ccTimerEnable: TCheckColumn
|
||||||
@@ -122,6 +123,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 39
|
TabOrder = 39
|
||||||
Text = #1044#1086#1073#1072#1074#1080#1090#1100
|
Text = #1044#1086#1073#1072#1074#1080#1090#1100
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnBanWordsAddClick
|
||||||
end
|
end
|
||||||
object btnBanWordsEdt: TButton
|
object btnBanWordsEdt: TButton
|
||||||
Position.X = 96.000000000000000000
|
Position.X = 96.000000000000000000
|
||||||
@@ -129,6 +131,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 40
|
TabOrder = 40
|
||||||
Text = #1048#1079#1084#1077#1085#1080#1090#1100
|
Text = #1048#1079#1084#1077#1085#1080#1090#1100
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnBanWordsEdtClick
|
||||||
end
|
end
|
||||||
object btnBanWordsDel: TButton
|
object btnBanWordsDel: TButton
|
||||||
Position.X = 184.000000000000000000
|
Position.X = 184.000000000000000000
|
||||||
@@ -136,6 +139,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 41
|
TabOrder = 41
|
||||||
Text = #1059#1076#1072#1083#1080#1090#1100
|
Text = #1059#1076#1072#1083#1080#1090#1100
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnBanWordsDelClick
|
||||||
end
|
end
|
||||||
object sgBanWords: TStringGrid
|
object sgBanWords: TStringGrid
|
||||||
CanFocus = True
|
CanFocus = True
|
||||||
@@ -147,6 +151,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
Size.PlatformDefault = False
|
Size.PlatformDefault = False
|
||||||
TabOrder = 42
|
TabOrder = 42
|
||||||
RowCount = 0
|
RowCount = 0
|
||||||
|
OnCellClick = sgBanWordsCellClick
|
||||||
Viewport.Width = 293.000000000000000000
|
Viewport.Width = 293.000000000000000000
|
||||||
Viewport.Height = 200.000000000000000000
|
Viewport.Height = 200.000000000000000000
|
||||||
object scRegEx: TStringColumn
|
object scRegEx: TStringColumn
|
||||||
@@ -162,6 +167,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 43
|
TabOrder = 43
|
||||||
Text = #1055#1088#1086#1074#1077#1088#1080#1090#1100
|
Text = #1055#1088#1086#1074#1077#1088#1080#1090#1100
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnBanWordsCheckClick
|
||||||
end
|
end
|
||||||
object Label6: TLabel
|
object Label6: TLabel
|
||||||
Position.X = 8.000000000000000000
|
Position.X = 8.000000000000000000
|
||||||
@@ -239,6 +245,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 40
|
TabOrder = 40
|
||||||
Text = #1044#1086#1073#1072#1074#1080#1090#1100
|
Text = #1044#1086#1073#1072#1074#1080#1090#1100
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnCounterAddClick
|
||||||
end
|
end
|
||||||
object btnCounterDelete: TButton
|
object btnCounterDelete: TButton
|
||||||
Position.X = 184.000000000000000000
|
Position.X = 184.000000000000000000
|
||||||
@@ -246,6 +253,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 42
|
TabOrder = 42
|
||||||
Text = #1059#1076#1072#1083#1080#1090#1100
|
Text = #1059#1076#1072#1083#1080#1090#1100
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnCounterDeleteClick
|
||||||
end
|
end
|
||||||
object btnCounterP: TButton
|
object btnCounterP: TButton
|
||||||
Position.X = 410.000000000000000000
|
Position.X = 410.000000000000000000
|
||||||
@@ -256,6 +264,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 43
|
TabOrder = 43
|
||||||
Text = '+'
|
Text = '+'
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnCounterPClick
|
||||||
end
|
end
|
||||||
object btnCounterM: TButton
|
object btnCounterM: TButton
|
||||||
Position.X = 443.000000000000000000
|
Position.X = 443.000000000000000000
|
||||||
@@ -266,6 +275,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 44
|
TabOrder = 44
|
||||||
Text = '-'
|
Text = '-'
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnCounterMClick
|
||||||
end
|
end
|
||||||
object btnCounterEdit: TButton
|
object btnCounterEdit: TButton
|
||||||
Position.X = 96.000000000000000000
|
Position.X = 96.000000000000000000
|
||||||
@@ -273,6 +283,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
TabOrder = 45
|
TabOrder = 45
|
||||||
Text = #1048#1079#1084#1077#1085#1080#1090#1100
|
Text = #1048#1079#1084#1077#1085#1080#1090#1100
|
||||||
TextSettings.Trimming = None
|
TextSettings.Trimming = None
|
||||||
|
OnClick = btnCounterEditClick
|
||||||
end
|
end
|
||||||
object sgCounter: TStringGrid
|
object sgCounter: TStringGrid
|
||||||
CanFocus = True
|
CanFocus = True
|
||||||
@@ -284,6 +295,7 @@ object frAutoActions: TfrAutoActions
|
|||||||
Size.PlatformDefault = False
|
Size.PlatformDefault = False
|
||||||
TabOrder = 46
|
TabOrder = 46
|
||||||
RowCount = 0
|
RowCount = 0
|
||||||
|
OnCellClick = sgCounterCellClick
|
||||||
Viewport.Width = 459.000000000000000000
|
Viewport.Width = 459.000000000000000000
|
||||||
Viewport.Height = 96.000000000000000000
|
Viewport.Height = 96.000000000000000000
|
||||||
object scCounterName: TStringColumn
|
object scCounterName: TStringColumn
|
||||||
|
|||||||
+236
-31
@@ -4,7 +4,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
System.SysUtils, System.Types, System.UITypes, System.Classes,
|
System.SysUtils, System.Types, System.UITypes, System.Classes,
|
||||||
System.Variants,
|
System.Variants, uRegExpr,
|
||||||
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
|
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
|
||||||
System.Rtti, FMX.Grid.Style, FMX.Grid, FMX.ScrollBox, FMX.Edit, StrUtils,
|
System.Rtti, FMX.Grid.Style, FMX.Grid, FMX.ScrollBox, FMX.Edit, StrUtils,
|
||||||
FMX.Controls.Presentation, uMyTimer, uRecords, System.Generics.Collections;
|
FMX.Controls.Presentation, uMyTimer, uRecords, System.Generics.Collections;
|
||||||
@@ -54,6 +54,18 @@ type
|
|||||||
procedure btnRmMessageClick(Sender: TObject);
|
procedure btnRmMessageClick(Sender: TObject);
|
||||||
procedure btnNotifyTestClick(Sender: TObject);
|
procedure btnNotifyTestClick(Sender: TObject);
|
||||||
procedure sgTimersEditingDone(Sender: TObject; const ACol, ARow: Integer);
|
procedure sgTimersEditingDone(Sender: TObject; const ACol, ARow: Integer);
|
||||||
|
procedure btnBanWordsCheckClick(Sender: TObject);
|
||||||
|
procedure btnBanWordsAddClick(Sender: TObject);
|
||||||
|
procedure btnBanWordsEdtClick(Sender: TObject);
|
||||||
|
procedure btnBanWordsDelClick(Sender: TObject);
|
||||||
|
procedure btnCounterAddClick(Sender: TObject);
|
||||||
|
procedure btnCounterEditClick(Sender: TObject);
|
||||||
|
procedure btnCounterDeleteClick(Sender: TObject);
|
||||||
|
procedure btnCounterPClick(Sender: TObject);
|
||||||
|
procedure btnCounterMClick(Sender: TObject);
|
||||||
|
procedure sgTimersCellClick(const Column: TColumn; const Row: Integer);
|
||||||
|
procedure sgBanWordsCellClick(const Column: TColumn; const Row: Integer);
|
||||||
|
procedure sgCounterCellClick(const Column: TColumn; const Row: Integer);
|
||||||
private
|
private
|
||||||
{ Private declarations }
|
{ Private declarations }
|
||||||
procedure OnMyTimerExec(Sender: TObject; const txt: string; o: Boolean);
|
procedure OnMyTimerExec(Sender: TObject; const txt: string; o: Boolean);
|
||||||
@@ -62,6 +74,8 @@ type
|
|||||||
{ Public declarations }
|
{ Public declarations }
|
||||||
FTimerList: TObjectList<TMyTimerThread>;
|
FTimerList: TObjectList<TMyTimerThread>;
|
||||||
listTimer: TArray<TListTimer>;
|
listTimer: TArray<TListTimer>;
|
||||||
|
listBanWords: TArray<TBanWord>;
|
||||||
|
listCounters: TArray<TCounter>;
|
||||||
procedure UpdateGridFromArray;
|
procedure UpdateGridFromArray;
|
||||||
procedure initTimers;
|
procedure initTimers;
|
||||||
end;
|
end;
|
||||||
@@ -100,12 +114,165 @@ begin
|
|||||||
edtInterval.text := '10';
|
edtInterval.text := '10';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnBanWordsAddClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
NewRec: TBanWord;
|
||||||
|
begin
|
||||||
|
if (edtBanWords.text = '') then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
NewRec.regexp := edtBanWords.text;
|
||||||
|
|
||||||
|
SetLength(listBanWords, Length(listBanWords) + 1);
|
||||||
|
listBanWords[High(listBanWords)] := NewRec;
|
||||||
|
|
||||||
|
UpdateGridFromArray;
|
||||||
|
DB.SaveRecordArray<TBanWord>('listBanWords', listBanWords);
|
||||||
|
|
||||||
|
edtBanWords.text := '';
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnBanWordsCheckClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
rx: TRegExpr;
|
||||||
|
begin
|
||||||
|
rx := TRegExpr.Create;
|
||||||
|
rx.InputString := edtBanWordsCheck.text;
|
||||||
|
rx.Expression := edtBanWords.text;
|
||||||
|
if rx.Exec then
|
||||||
|
lBanWordsCheck.text := 'åñòü áàíâîðä'
|
||||||
|
else
|
||||||
|
lBanWordsCheck.text := 'íåò áàíâîðäà';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnBanWordsDelClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
SelectedRow: Integer;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
SelectedRow := sgBanWords.Row;
|
||||||
|
// Ïðîâåðÿåì âàëèäíîñòü âûáðàííîé ñòðîêè
|
||||||
|
if (SelectedRow < 0) or (SelectedRow >= sgBanWords.RowCount) then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
// Ñäâèãàåì ýëåìåíòû ìàññèâà
|
||||||
|
for I := SelectedRow to High(listBanWords) - 1 do
|
||||||
|
listBanWords[I] := listBanWords[I + 1];
|
||||||
|
SetLength(listBanWords, Length(listBanWords) - 1);
|
||||||
|
UpdateGridFromArray;
|
||||||
|
DB.SaveRecordArray<TBanWord>('listBanWords', listBanWords);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnBanWordsEdtClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
SelectedRow: Integer;
|
||||||
|
NewText, oldText: string;
|
||||||
|
I: Integer;
|
||||||
|
myRec: TBanWord;
|
||||||
|
begin
|
||||||
|
SelectedRow := sgBanWords.Row;
|
||||||
|
if (edtBanWords.text = '') or (SelectedRow <= 0) or
|
||||||
|
(SelectedRow >= sgBanWords.RowCount) then
|
||||||
|
exit;
|
||||||
|
NewText := edtBanWords.text;
|
||||||
|
oldText := sgBanWords.Cells[0, SelectedRow];
|
||||||
|
for I := 0 to High(listBanWords) do
|
||||||
|
if listBanWords[I].regexp = oldText then
|
||||||
|
begin
|
||||||
|
listBanWords[I].regexp := NewText;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
UpdateGridFromArray;
|
||||||
|
DB.SaveRecordArray<TBanWord>('listBanWords', listBanWords);
|
||||||
|
edtBanWords.text := '';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnCounterAddClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
NewRec: TCounter;
|
||||||
|
begin
|
||||||
|
if (edtCounterName.text = '') or (edtCounterTrigger.text = '') then
|
||||||
|
exit;
|
||||||
|
if (edtCounterCount.text = '') then
|
||||||
|
edtCounterCount.text := '0';
|
||||||
|
|
||||||
|
NewRec.counterName := edtCounterName.text;
|
||||||
|
NewRec.trigger := edtCounterTrigger.text;
|
||||||
|
NewRec.count := strtoint(edtCounterCount.text);
|
||||||
|
NewRec.auto := 0;
|
||||||
|
|
||||||
|
SetLength(listCounters, Length(listCounters) + 1);
|
||||||
|
listCounters[High(listCounters)] := NewRec;
|
||||||
|
|
||||||
|
UpdateGridFromArray;
|
||||||
|
DB.SaveRecordArray<TCounter>('listCounters', listCounters);
|
||||||
|
|
||||||
|
edtCounterName.text := '';
|
||||||
|
edtCounterTrigger.text := '';
|
||||||
|
edtCounterCount.text := '0';
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnCounterDeleteClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
SelectedRow: Integer;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
SelectedRow := sgCounter.Row;
|
||||||
|
// Ïðîâåðÿåì âàëèäíîñòü âûáðàííîé ñòðîêè
|
||||||
|
if (SelectedRow < 0) or (SelectedRow >= sgCounter.RowCount) then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
for I := SelectedRow to High(listCounters) - 1 do
|
||||||
|
listCounters[I] := listCounters[I + 1];
|
||||||
|
SetLength(listCounters, Length(listCounters) - 1);
|
||||||
|
UpdateGridFromArray;
|
||||||
|
DB.SaveRecordArray<TCounter>('listCounters', listCounters);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnCounterEditClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
SelectedRow: Integer;
|
||||||
|
oldName: string;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
SelectedRow := sgCounter.Row;
|
||||||
|
if (edtCounterName.text = '') or (edtCounterTrigger.text = '') then
|
||||||
|
exit;
|
||||||
|
if (edtCounterCount.text = '') then
|
||||||
|
edtCounterCount.text := '0';
|
||||||
|
oldName := sgCounter.Cells[0, SelectedRow];
|
||||||
|
for I := 0 to high(listCounters) do
|
||||||
|
if listCounters[I].counterName = oldName then
|
||||||
|
begin
|
||||||
|
listCounters[I].counterName := edtCounterName.text;
|
||||||
|
listCounters[I].trigger := edtCounterTrigger.text;
|
||||||
|
listCounters[I].count := strtoint(edtCounterCount.text);
|
||||||
|
end;
|
||||||
|
UpdateGridFromArray;
|
||||||
|
DB.SaveRecordArray<TCounter>('listCounters', listCounters);
|
||||||
|
edtCounterName.text := '';
|
||||||
|
edtCounterTrigger.text := '';
|
||||||
|
edtCounterCount.text := '0';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnCounterMClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
edtCounterCount.text := inttostr(strtoint(edtCounterCount.text) - 1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.btnCounterPClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
edtCounterCount.text := inttostr(strtoint(edtCounterCount.text) + 1);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrAutoActions.btnEditMessageClick(Sender: TObject);
|
procedure TfrAutoActions.btnEditMessageClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
SelectedRow: Integer;
|
SelectedRow: Integer;
|
||||||
NewText: string;
|
NewText: string;
|
||||||
NewInterval: Integer;
|
NewInterval: Integer;
|
||||||
RowIndex: Integer;
|
|
||||||
begin
|
begin
|
||||||
SelectedRow := sgTimers.Row;
|
SelectedRow := sgTimers.Row;
|
||||||
if (edtMessage.text = '') or (edtInterval.text = '') or (SelectedRow <= 0) or
|
if (edtMessage.text = '') or (edtInterval.text = '') or (SelectedRow <= 0) or
|
||||||
@@ -114,17 +281,11 @@ begin
|
|||||||
NewText := edtMessage.text;
|
NewText := edtMessage.text;
|
||||||
NewInterval := StrToIntDef(edtInterval.text, 0);
|
NewInterval := StrToIntDef(edtInterval.text, 0);
|
||||||
|
|
||||||
RowIndex := sgTimers.Row;
|
|
||||||
if (RowIndex < 0) or (RowIndex > High(listTimer)) then
|
|
||||||
exit;
|
|
||||||
if NewInterval <= 0 then
|
|
||||||
exit;
|
|
||||||
|
|
||||||
// Îáíîâëÿåì íàñòðîéêè òàéìåðà
|
// Îáíîâëÿåì íàñòðîéêè òàéìåðà
|
||||||
FTimerList[SelectedRow].Update(sgTimers.Cells[2, SelectedRow].ToInteger,
|
FTimerList[SelectedRow].Update(sgTimers.Cells[2, SelectedRow].ToInteger,
|
||||||
sgTimers.Cells[1, SelectedRow], (sgTimers.Cells[3, SelectedRow] = 'True'));
|
sgTimers.Cells[1, SelectedRow], (sgTimers.Cells[3, SelectedRow] = 'True'));
|
||||||
listTimer[RowIndex].interval := NewInterval;
|
listTimer[SelectedRow].interval := NewInterval;
|
||||||
listTimer[RowIndex].mess := NewText;
|
listTimer[SelectedRow].mess := NewText;
|
||||||
UpdateGridFromArray;
|
UpdateGridFromArray;
|
||||||
DB.SaveRecordArray<TListTimer>('listTimer', listTimer);
|
DB.SaveRecordArray<TListTimer>('listTimer', listTimer);
|
||||||
|
|
||||||
@@ -148,14 +309,14 @@ end;
|
|||||||
procedure TfrAutoActions.btnRmMessageClick(Sender: TObject);
|
procedure TfrAutoActions.btnRmMessageClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
SelectedRow: Integer;
|
SelectedRow: Integer;
|
||||||
i, RowIndex: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
SelectedRow := sgTimers.Row;
|
SelectedRow := sgTimers.Row;
|
||||||
// Ïðîâåðÿåì âàëèäíîñòü âûáðàííîé ñòðîêè
|
// Ïðîâåðÿåì âàëèäíîñòü âûáðàííîé ñòðîêè
|
||||||
if (SelectedRow < 0) or (SelectedRow >= sgTimers.RowCount) then
|
if (SelectedRow < 0) or (SelectedRow >= sgTimers.RowCount) then
|
||||||
exit;
|
exit;
|
||||||
// Ïðîâåðÿåì íàëè÷èå òàéìåðà â ñïèñêå
|
// Ïðîâåðÿåì íàëè÷èå òàéìåðà â ñïèñêå
|
||||||
if (SelectedRow < FTimerList.Count) then
|
if (SelectedRow < FTimerList.count) then
|
||||||
begin
|
begin
|
||||||
// Îñòàíàâëèâàåì è óíè÷òîæàåì òàéìåð
|
// Îñòàíàâëèâàåì è óíè÷òîæàåì òàéìåð
|
||||||
if Assigned(FTimerList[SelectedRow]) then
|
if Assigned(FTimerList[SelectedRow]) then
|
||||||
@@ -165,15 +326,9 @@ begin
|
|||||||
FTimerList.Delete(SelectedRow); // Óäàëÿåì èç ñïèñêà ñ àâòîóíè÷òîæåíèåì
|
FTimerList.Delete(SelectedRow); // Óäàëÿåì èç ñïèñêà ñ àâòîóíè÷òîæåíèåì
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
// Óäàëÿåì ñòðîêó èç ñåòêè
|
|
||||||
|
|
||||||
RowIndex := sgTimers.Row;
|
for I := SelectedRow to High(listTimer) - 1 do
|
||||||
if (RowIndex < 0) or (RowIndex > High(listTimer)) then
|
listTimer[I] := listTimer[I + 1];
|
||||||
exit;
|
|
||||||
|
|
||||||
// Ñäâèãàåì ýëåìåíòû ìàññèâà
|
|
||||||
for i := RowIndex to High(listTimer) do
|
|
||||||
listTimer[i] := listTimer[i + 1];
|
|
||||||
SetLength(listTimer, Length(listTimer) - 1);
|
SetLength(listTimer, Length(listTimer) - 1);
|
||||||
UpdateGridFromArray;
|
UpdateGridFromArray;
|
||||||
DB.SaveRecordArray<TListTimer>('listTimer', listTimer);
|
DB.SaveRecordArray<TListTimer>('listTimer', listTimer);
|
||||||
@@ -181,13 +336,13 @@ end;
|
|||||||
|
|
||||||
procedure TfrAutoActions.initTimers;
|
procedure TfrAutoActions.initTimers;
|
||||||
var
|
var
|
||||||
i: Integer;
|
I: Integer;
|
||||||
TimerThread: TMyTimerThread;
|
TimerThread: TMyTimerThread;
|
||||||
begin
|
begin
|
||||||
for i := 0 to High(listTimer) do
|
for I := 0 to High(listTimer) do
|
||||||
begin
|
begin
|
||||||
TimerThread := TMyTimerThread.Create(listTimer[i].interval,
|
TimerThread := TMyTimerThread.Create(listTimer[I].interval,
|
||||||
listTimer[i].mess, listTimer[i].o = 1);
|
listTimer[I].mess, listTimer[I].o = 1);
|
||||||
TimerThread.OnTimerExec := OnMyTimerExec;
|
TimerThread.OnTimerExec := OnMyTimerExec;
|
||||||
FTimerList.Add(TimerThread);
|
FTimerList.Add(TimerThread);
|
||||||
end;
|
end;
|
||||||
@@ -202,6 +357,29 @@ begin
|
|||||||
ttw_IRS.sendMessage(txt); }
|
ttw_IRS.sendMessage(txt); }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.sgBanWordsCellClick(const Column: TColumn;
|
||||||
|
const Row: Integer);
|
||||||
|
begin
|
||||||
|
edtBanWords.text := sgBanWords.Cells[0, Row];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.sgCounterCellClick(const Column: TColumn;
|
||||||
|
const Row: Integer);
|
||||||
|
begin
|
||||||
|
edtCounterName.text := sgCounter.Cells[0, Row];
|
||||||
|
edtCounterTrigger.text := sgCounter.Cells[1, Row];
|
||||||
|
edtCounterCount.text := sgCounter.Cells[2, Row];
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrAutoActions.sgTimersCellClick(const Column: TColumn;
|
||||||
|
const Row: Integer);
|
||||||
|
begin
|
||||||
|
edtMessage.text := sgTimers.Cells[1, Row];
|
||||||
|
edtInterval.text := sgTimers.Cells[2, Row];
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrAutoActions.sgTimersEditingDone(Sender: TObject;
|
procedure TfrAutoActions.sgTimersEditingDone(Sender: TObject;
|
||||||
const ACol, ARow: Integer);
|
const ACol, ARow: Integer);
|
||||||
var
|
var
|
||||||
@@ -230,23 +408,50 @@ end;
|
|||||||
|
|
||||||
procedure TfrAutoActions.UpdateGridFromArray;
|
procedure TfrAutoActions.UpdateGridFromArray;
|
||||||
var
|
var
|
||||||
i: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
sgTimers.BeginUpdate;
|
sgTimers.BeginUpdate;
|
||||||
try
|
try
|
||||||
sgTimers.RowCount := 0; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
|
sgTimers.RowCount := 0; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
|
||||||
|
|
||||||
for i := 0 to High(listTimer) do
|
for I := 0 to High(listTimer) do
|
||||||
begin
|
begin
|
||||||
sgTimers.RowCount := i + 1;
|
sgTimers.RowCount := I + 1;
|
||||||
sgTimers.Cells[0, i] := ifthen(listTimer[i].Enable = 1, 'True', 'False');
|
sgTimers.Cells[0, I] := ifthen(listTimer[I].Enable = 1, 'True', 'False');
|
||||||
sgTimers.Cells[1, i] := listTimer[i].mess;
|
sgTimers.Cells[1, I] := listTimer[I].mess;
|
||||||
sgTimers.Cells[2, i] := IntToStr(listTimer[i].interval);
|
sgTimers.Cells[2, I] := inttostr(listTimer[I].interval);
|
||||||
sgTimers.Cells[3, i] := ifthen(listTimer[i].o = 1, 'True', 'False');
|
sgTimers.Cells[3, I] := ifthen(listTimer[I].o = 1, 'True', 'False');
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
sgTimers.EndUpdate;
|
sgTimers.EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
sgBanWords.BeginUpdate;
|
||||||
|
try
|
||||||
|
sgBanWords.RowCount := 0; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
|
||||||
|
|
||||||
|
for I := 0 to High(listBanWords) do
|
||||||
|
begin
|
||||||
|
sgBanWords.RowCount := I + 1;
|
||||||
|
sgBanWords.Cells[0, I] := listBanWords[I].regexp;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
sgBanWords.EndUpdate;
|
||||||
|
end;
|
||||||
|
sgCounter.BeginUpdate;
|
||||||
|
try
|
||||||
|
sgCounter.RowCount := 0; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
|
||||||
|
|
||||||
|
for I := 0 to High(listCounters) do
|
||||||
|
begin
|
||||||
|
sgCounter.RowCount := I + 1;
|
||||||
|
sgCounter.Cells[0, I] := listCounters[I].counterName;
|
||||||
|
sgCounter.Cells[1, I] := listCounters[I].trigger;
|
||||||
|
sgCounter.Cells[2, I] := inttostr(listCounters[I].count);
|
||||||
|
sgCounter.Cells[3, I] := ifthen(listCounters[I].auto = 1, '1', '0');
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
sgCounter.EndUpdate;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
+14
-53
@@ -283,10 +283,10 @@ object TTW_Bot: TTTW_Bot
|
|||||||
Viewport.Height = 116.000000000000000000
|
Viewport.Height = 116.000000000000000000
|
||||||
end
|
end
|
||||||
inherited btnRandomAdd: TButton
|
inherited btnRandomAdd: TButton
|
||||||
TabOrder = 33
|
TabOrder = 32
|
||||||
end
|
end
|
||||||
inherited btnRandomDel: TButton
|
inherited btnRmGroup: TButton
|
||||||
TabOrder = 34
|
TabOrder = 33
|
||||||
end
|
end
|
||||||
inherited Label4: TLabel
|
inherited Label4: TLabel
|
||||||
TabOrder = 35
|
TabOrder = 35
|
||||||
@@ -450,8 +450,8 @@ object TTW_Bot: TTTW_Bot
|
|||||||
inherited sgWebChats: TStringGrid
|
inherited sgWebChats: TStringGrid
|
||||||
Size.Width = 970.000000000000000000
|
Size.Width = 970.000000000000000000
|
||||||
Size.Height = 282.000000000000000000
|
Size.Height = 282.000000000000000000
|
||||||
Viewport.Width = 966.000000000000000000
|
Viewport.Width = 970.000000000000000000
|
||||||
Viewport.Height = 257.000000000000000000
|
Viewport.Height = 282.000000000000000000
|
||||||
inherited StringColumn2: TStringColumn
|
inherited StringColumn2: TStringColumn
|
||||||
Size.Width = 200.000000000000000000
|
Size.Width = 200.000000000000000000
|
||||||
end
|
end
|
||||||
@@ -472,7 +472,7 @@ object TTW_Bot: TTTW_Bot
|
|||||||
OnClick = frOBS1btnDeleteeChatClick
|
OnClick = frOBS1btnDeleteeChatClick
|
||||||
end
|
end
|
||||||
inherited Label1: TLabel
|
inherited Label1: TLabel
|
||||||
TabOrder = 9
|
TabOrder = 10
|
||||||
end
|
end
|
||||||
inherited btnCreateOBSNotify: TButton
|
inherited btnCreateOBSNotify: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
@@ -601,36 +601,25 @@ object TTW_Bot: TTTW_Bot
|
|||||||
Size.Height = 718.000000000000000000
|
Size.Height = 718.000000000000000000
|
||||||
Size.PlatformDefault = False
|
Size.PlatformDefault = False
|
||||||
inherited GroupBox20: TGroupBox
|
inherited GroupBox20: TGroupBox
|
||||||
inherited edtMessage: TEdit
|
|
||||||
TabOrder = 38
|
|
||||||
end
|
|
||||||
inherited edtInterval: TEdit
|
|
||||||
TabOrder = 39
|
|
||||||
end
|
|
||||||
inherited btnAddMessage: TButton
|
inherited btnAddMessage: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 0
|
ImageIndex = 0
|
||||||
TabOrder = 40
|
|
||||||
end
|
end
|
||||||
inherited btnRmMessage: TButton
|
inherited btnRmMessage: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 4
|
ImageIndex = 4
|
||||||
TabOrder = 41
|
|
||||||
end
|
end
|
||||||
inherited btnEditMessage: TButton
|
inherited btnEditMessage: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 3
|
ImageIndex = 3
|
||||||
TabOrder = 42
|
|
||||||
end
|
end
|
||||||
inherited btnNotifyTest: TButton
|
inherited btnNotifyTest: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 25
|
ImageIndex = 25
|
||||||
TabOrder = 43
|
|
||||||
end
|
end
|
||||||
inherited sgTimers: TStringGrid
|
inherited sgTimers: TStringGrid
|
||||||
TabOrder = 44
|
Viewport.Width = 463.000000000000000000
|
||||||
Viewport.Width = 459.000000000000000000
|
Viewport.Height = 225.000000000000000000
|
||||||
Viewport.Height = 200.000000000000000000
|
|
||||||
inherited scTimerMessage: TStringColumn
|
inherited scTimerMessage: TStringColumn
|
||||||
Size.Width = 301.000000000000000000
|
Size.Width = 301.000000000000000000
|
||||||
end
|
end
|
||||||
@@ -640,28 +629,21 @@ object TTW_Bot: TTTW_Bot
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
inherited GroupBox23: TGroupBox
|
inherited GroupBox23: TGroupBox
|
||||||
inherited edtBanWords: TEdit
|
|
||||||
TabOrder = 38
|
|
||||||
end
|
|
||||||
inherited btnBanWordsAdd: TButton
|
inherited btnBanWordsAdd: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 0
|
ImageIndex = 0
|
||||||
TabOrder = 39
|
|
||||||
end
|
end
|
||||||
inherited btnBanWordsEdt: TButton
|
inherited btnBanWordsEdt: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 3
|
ImageIndex = 3
|
||||||
TabOrder = 40
|
|
||||||
end
|
end
|
||||||
inherited btnBanWordsDel: TButton
|
inherited btnBanWordsDel: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 4
|
ImageIndex = 4
|
||||||
TabOrder = 41
|
|
||||||
end
|
end
|
||||||
inherited sgBanWords: TStringGrid
|
inherited sgBanWords: TStringGrid
|
||||||
TabOrder = 42
|
Viewport.Width = 297.000000000000000000
|
||||||
Viewport.Width = 293.000000000000000000
|
Viewport.Height = 225.000000000000000000
|
||||||
Viewport.Height = 200.000000000000000000
|
|
||||||
inherited scRegEx: TStringColumn
|
inherited scRegEx: TStringColumn
|
||||||
Size.Width = 265.000000000000000000
|
Size.Width = 265.000000000000000000
|
||||||
end
|
end
|
||||||
@@ -672,47 +654,29 @@ object TTW_Bot: TTTW_Bot
|
|||||||
Position.X = 217.000000000000000000
|
Position.X = 217.000000000000000000
|
||||||
Size.Width = 88.000000000000000000
|
Size.Width = 88.000000000000000000
|
||||||
Size.PlatformDefault = False
|
Size.PlatformDefault = False
|
||||||
TabOrder = 43
|
|
||||||
end
|
|
||||||
inherited Label6: TLabel
|
|
||||||
TabOrder = 44
|
|
||||||
end
|
end
|
||||||
inherited edtBanWordsCheck: TEdit
|
inherited edtBanWordsCheck: TEdit
|
||||||
TabOrder = 45
|
|
||||||
Size.Width = 201.000000000000000000
|
Size.Width = 201.000000000000000000
|
||||||
end
|
end
|
||||||
inherited Label7: TLabel
|
|
||||||
TabOrder = 46
|
|
||||||
end
|
|
||||||
inherited lBanWordsCheck: TLabel
|
|
||||||
TabOrder = 47
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
inherited GroupBox17: TGroupBox
|
inherited GroupBox17: TGroupBox
|
||||||
inherited edtCounterName: TEdit
|
|
||||||
TabOrder = 42
|
|
||||||
end
|
|
||||||
inherited edtCounterTrigger: TEdit
|
|
||||||
TabOrder = 39
|
|
||||||
end
|
|
||||||
inherited edtCounterCount: TEdit
|
inherited edtCounterCount: TEdit
|
||||||
TabOrder = 38
|
TabOrder = 37
|
||||||
end
|
end
|
||||||
inherited btnCounterAdd: TButton
|
inherited btnCounterAdd: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 0
|
ImageIndex = 0
|
||||||
TabOrder = 40
|
|
||||||
end
|
end
|
||||||
inherited btnCounterDelete: TButton
|
inherited btnCounterDelete: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 4
|
ImageIndex = 4
|
||||||
|
TabOrder = 38
|
||||||
end
|
end
|
||||||
inherited btnCounterP: TButton
|
inherited btnCounterP: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 0
|
ImageIndex = 0
|
||||||
Position.X = 416.000000000000000000
|
Position.X = 416.000000000000000000
|
||||||
Size.Width = 22.000000000000000000
|
Size.Width = 22.000000000000000000
|
||||||
TabOrder = 43
|
|
||||||
Text = ''
|
Text = ''
|
||||||
end
|
end
|
||||||
inherited btnCounterM: TButton
|
inherited btnCounterM: TButton
|
||||||
@@ -720,18 +684,15 @@ object TTW_Bot: TTTW_Bot
|
|||||||
ImageIndex = 12
|
ImageIndex = 12
|
||||||
Position.X = 449.000000000000000000
|
Position.X = 449.000000000000000000
|
||||||
Size.Width = 22.000000000000000000
|
Size.Width = 22.000000000000000000
|
||||||
TabOrder = 44
|
|
||||||
Text = ''
|
Text = ''
|
||||||
end
|
end
|
||||||
inherited btnCounterEdit: TButton
|
inherited btnCounterEdit: TButton
|
||||||
Images = ImageList1
|
Images = ImageList1
|
||||||
ImageIndex = 3
|
ImageIndex = 3
|
||||||
TabOrder = 45
|
|
||||||
end
|
end
|
||||||
inherited sgCounter: TStringGrid
|
inherited sgCounter: TStringGrid
|
||||||
TabOrder = 46
|
Viewport.Width = 463.000000000000000000
|
||||||
Viewport.Width = 459.000000000000000000
|
Viewport.Height = 121.000000000000000000
|
||||||
Viewport.Height = 96.000000000000000000
|
|
||||||
inherited scCounterTrigger: TStringColumn
|
inherited scCounterTrigger: TStringColumn
|
||||||
Size.Width = 236.000000000000000000
|
Size.Width = 236.000000000000000000
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -423,6 +423,8 @@ var
|
|||||||
procedure LoadAutoActionsGrids;
|
procedure LoadAutoActionsGrids;
|
||||||
begin
|
begin
|
||||||
db.LoadRecordArray<TListTimer>('listTimer', frAutoActions1.listTimer);
|
db.LoadRecordArray<TListTimer>('listTimer', frAutoActions1.listTimer);
|
||||||
|
db.LoadRecordArray<TBanWord>('listBanWords', frAutoActions1.listBanWords);
|
||||||
|
db.LoadRecordArray<TCounter>('listCounters', frAutoActions1.listCounters);
|
||||||
frAutoActions1.initTimers;
|
frAutoActions1.initTimers;
|
||||||
frAutoActions1.UpdateGridFromArray;
|
frAutoActions1.UpdateGridFromArray;
|
||||||
end;
|
end;
|
||||||
|
|||||||
+15
-1
@@ -2,7 +2,21 @@ unit uRecords;
|
|||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
type TListTimer = record
|
type
|
||||||
|
TCounter = record
|
||||||
|
counterName: string;
|
||||||
|
trigger: string;
|
||||||
|
count: integer;
|
||||||
|
auto: integer;
|
||||||
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TBanWord = record
|
||||||
|
regexp: string;
|
||||||
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TListTimer = record
|
||||||
Enable: integer;
|
Enable: integer;
|
||||||
interval: integer;
|
interval: integer;
|
||||||
o: integer;
|
o: integer;
|
||||||
|
|||||||
+4049
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user