сохранение records почти доделал вкладку команды, осталось лишь групповые ответы добавить

This commit is contained in:
PC1\PTyTb
2025-08-07 18:14:03 +03:00
parent dacd2e6050
commit b62450b6ec
12 changed files with 1082 additions and 679 deletions
+3 -1
View File
@@ -22,7 +22,9 @@ uses
uAPIDA in 'uAPIDA.pas',
uShowText in 'uShowText.pas' {fShowText},
uWSDA in 'uWSDA.pas',
uQ in 'uQ.pas' {frmQ};
uQ in 'uQ.pas' {frmQ},
fSimpleGrid in 'fSimpleGrid.pas' {frSimpleGrid: TFrame},
fContruct in 'fContruct.pas' {frContruct: TFrame};
{$R *.res}
+10
View File
@@ -377,6 +377,16 @@
<Form>frmQ</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="fSimpleGrid.pas">
<Form>frSimpleGrid</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="fContruct.pas">
<Form>frContruct</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<None Include=".gitignore"/>
<BuildConfiguration Include="Base">
<Key>Base</Key>
+112 -351
View File
@@ -1,19 +1,20 @@
object frCommands: TfrCommands
Size.Width = 1052.000000000000000000
Size.Height = 719.000000000000000000
Size.Width = 973.000000000000000000
Size.Height = 705.000000000000000000
Size.PlatformDefault = False
object sgCommands: TStringGrid
CanFocus = True
ClipChildren = True
Position.X = 5.000000000000000000
Position.Y = 8.000000000000000000
Size.Width = 606.000000000000000000
Size.Width = 540.000000000000000000
Size.Height = 193.000000000000000000
Size.PlatformDefault = False
TabOrder = 5
RowCount = 0
Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
Viewport.Width = 602.000000000000000000
OnCellClick = sgCommandsCellClick
Viewport.Width = 536.000000000000000000
Viewport.Height = 168.000000000000000000
object scCommand: TStringColumn
Header = #1050#1086#1084#1072#1085#1076#1072
@@ -23,7 +24,7 @@ object frCommands: TfrCommands
object scResponse: TStringColumn
Header = #1054#1090#1074#1077#1090
HeaderSettings.TextSettings.WordWrap = False
Size.Width = 446.000000000000000000
Size.Width = 380.000000000000000000
end
end
object GroupBox1: TGroupBox
@@ -31,168 +32,60 @@ object frCommands: TfrCommands
Padding.Top = 20.000000000000000000
Padding.Right = 5.000000000000000000
Padding.Bottom = 5.000000000000000000
Position.X = 619.000000000000000000
Position.X = 544.000000000000000000
Position.Y = 8.000000000000000000
Size.Width = 395.000000000000000000
Size.Width = 410.000000000000000000
Size.Height = 442.000000000000000000
Size.PlatformDefault = False
Text = #1050#1086#1085#1089#1090#1088#1091#1082#1090#1086#1088' '#1086#1090#1074#1077#1090#1072
TabOrder = 0
object Label12: TLabel
Position.X = 9.000000000000000000
Position.Y = 24.000000000000000000
TextSettings.Trimming = None
Text = #1050#1086#1084#1072#1085#1076#1072
inline frContruct1: TfrContruct
Align = Client
Size.Width = 400.000000000000000000
Size.Height = 417.000000000000000000
Size.PlatformDefault = False
inherited mResponse: TMemo
Viewport.Width = 388.000000000000000000
Viewport.Height = 157.000000000000000000
end
inherited GroupBox7: TGroupBox
inherited btnAddUserName: TButton
TabOrder = 38
end
object edtCommand: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
inherited btnGetDateFollow: TButton
TabOrder = 39
Position.X = 9.000000000000000000
Position.Y = 49.000000000000000000
Size.Width = 208.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object mResponse: TMemo
Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
DataDetectorTypes = []
TextSettings.WordWrap = True
Position.X = 9.000000000000000000
Position.Y = 104.000000000000000000
Size.Width = 376.000000000000000000
Size.Height = 177.000000000000000000
Size.PlatformDefault = False
inherited btnGetAgeAccaunt: TButton
TabOrder = 40
Viewport.Width = 372.000000000000000000
Viewport.Height = 173.000000000000000000
end
object Label14: TLabel
Position.X = 9.000000000000000000
Position.Y = 79.000000000000000000
TextSettings.Trimming = None
Text = #1054#1090#1074#1077#1090
inherited btnCounterAddtoText: TButton
TabOrder = 41
end
object GroupBox7: TGroupBox
Padding.Left = 5.000000000000000000
Padding.Top = 20.000000000000000000
Padding.Right = 5.000000000000000000
Padding.Bottom = 5.000000000000000000
Position.X = 9.000000000000000000
Position.Y = 283.000000000000000000
Size.Width = 376.000000000000000000
Size.Height = 120.000000000000000000
Size.PlatformDefault = False
Text = #1042#1089#1090#1072#1074#1082#1080
TabOrder = 42
object btnAddUserName: TButton
Position.X = 9.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 94.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 38
Text = #1054#1073#1088#1072#1097#1077#1085#1080#1077
TextSettings.Trimming = None
end
object btnGetDateFollow: TButton
Position.X = 111.000000000000000000
Position.Y = 24.000000000000000000
TabOrder = 39
Text = 'Follow'
TextSettings.Trimming = None
end
object btnGetAgeAccaunt: TButton
Position.X = 199.000000000000000000
Position.Y = 24.000000000000000000
TabOrder = 40
Text = 'Age'
TextSettings.Trimming = None
end
object btnCounterAddtoText: TButton
Position.X = 9.000000000000000000
Position.Y = 54.000000000000000000
Size.Width = 94.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 41
Text = #1057#1095#1077#1090#1095#1080#1082
TextSettings.Trimming = None
end
object cbCounterName: TComboBox
Position.X = 111.000000000000000000
Position.Y = 54.000000000000000000
Size.Width = 168.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
inherited cbCounterName: TComboBox
TabOrder = 42
end
object btnGPT: TButton
Position.X = 287.000000000000000000
Position.Y = 24.000000000000000000
inherited btnGPT: TButton
TabOrder = 43
Text = #1053#1077#1081#1088#1086#1085#1082#1072
TextSettings.Trimming = None
end
object btnRandomUserName: TButton
Position.X = 9.000000000000000000
Position.Y = 84.000000000000000000
Size.Width = 168.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
inherited btnRandomUserName: TButton
TabOrder = 44
Text = #1056#1072#1085#1076#1086#1084#1085#1099#1081' '#1087#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1100
TextSettings.Trimming = None
end
object btnGetChannelStat: TButton
Position.X = 185.000000000000000000
Position.Y = 84.000000000000000000
Size.Width = 122.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
inherited btnGetChannelStat: TButton
TabOrder = 45
Text = #1057#1090#1072#1090#1080#1089#1090#1080#1082#1072' '#1082#1072#1085#1072#1083#1072
TextSettings.Trimming = None
end
object btnAIPic: TButton
Position.X = 287.000000000000000000
Position.Y = 54.000000000000000000
inherited btnAIPic: TButton
TabOrder = 46
Text = #1050#1072#1088#1090#1080#1085#1082#1072
TextSettings.Trimming = None
end
end
object btnAddCommand: TButton
Position.X = 9.000000000000000000
Position.Y = 411.000000000000000000
TabOrder = 43
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
inherited btnAddCommand: TButton
OnClick = frContruct1btnAddCommandClick
end
object btnEditCommand: TButton
Position.X = 97.000000000000000000
Position.Y = 411.000000000000000000
TabOrder = 44
Text = #1048#1079#1084#1077#1085#1080#1090#1100
TextSettings.Trimming = None
inherited btnEditCommand: TButton
OnClick = frContruct1btnEditCommandClick
end
object btnRmCommand: TButton
Position.X = 185.000000000000000000
Position.Y = 411.000000000000000000
TabOrder = 45
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
inherited btnRmCommand: TButton
OnClick = frContruct1btnRmCommandClick
end
object cbTextToSpeech: TCheckBox
Position.X = 168.000000000000000000
Position.Y = 16.000000000000000000
Size.Width = 217.000000000000000000
Size.Height = 19.000000000000000000
Size.PlatformDefault = False
TabOrder = 46
Text = #1054#1079#1074#1091#1095#1080#1074#1072#1090#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1103' '#1087#1086#1089#1083#1077' "!!!"'
Visible = False
end
end
object GroupBox9: TGroupBox
@@ -202,7 +95,7 @@ object frCommands: TfrCommands
Padding.Bottom = 5.000000000000000000
Position.X = 191.000000000000000000
Position.Y = 209.000000000000000000
Size.Width = 412.000000000000000000
Size.Width = 354.000000000000000000
Size.Height = 241.000000000000000000
Size.PlatformDefault = False
Text = #1056#1072#1085#1076#1086#1084#1085#1099#1077' '#1075#1088#1091#1087#1087#1099' '#1086#1090#1074#1077#1090#1086#1074
@@ -227,7 +120,7 @@ object frCommands: TfrCommands
object lbRandomRespons: TListBox
Position.X = 127.000000000000000000
Position.Y = 49.000000000000000000
Size.Width = 274.000000000000000000
Size.Width = 218.000000000000000000
Size.Height = 120.000000000000000000
Size.PlatformDefault = False
TabOrder = 13
@@ -238,7 +131,7 @@ object frCommands: TfrCommands
DefaultItemStyles.GroupFooterStyle = ''
Left = 335
Top = 315
Viewport.Width = 270.000000000000000000
Viewport.Width = 214.000000000000000000
Viewport.Height = 116.000000000000000000
end
object edtRandomGroup: TEdit
@@ -258,7 +151,7 @@ object frCommands: TfrCommands
TabOrder = 14
Position.X = 127.000000000000000000
Position.Y = 177.000000000000000000
Size.Width = 274.000000000000000000
Size.Width = 218.000000000000000000
Size.Height = 21.000000000000000000
Size.PlatformDefault = False
Left = 335
@@ -282,7 +175,7 @@ object frCommands: TfrCommands
TextSettings.Trimming = None
end
object btnRmGroup: TButton
Position.X = 263.000000000000000000
Position.X = 207.000000000000000000
Position.Y = 206.000000000000000000
Size.Width = 138.000000000000000000
Size.Height = 22.000000000000000000
@@ -306,7 +199,7 @@ object frCommands: TfrCommands
Position.Y = 24.000000000000000000
TextSettings.Trimming = None
Text = #1042#1072#1088#1080#1072#1085#1090#1099' '#1086#1090#1074#1077#1090#1072
TabOrder = 43
TabOrder = 44
end
end
object GroupBox8: TGroupBox
@@ -360,7 +253,7 @@ object frCommands: TfrCommands
object btnRandAdd: TButton
Position.X = 9.000000000000000000
Position.Y = 205.000000000000000000
TabOrder = 33
TabOrder = 32
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnRandAddClick
@@ -371,7 +264,7 @@ object frCommands: TfrCommands
Size.Width = 70.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 34
TabOrder = 33
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnRandDelClick
@@ -387,6 +280,7 @@ object frCommands: TfrCommands
TabOrder = 36
RowCount = 0
Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
OnCellDblClick = sgRandomIntCellDblClick
Viewport.Width = 153.000000000000000000
Viewport.Height = 119.000000000000000000
object scRIntName: TStringColumn
@@ -407,250 +301,117 @@ object frCommands: TfrCommands
end
end
object GroupBox11: TGroupBox
Padding.Left = 10.000000000000000000
Padding.Top = 20.000000000000000000
Padding.Right = 10.000000000000000000
Padding.Bottom = 10.000000000000000000
Position.X = 8.000000000000000000
Position.Y = 458.000000000000000000
Size.Width = 361.000000000000000000
Size.Width = 313.000000000000000000
Size.Height = 240.000000000000000000
Size.PlatformDefault = False
Text = #1047#1074#1091#1082
TabOrder = 4
object btnSoundAdd: TButton
Position.X = 8.000000000000000000
Position.Y = 211.000000000000000000
TabOrder = 38
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
end
object btnSoundDel: TButton
Position.X = 96.000000000000000000
Position.Y = 211.000000000000000000
Size.Width = 70.000000000000000000
Size.Height = 22.000000000000000000
inline frsgSounds: TfrSimpleGrid
Align = Client
Hint = '||'
Size.Width = 293.000000000000000000
Size.Height = 210.000000000000000000
Size.PlatformDefault = False
TabOrder = 39
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
end
object edtSoundName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 40
Position.X = 8.000000000000000000
Position.Y = 181.000000000000000000
Size.Width = 106.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object edtSoundFileName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 41
Position.X = 122.000000000000000000
Position.Y = 180.000000000000000000
Size.Width = 196.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object btnSoundOpen: TButton
Position.X = 326.000000000000000000
Position.Y = 181.000000000000000000
Size.Width = 27.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 42
Text = '...'
TextSettings.Trimming = None
end
object tbSoundVolume: TTrackBar
CanParentFocus = True
Orientation = Horizontal
Position.X = 174.000000000000000000
Position.Y = 211.000000000000000000
Size.Width = 91.000000000000000000
Size.Height = 19.000000000000000000
Size.PlatformDefault = False
TabOrder = 43
Value = 100.000000000000000000
end
object btnSoundTest: TButton
Position.X = 273.000000000000000000
Position.Y = 210.000000000000000000
inherited sg: TStringGrid
Size.Width = 293.000000000000000000
TabOrder = 44
Text = #1058#1077#1089#1090
TextSettings.Trimming = None
end
object sgSAFiles: TStringGrid
CanFocus = True
ClipChildren = True
Position.X = 8.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 345.000000000000000000
Size.Height = 149.000000000000000000
Size.PlatformDefault = False
TabOrder = 45
RowCount = 0
Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
Viewport.Width = 341.000000000000000000
OnCellDblClick = frsgSoundssgCellDblClick
Viewport.Width = 289.000000000000000000
Viewport.Height = 124.000000000000000000
object sgSAName: TStringColumn
Header = #1053#1072#1079#1074#1072#1085#1080#1077
HeaderSettings.TextSettings.WordWrap = False
inherited sgR2: TStringColumn
Size.Width = 170.000000000000000000
end
object sgSAFile: TStringColumn
Header = #1060#1072#1081#1083
HeaderSettings.TextSettings.WordWrap = False
Size.Width = 220.000000000000000000
end
inherited edtFileName: TEdit
Size.Width = 128.000000000000000000
end
inherited btnOpen: TButton
Position.X = 258.000000000000000000
end
end
end
object GroupBox24: TGroupBox
Position.X = 377.000000000000000000
Padding.Left = 10.000000000000000000
Padding.Top = 20.000000000000000000
Padding.Right = 10.000000000000000000
Padding.Bottom = 10.000000000000000000
Position.X = 329.000000000000000000
Position.Y = 458.000000000000000000
Size.Width = 332.000000000000000000
Size.Width = 313.000000000000000000
Size.Height = 241.000000000000000000
Size.PlatformDefault = False
Text = #1060#1072#1081#1083#1099
TabOrder = 2
object btnTextAdd: TButton
Position.X = 8.000000000000000000
Position.Y = 211.000000000000000000
TabOrder = 38
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
end
object btnTextDel: TButton
Position.X = 96.000000000000000000
Position.Y = 211.000000000000000000
Size.Width = 70.000000000000000000
Size.Height = 22.000000000000000000
inline frsgFiles: TfrSimpleGrid
Align = Client
Hint = '|('
Size.Width = 293.000000000000000000
Size.Height = 211.000000000000000000
Size.PlatformDefault = False
TabOrder = 39
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
end
object edtTextName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 40
Position.X = 8.000000000000000000
Position.Y = 181.000000000000000000
end
object edtTextFileName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 41
Position.X = 116.000000000000000000
Position.Y = 181.000000000000000000
Size.Width = 141.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object btnTextOpen: TButton
Position.X = 265.000000000000000000
Position.Y = 181.000000000000000000
Size.Width = 34.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 42
Text = '...'
TextSettings.Trimming = None
end
object sgTFiles: TStringGrid
CanFocus = True
ClipChildren = True
Position.X = 8.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 297.000000000000000000
Size.Height = 149.000000000000000000
Size.PlatformDefault = False
TabOrder = 45
RowCount = 0
Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
Viewport.Width = 293.000000000000000000
inherited sg: TStringGrid
Size.Width = 293.000000000000000000
TabOrder = 44
OnCellDblClick = frsgFilessgCellDblClick
Viewport.Width = 289.000000000000000000
Viewport.Height = 124.000000000000000000
object scTFileName: TStringColumn
Header = #1053#1072#1079#1074#1072#1085#1080#1077
HeaderSettings.TextSettings.WordWrap = False
end
object scTFileFile: TStringColumn
Header = #1060#1072#1081#1083
HeaderSettings.TextSettings.WordWrap = False
inherited sgR2: TStringColumn
Size.Width = 170.000000000000000000
end
end
inherited edtFileName: TEdit
Size.Width = 128.000000000000000000
end
inherited btnOpen: TButton
Position.X = 258.000000000000000000
end
end
end
object OpenDialog1: TOpenDialog
Left = 744
Top = 392
end
object GroupBox2: TGroupBox
Position.X = 717.000000000000000000
Padding.Left = 10.000000000000000000
Padding.Top = 20.000000000000000000
Padding.Right = 10.000000000000000000
Padding.Bottom = 10.000000000000000000
Position.X = 650.000000000000000000
Position.Y = 458.000000000000000000
Size.Width = 324.000000000000000000
Size.Width = 313.000000000000000000
Size.Height = 240.000000000000000000
Size.PlatformDefault = False
Text = #1053#1077#1081#1088#1086#1082#1086#1085#1089#1090#1088#1091#1082#1090#1086#1088
TabOrder = 8
object sgAIGen: TStringGrid
CanFocus = True
ClipChildren = True
Position.X = 8.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 305.000000000000000000
Size.Height = 149.000000000000000000
inline frsgNeiro: TfrSimpleGrid
Align = Client
Hint = '<|'
Size.Width = 293.000000000000000000
Size.Height = 210.000000000000000000
Size.PlatformDefault = False
TabOrder = 38
RowCount = 0
Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
Viewport.Width = 301.000000000000000000
inherited sg: TStringGrid
Size.Width = 293.000000000000000000
TabOrder = 44
OnCellDblClick = frsgNeirosgCellDblClick
Viewport.Width = 289.000000000000000000
Viewport.Height = 124.000000000000000000
object StringColumn1: TStringColumn
Header = #1053#1072#1079#1074#1072#1085#1080#1077
HeaderSettings.TextSettings.WordWrap = False
end
object StringColumn2: TStringColumn
inherited sgR2: TStringColumn
Header = #1047#1072#1087#1088#1086#1089
HeaderSettings.TextSettings.WordWrap = False
Size.Width = 180.000000000000000000
Size.Width = 170.000000000000000000
end
end
object edtAIGenName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 39
Position.X = 8.000000000000000000
Position.Y = 181.000000000000000000
Size.Width = 102.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
inherited edtFileName: TEdit
Size.Width = 163.000000000000000000
end
inherited btnOpen: TButton
Position.X = 258.000000000000000000
Visible = False
end
object edtAIGenRequest: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 40
Position.X = 118.000000000000000000
Position.Y = 181.000000000000000000
Size.Width = 195.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object btnAIGenAdd: TButton
Position.X = 8.000000000000000000
Position.Y = 211.000000000000000000
TabOrder = 41
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
end
object btnAIGenDel: TButton
Position.X = 96.000000000000000000
Position.Y = 211.000000000000000000
TabOrder = 42
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
end
object btnAIGetTextUser: TButton
Position.X = 184.000000000000000000
Position.Y = 211.000000000000000000
Size.Width = 129.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 43
Text = #1058#1077#1082#1089#1090' '#1087#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1103
TextSettings.Trimming = None
end
end
end
+162 -58
View File
@@ -3,10 +3,12 @@ unit fCommands;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
System.Rtti, FMX.Grid.Style, FMX.Memo.Types, FMX.Grid, FMX.Layouts, uRecords,
FMX.ListBox, FMX.Memo, FMX.Edit, FMX.Controls.Presentation, FMX.ScrollBox;
FMX.ListBox, FMX.Memo, FMX.Edit, FMX.Controls.Presentation, FMX.ScrollBox,
fSimpleGrid, fContruct;
type
TfrCommands = class(TFrame)
@@ -14,24 +16,6 @@ type
scCommand: TStringColumn;
scResponse: TStringColumn;
GroupBox1: TGroupBox;
Label12: TLabel;
edtCommand: TEdit;
mResponse: TMemo;
Label14: TLabel;
GroupBox7: TGroupBox;
btnAddUserName: TButton;
btnGetDateFollow: TButton;
btnGetAgeAccaunt: TButton;
btnCounterAddtoText: TButton;
cbCounterName: TComboBox;
btnGPT: TButton;
btnRandomUserName: TButton;
btnGetChannelStat: TButton;
btnAIPic: TButton;
btnAddCommand: TButton;
btnEditCommand: TButton;
btnRmCommand: TButton;
cbTextToSpeech: TCheckBox;
GroupBox9: TGroupBox;
lbRandomGroup: TListBox;
lbRandomRespons: TListBox;
@@ -53,43 +37,40 @@ type
IntegerColumn1: TIntegerColumn;
scRIntTo: TIntegerColumn;
GroupBox11: TGroupBox;
btnSoundAdd: TButton;
btnSoundDel: TButton;
edtSoundName: TEdit;
edtSoundFileName: TEdit;
btnSoundOpen: TButton;
tbSoundVolume: TTrackBar;
btnSoundTest: TButton;
sgSAFiles: TStringGrid;
sgSAName: TStringColumn;
sgSAFile: TStringColumn;
GroupBox24: TGroupBox;
btnTextAdd: TButton;
btnTextDel: TButton;
edtTextName: TEdit;
edtTextFileName: TEdit;
btnTextOpen: TButton;
sgTFiles: TStringGrid;
scTFileName: TStringColumn;
scTFileFile: TStringColumn;
OpenDialog1: TOpenDialog;
GroupBox2: TGroupBox;
sgAIGen: TStringGrid;
StringColumn1: TStringColumn;
StringColumn2: TStringColumn;
edtAIGenName: TEdit;
edtAIGenRequest: TEdit;
btnAIGenAdd: TButton;
btnAIGenDel: TButton;
btnAIGetTextUser: TButton;
frsgSounds: TfrSimpleGrid;
frsgFiles: TfrSimpleGrid;
frsgNeiro: TfrSimpleGrid;
frContruct1: TfrContruct;
procedure btnRandAddClick(Sender: TObject);
procedure btnRandDelClick(Sender: TObject);
procedure frsgSoundsbtnSoundDelClick(Sender: TObject);
procedure frsgSoundssgCellDblClick(const Column: TColumn;
const Row: Integer);
procedure frsgFilessgCellDblClick(const Column: TColumn;
const Row: Integer);
procedure frsgNeirosgCellDblClick(const Column: TColumn;
const Row: Integer);
procedure frContruct1btnAddCommandClick(Sender: TObject);
procedure frContruct1btnEditCommandClick(Sender: TObject);
procedure frContruct1btnRmCommandClick(Sender: TObject);
procedure sgCommandsCellClick(const Column: TColumn; const Row: Integer);
procedure sgRandomIntCellDblClick(const Column: TColumn;
const Row: Integer);
private
{ Private declarations }
procedure UpdateGridFromArray;
public
{ Public declarations }
RandomCounters: TArray<TRandomCounters>;
listSounds: TArray<TListCommands>;
listFiles: TArray<TListCommands>;
listNeiro: TArray<TListCommands>;
listCommands: TArray<TListCommands>;
procedure UpdateGridFromArray;
end;
implementation
@@ -103,16 +84,126 @@ var
i, RowIndex: Integer;
begin
RowIndex := sgRandomInt.Row;
if (RowIndex < 0) or (RowIndex > High(RandomCounters)) then Exit;
if (RowIndex < 0) or (RowIndex > High(RandomCounters)) then
Exit;
// Ñäâèãàåì ýëåìåíòû ìàññèâà
for i := RowIndex to High(RandomCounters) - 1 do
RandomCounters[i] := RandomCounters[i + 1];
SetLength(RandomCounters, Length(RandomCounters) - 1);
UpdateGridFromArray;
DB.SaveRecordArray<TRandomCounters>('RandomCounters', RandomCounters);
end;
procedure TfrCommands.frContruct1btnAddCommandClick(Sender: TObject);
var
sCommand: string;
NewRec: TListCommands;
begin
sCommand := frContruct1.edtCommand.text;
if (sCommand = '') or (sCommand = '!') or (frContruct1.mResponse.text = '') then
exit;
if (sCommand <> '') and (sCommand[1] = '!') then
begin
Delete(sCommand, 1, 1);
end;
NewRec.R1 := sCommand;
NewRec.R2 := frContruct1.mResponse.text;
SetLength(listCommands, Length(listCommands) + 1);
listCommands[High(listCommands)] := NewRec;
UpdateGridFromArray;
DB.SaveRecordArray<TListCommands>('listCommands', listCommands);
end;
procedure TfrCommands.frContruct1btnEditCommandClick(Sender: TObject);
var RowIndex: integer; sCommand:string;
begin
RowIndex := sgCommands.Row;
sCommand := frContruct1.edtCommand.text;
if (sCommand = '') or (sCommand = '!') or (frContruct1.mResponse.text = '') then
exit;
if (sCommand <> '') and (sCommand[1] = '!') then
begin
Delete(sCommand, 1, 1);
end;
if (RowIndex < 0) or (RowIndex > High(listCommands)) then
exit;
listCommands[RowIndex].R1 := sCommand;
listCommands[RowIndex].R2 := frContruct1.mResponse.text;
UpdateGridFromArray;
DB.SaveGridToTable('sgRandomInt', sgRandomInt);
DB.SaveRecordArray<TListCommands>('listCommands', listCommands);
end;
procedure TfrCommands.frContruct1btnRmCommandClick(Sender: TObject);
var
i, RowIndex: Integer;
begin
RowIndex := sgCommands.Row;
if (RowIndex < 0) or (RowIndex > High(listCommands)) then
exit;
for i := RowIndex to High(listCommands) - 1 do
listCommands[i] := listCommands[i + 1];
SetLength(listCommands, Length(listCommands) - 1);
UpdateGridFromArray;
DB.SaveRecordArray<TListCommands>('listCommands', listCommands);
end;
procedure TfrCommands.frsgFilessgCellDblClick(const Column: TColumn;
const Row: Integer);
begin
frContruct1.mResponse.Lines.text := frContruct1.mResponse.Lines.text + ' ' +
frsgFiles.Hint + frsgFiles.sg.Cells[0, Row] + frsgFiles.Hint;
end;
procedure TfrCommands.frsgNeirosgCellDblClick(const Column: TColumn;
const Row: Integer);
begin
frContruct1.mResponse.Lines.text := frContruct1.mResponse.Lines.text + ' ' +
frsgNeiro.Hint + frsgNeiro.sg.Cells[0, Row] + frsgNeiro.Hint;
end;
procedure TfrCommands.frsgSoundsbtnSoundDelClick(Sender: TObject);
var
i, RowIndex: Integer;
begin
RowIndex := frsgSounds.sg.Row;
if (RowIndex < 0) or (RowIndex > High(listSounds)) then
Exit;
// Ñäâèãàåì ýëåìåíòû ìàññèâà
for i := RowIndex to High(listSounds) - 1 do
listSounds[i] := listSounds[i + 1];
SetLength(listSounds, Length(listSounds) - 1);
UpdateGridFromArray;
DB.SaveRecordArray<TListCommands>('listSounds', listSounds);
end;
procedure TfrCommands.frsgSoundssgCellDblClick(const Column: TColumn;
const Row: Integer);
begin
frContruct1.mResponse.Lines.text := frContruct1.mResponse.Lines.text + ' ' +
frsgSounds.Hint + frsgSounds.sg.Cells[0, Row] + frsgSounds.Hint;
end;
procedure TfrCommands.sgCommandsCellClick(const Column: TColumn;
const Row: Integer);
begin
frContruct1.edtCommand.text := sgCommands.Cells[0, Row];
frContruct1.mResponse.text := sgCommands.Cells[1, Row];
end;
procedure TfrCommands.sgRandomIntCellDblClick(const Column: TColumn;
const Row: Integer);
begin
frContruct1.mResponse.Lines.text := frContruct1.mResponse.Lines.text + ' [[' + sgRandomInt.Cells
[0, Row] + ']]';
end;
procedure TfrCommands.UpdateGridFromArray;
@@ -121,27 +212,40 @@ var
begin
sgRandomInt.BeginUpdate;
try
sgRandomInt.RowCount := 1; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
sgRandomInt.RowCount := 0; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
for i := 0 to High(RandomCounters) do
begin
sgRandomInt.RowCount := i +1;
sgRandomInt.Cells[0, i] := RandomCounters[i].Name;
sgRandomInt.Cells[0, i] := RandomCounters[i].rndName;
sgRandomInt.Cells[1, i] := IntToStr(RandomCounters[i].Ot);
sgRandomInt.Cells[2, i] := IntToStr(RandomCounters[i].ToValue);
end;
finally
sgRandomInt.EndUpdate;
end;
sgCommands.BeginUpdate;
try
sgCommands.RowCount := 0; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
for i := 0 to High(listCommands) do
begin
sgCommands.RowCount := i+1 ;
sgCommands.Cells[0, i] := listCommands[i].R1;
sgCommands.Cells[1, i] := listCommands[i].R2; //9067254178
end;
finally
sgCommands.EndUpdate;
end;
end;
procedure TfrCommands.btnRandAddClick(Sender: TObject);
var
NewRec: TRandomCounters;
begin
NewRec.Name := edtRandomName.Text;
NewRec.Ot := StrToIntDef(edtOt.Text, 0);
NewRec.ToValue := StrToIntDef(edtTo.Text, 100);
NewRec.rndName := edtRandomName.text;
NewRec.Ot := StrToIntDef(edtOt.text, 0);
NewRec.ToValue := StrToIntDef(edtTo.text, 100);
SetLength(RandomCounters, Length(RandomCounters) + 1);
RandomCounters[High(RandomCounters)] := NewRec;
@@ -149,9 +253,9 @@ begin
UpdateGridFromArray;
// DB.SaveGridToTable('sgRandomInt', sgRandomInt);
DB.SaveRecordArray<TRandomCounters>('RandomCounters', RandomCounters);
edtRandomName.Text := '';
edtOt.Text := '0';
edtTo.Text := '100';
edtRandomName.text := '';
edtOt.text := '0';
edtTo.text := '100';
end;
end.
+167
View File
@@ -0,0 +1,167 @@
object frContruct: TfrContruct
Size.Width = 406.000000000000000000
Size.Height = 417.000000000000000000
Size.PlatformDefault = False
object Label12: TLabel
Position.X = 8.000000000000000000
Position.Y = 8.000000000000000000
TextSettings.Trimming = None
Text = #1050#1086#1084#1072#1085#1076#1072
TabOrder = 38
end
object edtCommand: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 39
Position.X = 8.000000000000000000
Position.Y = 33.000000000000000000
Size.Width = 208.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object mResponse: TMemo
Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
DataDetectorTypes = []
TextSettings.WordWrap = True
Position.X = 8.000000000000000000
Position.Y = 88.000000000000000000
Size.Width = 392.000000000000000000
Size.Height = 161.000000000000000000
Size.PlatformDefault = False
TabOrder = 40
Viewport.Width = 388.000000000000000000
Viewport.Height = 157.000000000000000000
end
object Label14: TLabel
Position.X = 8.000000000000000000
Position.Y = 63.000000000000000000
TextSettings.Trimming = None
Text = #1054#1090#1074#1077#1090
TabOrder = 41
end
object GroupBox7: TGroupBox
Padding.Left = 5.000000000000000000
Padding.Top = 20.000000000000000000
Padding.Right = 5.000000000000000000
Padding.Bottom = 5.000000000000000000
Position.X = 8.000000000000000000
Position.Y = 257.000000000000000000
Size.Width = 392.000000000000000000
Size.Height = 120.000000000000000000
Size.PlatformDefault = False
Text = #1042#1089#1090#1072#1074#1082#1080
TabOrder = 42
object btnAddUserName: TButton
Position.X = 9.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 94.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 38
Text = #1054#1073#1088#1072#1097#1077#1085#1080#1077
TextSettings.Trimming = None
OnClick = btnAddUserNameClick
end
object btnGetDateFollow: TButton
Position.X = 111.000000000000000000
Position.Y = 24.000000000000000000
TabOrder = 39
Text = 'Follow'
TextSettings.Trimming = None
OnClick = btnGetDateFollowClick
end
object btnGetAgeAccaunt: TButton
Position.X = 199.000000000000000000
Position.Y = 24.000000000000000000
TabOrder = 40
Text = 'Age'
TextSettings.Trimming = None
OnClick = btnGetAgeAccauntClick
end
object btnCounterAddtoText: TButton
Position.X = 9.000000000000000000
Position.Y = 54.000000000000000000
Size.Width = 94.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 41
Text = #1057#1095#1077#1090#1095#1080#1082
TextSettings.Trimming = None
end
object cbCounterName: TComboBox
Position.X = 111.000000000000000000
Position.Y = 54.000000000000000000
Size.Width = 168.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 42
end
object btnGPT: TButton
Position.X = 287.000000000000000000
Position.Y = 24.000000000000000000
TabOrder = 43
Text = #1053#1077#1081#1088#1086#1085#1082#1072
TextSettings.Trimming = None
OnClick = btnGPTClick
end
object btnRandomUserName: TButton
Position.X = 9.000000000000000000
Position.Y = 84.000000000000000000
Size.Width = 168.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 44
Text = #1056#1072#1085#1076#1086#1084#1085#1099#1081' '#1087#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1100
TextSettings.Trimming = None
OnClick = btnRandomUserNameClick
end
object btnGetChannelStat: TButton
Position.X = 185.000000000000000000
Position.Y = 84.000000000000000000
Size.Width = 122.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 45
Text = #1057#1090#1072#1090#1080#1089#1090#1080#1082#1072' '#1082#1072#1085#1072#1083#1072
TextSettings.Trimming = None
OnClick = btnGetChannelStatClick
end
object btnAIPic: TButton
Position.X = 287.000000000000000000
Position.Y = 54.000000000000000000
TabOrder = 46
Text = #1050#1072#1088#1090#1080#1085#1082#1072
TextSettings.Trimming = None
OnClick = btnAIPicClick
end
end
object btnAddCommand: TButton
Position.X = 8.000000000000000000
Position.Y = 385.000000000000000000
TabOrder = 43
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
end
object btnEditCommand: TButton
Position.X = 96.000000000000000000
Position.Y = 385.000000000000000000
TabOrder = 44
Text = #1048#1079#1084#1077#1085#1080#1090#1100
TextSettings.Trimming = None
end
object btnRmCommand: TButton
Position.X = 184.000000000000000000
Position.Y = 385.000000000000000000
TabOrder = 45
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
end
object cbTextToSpeech: TCheckBox
Position.X = 167.000000000000000000
Size.Width = 217.000000000000000000
Size.Height = 19.000000000000000000
Size.PlatformDefault = False
TabOrder = 46
Text = #1054#1079#1074#1091#1095#1080#1074#1072#1090#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1103' '#1087#1086#1089#1083#1077' "!!!"'
Visible = False
end
end
+83
View File
@@ -0,0 +1,83 @@
unit fContruct;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
FMX.Memo.Types, FMX.ListBox, FMX.ScrollBox, FMX.Memo, FMX.Edit,
FMX.Controls.Presentation;
type
TfrContruct = class(TFrame)
Label12: TLabel;
edtCommand: TEdit;
mResponse: TMemo;
Label14: TLabel;
GroupBox7: TGroupBox;
btnAddUserName: TButton;
btnGetDateFollow: TButton;
btnGetAgeAccaunt: TButton;
btnCounterAddtoText: TButton;
cbCounterName: TComboBox;
btnGPT: TButton;
btnRandomUserName: TButton;
btnGetChannelStat: TButton;
btnAIPic: TButton;
btnAddCommand: TButton;
btnEditCommand: TButton;
btnRmCommand: TButton;
cbTextToSpeech: TCheckBox;
procedure btnAddUserNameClick(Sender: TObject);
procedure btnGetDateFollowClick(Sender: TObject);
procedure btnGetAgeAccauntClick(Sender: TObject);
procedure btnGetChannelStatClick(Sender: TObject);
procedure btnGPTClick(Sender: TObject);
procedure btnAIPicClick(Sender: TObject);
procedure btnRandomUserNameClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.fmx}
procedure TfrContruct.btnAddUserNameClick(Sender: TObject);
begin
mResponse.Lines.text := mResponse.Lines.text + '[USERNAME]';
end;
procedure TfrContruct.btnAIPicClick(Sender: TObject);
begin
mResponse.Lines.text := mResponse.Lines.text + ' [Kandinsky]';
end;
procedure TfrContruct.btnGetAgeAccauntClick(Sender: TObject);
begin
mResponse.Lines.text := mResponse.Lines.text + ' [AGE]';
end;
procedure TfrContruct.btnGetChannelStatClick(Sender: TObject);
begin
mResponse.Lines.text := mResponse.Lines.text + ' [STAT]';
end;
procedure TfrContruct.btnGetDateFollowClick(Sender: TObject);
begin
mResponse.Lines.text := mResponse.Lines.text + ' [FOLLOW]';
end;
procedure TfrContruct.btnGPTClick(Sender: TObject);
begin
mResponse.Lines.text := mResponse.Lines.text + ' [AI]';
end;
procedure TfrContruct.btnRandomUserNameClick(Sender: TObject);
begin
mResponse.Lines.text := mResponse.Lines.text + ' [RANDOMUSER]';
end;
end.
+90
View File
@@ -0,0 +1,90 @@
object frSimpleGrid: TfrSimpleGrid
Size.Width = 339.000000000000000000
Size.Height = 223.000000000000000000
Size.PlatformDefault = False
object sg: TStringGrid
Align = Top
CanFocus = True
ClipChildren = True
Size.Width = 339.000000000000000000
Size.Height = 149.000000000000000000
Size.PlatformDefault = False
TabOrder = 45
RowCount = 0
Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
OnCellClick = sgCellClick
Viewport.Width = 335.000000000000000000
Viewport.Height = 124.000000000000000000
object sgR1: TStringColumn
Header = #1053#1072#1079#1074#1072#1085#1080#1077
HeaderSettings.TextSettings.WordWrap = False
end
object sgR2: TStringColumn
Header = #1060#1072#1081#1083
HeaderSettings.TextSettings.WordWrap = False
Size.Width = 220.000000000000000000
end
end
object edtName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 40
Position.X = 8.000000000000000000
Position.Y = 155.000000000000000000
Size.Width = 106.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object edtFileName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Anchors = [akLeft, akTop, akRight]
TabOrder = 41
Position.X = 122.000000000000000000
Position.Y = 155.000000000000000000
Size.Width = 174.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
end
object btnOpen: TButton
Anchors = [akTop, akRight]
Position.X = 304.000000000000000000
Position.Y = 157.000000000000000000
Size.Width = 27.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 42
Text = '...'
TextSettings.Trimming = None
OnClick = btnOpenClick
end
object btnAdd: TButton
Position.X = 8.000000000000000000
Position.Y = 185.000000000000000000
TabOrder = 38
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnAddClick
end
object btnDel: TButton
Position.X = 184.000000000000000000
Position.Y = 185.000000000000000000
Size.Width = 70.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 39
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnDelClick
end
object btnEdt: TButton
Position.X = 96.000000000000000000
Position.Y = 185.000000000000000000
TabOrder = 46
Text = #1048#1079#1084#1077#1085#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnEdtClick
end
object od: TOpenDialog
Left = 152
Top = 96
end
end
+143
View File
@@ -0,0 +1,143 @@
unit fSimpleGrid;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
System.Rtti, FMX.Grid.Style, FMX.Edit, FMX.Grid, FMX.Controls.Presentation,
FMX.ScrollBox, uRecords;
type
TfrSimpleGrid = class(TFrame)
sg: TStringGrid;
sgR2: TStringColumn;
sgR1: TStringColumn;
edtName: TEdit;
edtFileName: TEdit;
btnOpen: TButton;
btnAdd: TButton;
btnDel: TButton;
btnEdt: TButton;
od: TOpenDialog;
procedure btnAddClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure sgCellClick(const Column: TColumn; const Row: Integer);
procedure btnOpenClick(Sender: TObject);
procedure btnEdtClick(Sender: TObject);
private
{ Private declarations }
FMyRecord: TArray<TListCommands>;
FTableName: string;
procedure SetMyArray(const Value: TArray<TListCommands>);
procedure SetTableName(const Value: string);
public
{ Public declarations }
procedure UpdateGrid;
published
property ObjectRecord: TArray<TListCommands> read FMyRecord
write SetMyArray;
property TableName: string read FTableName write SetTableName;
end;
implementation
{$R *.fmx}
uses ugeneral;
{ TfrSimpleGrid }
procedure TfrSimpleGrid.btnAddClick(Sender: TObject);
var
NewRec: TListCommands;
begin
if (edtName.Text = '') or (edtFileName.Text = '') then
exit;
NewRec.R1 := edtName.Text;
NewRec.R2 := edtFileName.Text;
SetLength(FMyRecord, Length(FMyRecord) + 1);
FMyRecord[High(FMyRecord)] := NewRec;
DB.SaveRecordArray<TListCommands>(FTableName, FMyRecord);
edtName.Text := '';
edtFileName.Text := '';
UpdateGrid;
end;
procedure TfrSimpleGrid.btnDelClick(Sender: TObject);
var
i, RowIndex: Integer;
begin
RowIndex := sg.Row;
if (RowIndex < 0) or (RowIndex > High(FMyRecord)) then
exit;
for i := RowIndex to High(FMyRecord) - 1 do
FMyRecord[i] := FMyRecord[i + 1];
SetLength(FMyRecord, Length(FMyRecord) - 1);
DB.SaveRecordArray<TListCommands>(FTableName, FMyRecord);
UpdateGrid;
end;
procedure TfrSimpleGrid.btnEdtClick(Sender: TObject);
var RowIndex:integer;
begin
if (edtName.Text = '') or (edtFileName.Text = '') then
exit;
RowIndex := sg.Row;
if (RowIndex < 0) or (RowIndex > High(FMyRecord)) then
exit;
FMyRecord[RowIndex].R1 := edtName.Text;
FMyRecord[RowIndex].R2 := edtFileName.Text;
DB.SaveRecordArray<TListCommands>(FTableName, FMyRecord);
edtName.Text := '';
edtFileName.Text := '';
UpdateGrid;
end;
procedure TfrSimpleGrid.btnOpenClick(Sender: TObject);
var
i, RowIndex: Integer;
begin
if od.Execute then
edtFileName.Text := od.FileName;
end;
procedure TfrSimpleGrid.SetMyArray(const Value: TArray<TListCommands>);
begin
FMyRecord := Value;
end;
procedure TfrSimpleGrid.SetTableName(const Value: string);
begin
FTableName := Value;
end;
procedure TfrSimpleGrid.sgCellClick(const Column: TColumn; const Row: Integer);
begin
edtName.Text := sg.Cells[0, Row];
edtFileName.Text := sg.Cells[1, Row];
end;
procedure TfrSimpleGrid.UpdateGrid;
var
i: Integer;
begin
sg.BeginUpdate;
try
sg.RowCount := 1; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
for i := 0 to High(FMyRecord) do
begin
sg.RowCount := i + 1;
sg.Cells[0, i] := FMyRecord[i].R1;
sg.Cells[1, i] := FMyRecord[i].R2;
end;
finally
sg.EndUpdate;
end;
end;
end.
+69 -9
View File
@@ -484,6 +484,7 @@ begin
end;
end;
procedure TSettingsDatabase.SaveRecordArray<T>(const TableName: string; const Items: array of T);
var
Context: TRttiContext;
@@ -493,12 +494,13 @@ var
Rec: T;
Field: TRttiField;
FieldNames, Placeholders: string;
i: Integer;
i, j: Integer;
Value: TValue;
Param: TFDParam;
begin
if Length(Items) = 0 then Exit;
EnsureTableForRecord(TableName, TypeInfo(T));
FConnection.ExecSQL(Format('DELETE FROM %s', [TableName]));
Context := TRttiContext.Create;
try
@@ -509,28 +511,85 @@ begin
try
Query.Connection := FConnection;
// Ïîñòðîåíèå ñïèñêà ïîëåé è ïëåéñõîëäåðîâ
FieldNames := '';
Placeholders := '';
for i := 0 to High(Fields) do
for j := 0 to High(Fields) do
begin
if i > 0 then
if j > 0 then
begin
FieldNames := FieldNames + ', ';
Placeholders := Placeholders + ', ';
end;
FieldNames := FieldNames + Fields[i].Name;
Placeholders := Placeholders + ':p_' + Fields[i].Name;
FieldNames := FieldNames + Fields[j].Name;
Placeholders := Placeholders + ':' + Fields[j].Name;
end;
Query.SQL.Text := 'INSERT INTO ' + TableName + ' (' + FieldNames + ') VALUES (' + Placeholders + ')';
// Ïîäãîòàâëèâàåì çàïðîñ (ñîçäàåò ïàðàìåòðû)
//Query.Prepare;
// Óñòàíàâëèâàåì ðàçìåð ìàññèâà ïàðàìåòðîâ
Query.Params.ArraySize := Length(Items);
// Íà÷àëî òðàíçàêöèè
FConnection.StartTransaction;
try
// Î÷èñòêà òàáëèöû ïåðåä âñòàâêîé íîâûõ äàííûõ
FConnection.ExecSQL('DELETE FROM ' + TableName);
i := 0;
for Rec in Items do
begin
Query.Params.Clear;
for Field in Fields do
Query.ParamByName('p_'+Field.Name).Value := Field.GetValue(@Rec).AsVariant;
Query.ExecSQL;
begin
Value := Field.GetValue(@Rec);
// Íàõîäèì ïàðàìåòð
Param := Query.FindParam(Field.Name);
if not Assigned(Param) then
raise Exception.CreateFmt('Parameter "%s" not found in query', [Field.Name]);
// Îáðàáîòêà NULL-çíà÷åíèé
if Value.IsEmpty then
begin
Param.Clear(i);
end
else
begin
// Îáðàáîòêà ïî òèïó
case Field.FieldType.TypeKind of
tkInteger, tkInt64:
Param.AsIntegers[i] := Value.AsInteger;
tkFloat:
if (Field.FieldType = TypeInfo(TDateTime)) or
(Field.FieldType = TypeInfo(TDate)) or
(Field.FieldType = TypeInfo(TTime)) then
Param.AsDateTimes[i] := Value.AsExtended
else
Param.AsFloats[i] := Value.AsExtended;
tkEnumeration:
if Field.FieldType = TypeInfo(Boolean) then
Param.AsBooleans[i] := Value.AsBoolean
else
Param.AsIntegers[i] := Value.AsOrdinal;
tkUString, tkString, tkWString, tkLString:
Param.AsStrings[i] := Value.AsString;
else
Param.AsStrings[i] := Value.ToString;
end;
end;
end;
Inc(i);
end;
// Ïàêåòíîå âûïîëíåíèå
Query.Execute(Length(Items), 0);
FConnection.Commit;
except
FConnection.Rollback;
raise;
end;
finally
Query.Free;
@@ -540,6 +599,7 @@ begin
end;
end;
procedure TSettingsDatabase.LoadRecordArray<T>(const TableName: string; var Items: TArray<T>);
var
Context: TRttiContext;
+128 -168
View File
@@ -3,7 +3,7 @@ object TTW_Bot: TTTW_Bot
Top = 0
Caption = 'Form1'
ClientHeight = 886
ClientWidth = 1042
ClientWidth = 970
Position = Designed
FormFactor.Width = 320
FormFactor.Height = 480
@@ -14,30 +14,30 @@ object TTW_Bot: TTTW_Bot
object V: TTabControl
Align = Client
Images = ImageList1
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 744.000000000000000000
Size.PlatformDefault = False
TabIndex = 2
TabOrder = 0
TabPosition = PlatformDefault
Sizes = (
1042s
970s
718s
1042s
970s
718s
1042s
970s
718s
1042s
970s
718s
1042s
970s
718s
1042s
970s
718s
1042s
970s
718s
1042s
970s
718s
1042s
970s
718s)
object TabItem1: TTabItem
CustomIcon = <
@@ -56,7 +56,7 @@ object TTW_Bot: TTTW_Bot
ExplicitSize.cy = 26.000000000000000000
inline frSettings1: TfrSettings
Align = Client
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 718.000000000000000000
Size.PlatformDefault = False
inherited GroupBox3: TGroupBox
@@ -71,51 +71,50 @@ object TTW_Bot: TTTW_Bot
inherited btnOpenStream: TButton
Images = ImageList1
ImageIndex = 17
TabOrder = 33
TabOrder = 32
end
inherited btnGetTokenStreamer: TButton
Images = ImageList1
ImageIndex = 10
TabOrder = 34
TabOrder = 33
end
inherited edtBotTokenStreamer: TEdit
TabOrder = 35
inherited Label53: TLabel
TabOrder = 36
end
end
inherited GroupBox22: TGroupBox
inherited btnDAGetCode: TButton
Images = ImageList1
ImageIndex = 10
TabOrder = 43
end
inherited Label63: TLabel
TabOrder = 35
TabOrder = 34
end
inherited edtDAClientID: TEdit
TabOrder = 38
end
inherited Label64: TLabel
TabOrder = 36
end
inherited edtDAClientSecret: TEdit
TabOrder = 37
end
inherited Label64: TLabel
TabOrder = 35
end
inherited edtDAClientSecret: TEdit
TabOrder = 36
end
inherited Label65: TLabel
TabOrder = 39
TabOrder = 38
end
inherited edtDARedirectURL: TEdit
TabOrder = 40
TabOrder = 39
end
inherited edtDACode: TEdit
TabOrder = 41
TabOrder = 40
end
inherited Label66: TLabel
TabOrder = 42
TabOrder = 41
end
inherited btnDAStart: TButton
Images = ImageList1
ImageIndex = 18
TabOrder = 44
TabOrder = 43
OnClick = frSettings1btnDAStartClick
end
inherited btnGetDADef: TButton
@@ -168,7 +167,7 @@ object TTW_Bot: TTTW_Bot
ExplicitSize.cy = 26.000000000000000000
inline frAI1: TfrAI
Align = Client
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 718.000000000000000000
Size.PlatformDefault = False
inherited btnGetAIDef: TButton
@@ -201,12 +200,12 @@ object TTW_Bot: TTTW_Bot
ExplicitSize.cy = 26.000000000000000000
inline frCommands1: TfrCommands
Align = Client
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 718.000000000000000000
Size.PlatformDefault = False
inherited sgCommands: TStringGrid
Viewport.Width = 606.000000000000000000
Viewport.Height = 193.000000000000000000
Viewport.Width = 536.000000000000000000
Viewport.Height = 168.000000000000000000
inherited scCommand: TStringColumn
Size.Width = 134.000000000000000000
end
@@ -215,84 +214,70 @@ object TTW_Bot: TTTW_Bot
end
end
inherited GroupBox1: TGroupBox
inherited Label12: TLabel
TabOrder = 37
end
inherited edtCommand: TEdit
TabOrder = 38
end
inherited frContruct1: TfrContruct
inherited mResponse: TMemo
TabOrder = 39
Viewport.Width = 376.000000000000000000
Viewport.Height = 177.000000000000000000
end
inherited Label14: TLabel
TabOrder = 40
Size.Width = 384.000000000000000000
Viewport.Width = 380.000000000000000000
Viewport.Height = 157.000000000000000000
end
inherited GroupBox7: TGroupBox
TabOrder = 41
inherited btnAddUserName: TButton
Images = ImageList1
ImageIndex = 11
TabOrder = 37
TabOrder = 38
end
inherited btnGetDateFollow: TButton
Images = ImageList1
ImageIndex = 15
TabOrder = 38
TabOrder = 39
end
inherited btnGetAgeAccaunt: TButton
Images = ImageList1
ImageIndex = 15
TabOrder = 39
TabOrder = 40
end
inherited btnCounterAddtoText: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 40
ImageIndex = 23
TabOrder = 41
end
inherited cbCounterName: TComboBox
TabOrder = 41
TabOrder = 42
end
inherited btnGPT: TButton
Images = ImageList1
ImageIndex = 19
TabOrder = 42
TabOrder = 43
end
inherited btnRandomUserName: TButton
Images = ImageList1
ImageIndex = 11
TabOrder = 43
TabOrder = 44
end
inherited btnGetChannelStat: TButton
Images = ImageList1
ImageIndex = 20
Size.Width = 128.000000000000000000
TabOrder = 44
ImageIndex = 22
Size.Width = 136.000000000000000000
TabOrder = 45
end
inherited btnAIPic: TButton
Images = ImageList1
ImageIndex = 5
TabOrder = 45
TabOrder = 46
end
end
inherited btnAddCommand: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 42
end
inherited btnEditCommand: TButton
Images = ImageList1
ImageIndex = 3
TabOrder = 43
end
inherited btnRmCommand: TButton
Images = ImageList1
ImageIndex = 4
TabOrder = 44
ImageIndex = 12
end
inherited cbTextToSpeech: TCheckBox
TabOrder = 45
end
end
inherited GroupBox9: TGroupBox
@@ -301,7 +286,7 @@ object TTW_Bot: TTTW_Bot
Viewport.Height = 116.000000000000000000
end
inherited lbRandomRespons: TListBox
Viewport.Width = 270.000000000000000000
Viewport.Width = 214.000000000000000000
Viewport.Height = 116.000000000000000000
end
inherited btnRandomAdd: TButton
@@ -312,25 +297,19 @@ object TTW_Bot: TTTW_Bot
inherited btnRandomDel: TButton
Images = ImageList1
ImageIndex = 12
TabOrder = 37
end
inherited btnRmGroup: TButton
Images = ImageList1
ImageIndex = 4
TabOrder = 38
end
inherited Label4: TLabel
TabOrder = 39
end
inherited Label5: TLabel
TabOrder = 41
TabOrder = 42
end
end
inherited GroupBox8: TGroupBox
inherited btnRandAdd: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 32
OnClick = frCommands1btnRandAddClick
end
inherited btnRandDel: TButton
@@ -339,8 +318,8 @@ object TTW_Bot: TTTW_Bot
end
inherited sgRandomInt: TStringGrid
TabOrder = 35
Viewport.Width = 157.000000000000000000
Viewport.Height = 144.000000000000000000
Viewport.Width = 153.000000000000000000
Viewport.Height = 119.000000000000000000
inherited scRIntName: TStringColumn
Size.Width = 70.000000000000000000
end
@@ -353,74 +332,61 @@ object TTW_Bot: TTTW_Bot
end
end
inherited GroupBox11: TGroupBox
inherited btnSoundAdd: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 37
Margins.Top = 200.000000000000000000
inherited frsgSounds: TfrSimpleGrid
inherited sg: TStringGrid
Viewport.Width = 289.000000000000000000
Viewport.Height = 124.000000000000000000
inherited sgR2: TStringColumn
Size.Width = 170.000000000000000000
end
inherited btnSoundDel: TButton
Images = ImageList1
ImageIndex = 12
TabOrder = 38
end
inherited edtSoundName: TEdit
TabOrder = 39
end
inherited edtSoundFileName: TEdit
TabOrder = 40
end
inherited btnSoundOpen: TButton
inherited btnOpen: TButton
Images = ImageList1
ImageIndex = 14
TabOrder = 41
Text = ''
end
inherited tbSoundVolume: TTrackBar
TabOrder = 42
end
inherited btnSoundTest: TButton
inherited btnAdd: TButton
Images = ImageList1
ImageIndex = 25
TabOrder = 43
ImageIndex = 0
end
inherited sgSAFiles: TStringGrid
TabOrder = 44
Viewport.Width = 345.000000000000000000
Viewport.Height = 149.000000000000000000
inherited sgSAFile: TStringColumn
Size.Width = 220.000000000000000000
inherited btnDel: TButton
Images = ImageList1
ImageIndex = 12
end
inherited btnEdt: TButton
Images = ImageList1
ImageIndex = 3
TabOrder = 45
end
end
end
inherited GroupBox24: TGroupBox
inherited btnTextAdd: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 37
inherited frsgFiles: TfrSimpleGrid
inherited sg: TStringGrid
Viewport.Width = 289.000000000000000000
Viewport.Height = 124.000000000000000000
inherited sgR2: TStringColumn
Size.Width = 170.000000000000000000
end
inherited btnTextDel: TButton
Images = ImageList1
ImageIndex = 12
TabOrder = 38
end
inherited edtTextName: TEdit
TabOrder = 39
end
inherited edtTextFileName: TEdit
TabOrder = 40
end
inherited btnTextOpen: TButton
inherited btnOpen: TButton
Images = ImageList1
ImageIndex = 14
TabOrder = 41
Text = ''
end
inherited sgTFiles: TStringGrid
TabOrder = 44
Viewport.Width = 297.000000000000000000
Viewport.Height = 149.000000000000000000
inherited scTFileFile: TStringColumn
Size.Width = 170.000000000000000000
inherited btnAdd: TButton
Images = ImageList1
ImageIndex = 0
end
inherited btnDel: TButton
Images = ImageList1
ImageIndex = 12
end
inherited btnEdt: TButton
Images = ImageList1
ImageIndex = 3
TabOrder = 45
end
end
end
@@ -430,34 +396,27 @@ object TTW_Bot: TTTW_Bot
end
inherited GroupBox2: TGroupBox
TabOrder = 7
inherited sgAIGen: TStringGrid
TabOrder = 37
Viewport.Width = 305.000000000000000000
Viewport.Height = 149.000000000000000000
inherited StringColumn2: TStringColumn
Size.Width = 180.000000000000000000
inherited frsgNeiro: TfrSimpleGrid
inherited sg: TStringGrid
Viewport.Width = 289.000000000000000000
Viewport.Height = 124.000000000000000000
inherited sgR2: TStringColumn
Size.Width = 170.000000000000000000
end
end
inherited edtAIGenName: TEdit
TabOrder = 38
end
inherited edtAIGenRequest: TEdit
TabOrder = 39
end
inherited btnAIGenAdd: TButton
inherited btnAdd: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 40
end
inherited btnAIGenDel: TButton
inherited btnDel: TButton
Images = ImageList1
ImageIndex = 12
TabOrder = 41
end
inherited btnAIGetTextUser: TButton
inherited btnEdt: TButton
Images = ImageList1
ImageIndex = 11
TabOrder = 42
ImageIndex = 3
TabOrder = 45
end
end
end
end
@@ -495,13 +454,13 @@ object TTW_Bot: TTTW_Bot
ExplicitSize.cy = 26.000000000000000000
inline frOBS1: TfrOBS
Align = Top
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 345.000000000000000000
Size.PlatformDefault = False
inherited sgWebChats: TStringGrid
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 282.000000000000000000
Viewport.Width = 1042.000000000000000000
Viewport.Width = 970.000000000000000000
Viewport.Height = 282.000000000000000000
inherited StringColumn2: TStringColumn
Size.Width = 200.000000000000000000
@@ -516,26 +475,14 @@ object TTW_Bot: TTTW_Bot
OnClick = frChatOBS1btnCreateChatClick
end
inherited btnDeleteeChat: TButton
Anchors = [akTop, akRight]
Images = ImageList1
ImageIndex = 4
Position.X = 954.000000000000000000
Position.X = 882.000000000000000000
TabOrder = 3
end
inherited Label1: TLabel
TabOrder = 6
end
object btnCreateChat: TButton [4]
Images = ImageList1
ImageIndex = 5
Position.X = 406.000000000000000000
Position.Y = -80.000000000000000000
Size.Width = 153.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Text = #1057#1086#1079#1076#1072#1090#1100' '#1086#1087#1086#1074#1077#1097#1077#1085#1080#1077
TextSettings.Trimming = None
OnClick = frChatOBS1btnCreateChatClick
TabOrder = 7
end
inherited btnCreateOBSNotify: TButton
Images = ImageList1
@@ -549,6 +496,19 @@ object TTW_Bot: TTTW_Bot
Position.X = 264.000000000000000000
OnClick = frOBS1btnCreateOBSKandinskyClick
end
object btnCreateChat: TButton
Images = ImageList1
ImageIndex = 5
Position.X = 406.000000000000000000
Position.Y = -80.000000000000000000
Size.Width = 153.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Text = #1057#1086#1079#1076#1072#1090#1100' '#1086#1087#1086#1074#1077#1097#1077#1085#1080#1077
TextSettings.Trimming = None
OnClick = frChatOBS1btnCreateChatClick
end
end
end
object TabItem6: TTabItem
@@ -568,7 +528,7 @@ object TTW_Bot: TTTW_Bot
ExplicitSize.cy = 26.000000000000000000
inline frNotify1: TfrNotify
Align = Client
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 718.000000000000000000
Size.PlatformDefault = False
inherited btnNotifyOpen: TButton
@@ -649,7 +609,7 @@ object TTW_Bot: TTTW_Bot
ExplicitSize.cy = 26.000000000000000000
inline frAutoActions1: TfrAutoActions
Align = Client
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 718.000000000000000000
Size.PlatformDefault = False
inherited GroupBox20: TGroupBox
@@ -768,20 +728,20 @@ object TTW_Bot: TTTW_Bot
ExplicitSize.cy = 26.000000000000000000
inline frLog1: TfrLog
Align = Client
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 718.000000000000000000
Size.PlatformDefault = False
inherited Panel1: TPanel
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
inherited btnClear: TButton
Images = ImageList1
ImageIndex = 4
end
end
inherited sgLog: TStringGrid
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 685.000000000000000000
Viewport.Width = 1042.000000000000000000
Viewport.Width = 970.000000000000000000
Viewport.Height = 685.000000000000000000
inherited StringColumn2: TStringColumn
Size.Width = 170.000000000000000000
@@ -799,7 +759,7 @@ object TTW_Bot: TTTW_Bot
object Panel1: TPanel
Align = Bottom
Position.Y = 744.000000000000000000
Size.Width = 1042.000000000000000000
Size.Width = 970.000000000000000000
Size.Height = 142.000000000000000000
Size.PlatformDefault = False
TabOrder = 10
+17 -1
View File
@@ -135,8 +135,18 @@ begin
myConst.cfg1 := myConst.GeneralPath + 'botapp.cfg';
db := TSettingsDatabase.Create(myConst.DBPath);
ReadDB;
frCommands1.frsgSounds.ObjectRecord:=frCommands1.listSounds;
frCommands1.frsgSounds.TableName:='listSounds';
frCommands1.frsgSounds.UpdateGrid;
frCommands1.frsgFiles.ObjectRecord:=frCommands1.listFiles;
frCommands1.frsgFiles.TableName:='listFiles';
frCommands1.frsgFiles.UpdateGrid;
frCommands1.frsgNeiro.ObjectRecord:=frCommands1.listNeiro;
frCommands1.frsgNeiro.TableName:='listNeiro';
frCommands1.frsgNeiro.UpdateGrid;
for Path in TDirectory.GetFiles(myConst.stlPath) do
cbTheme.Items.Add(ExtractFileName(Path));
@@ -260,6 +270,12 @@ var
procedure LoadGridsData;
begin
DB.LoadRecordArray<TRandomCounters>('RandomCounters', frCommands1.RandomCounters);
DB.LoadRecordArray<TListCommands>('listSounds', frCommands1.listSounds);
DB.LoadRecordArray<TListCommands>('listFiles', frCommands1.listFiles);
DB.LoadRecordArray<TListCommands>('listNeiro', frCommands1.listNeiro);
DB.LoadRecordArray<TListCommands>('listCommands', frCommands1.listCommands);
frCommands1.UpdateGridFromArray;
{ db.LoadGridFromTable('sgRandomInt', frCommands1.sgRandomInt);
db.LoadGridFromTable('sgCommands', frCommands1.sgCommands);
db.LoadGridFromTable('sgSAFiles', frCommands1.sgSAFiles);
+8 -1
View File
@@ -5,11 +5,18 @@ interface
type
TRandomCounters = record
Name: string;
rndName: string;
Ot: Integer;
ToValue: Integer;
end;
type
TListCommands = record
R1: string;
R2: string;
end;
type
TConst = record
GeneralPath: string;