-
Notifications
You must be signed in to change notification settings - Fork 4
/
formmain.lfm
572 lines (572 loc) · 14.4 KB
/
formmain.lfm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
object frmMain: TfrmMain
Left = 405
Height = 680
Top = 158
Width = 923
Caption = 'OpenModbusTool'
ClientHeight = 656
ClientWidth = 923
DesignTimePPI = 120
Menu = menuMainForm
OnClose = FormClose
OnCreate = FormCreate
OnDestroy = FormDestroy
Position = poScreenCenter
SessionProperties = 'cbIP.Text;edRegAddr.Text;edRegCount.Text;rgViewStyle.ItemIndex;cbIP.Items'
LCLVersion = '1.8.4.0'
Visible = True
object VirtualStringTree1: TVirtualStringTree
Left = 0
Height = 414
Top = 115
Width = 923
Align = alClient
DefaultText = 'Node'
Header.AutoSizeIndex = 0
Header.Columns = <
item
Position = 0
Text = 'Register'
Width = 200
end
item
Position = 1
Text = 'Value'
Width = 100
end
item
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coAllowFocus, coEditable]
Position = 2
Text = 'Reg.num'
Width = 100
end
item
Options = [coAllowClick, coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coAllowFocus, coEditable]
Position = 3
Text = 'Type'
Width = 100
end>
Header.MainColumn = 1
Header.Options = [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
PopupMenu = menuMainList
TabOrder = 3
TreeOptions.MiscOptions = [toAcceptOLEDrop, toEditable, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning, toEditOnClick]
TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toShowHorzGridLines, toShowRoot, toShowVertGridLines, toThemeAware, toUseBlendedImages]
TreeOptions.SelectionOptions = [toFullRowSelect, toMultiSelect]
OnEditing = VirtualStringTree1Editing
OnKeyUp = VirtualStringTree1KeyUp
OnNewText = VirtualStringTree1NewText
end
object Panel1: TPanel
Left = 0
Height = 35
Top = 80
Width = 923
Align = alTop
BorderWidth = 2
ClientHeight = 35
ClientWidth = 923
ParentFont = False
TabOrder = 1
Visible = False
object ListViewFilterEdit1: TListViewFilterEdit
Left = 3
Height = 29
Top = 3
Width = 917
ButtonWidth = 29
NumGlyphs = 1
Align = alClient
MaxLength = 0
ParentFont = False
TabOrder = 0
ByAllFields = True
end
end
object StatusBar1: TStatusBar
Left = 0
Height = 24
Top = 632
Width = 923
Panels = <
item
Alignment = taCenter
Text = 'offline'
Width = 88
end
item
Width = 250
end
item
Width = 62
end>
ParentFont = False
SimplePanel = False
end
object Panel2: TPanel
Left = 0
Height = 80
Top = 0
Width = 923
Align = alTop
ClientHeight = 80
ClientWidth = 923
ParentFont = False
TabOrder = 0
object edRegAddr: TLabeledEdit
Left = 80
Height = 25
Hint = 'Examples: 0 / 1 / 400001 / 1234 / 101234'
Top = 48
Width = 88
EditLabel.AnchorSideTop.Control = edRegAddr
EditLabel.AnchorSideTop.Side = asrCenter
EditLabel.AnchorSideRight.Control = edRegAddr
EditLabel.AnchorSideBottom.Control = edRegAddr
EditLabel.AnchorSideBottom.Side = asrBottom
EditLabel.Left = 53
EditLabel.Height = 17
EditLabel.Top = 52
EditLabel.Width = 24
EditLabel.Caption = 'Reg'
EditLabel.ParentColor = False
EditLabel.ParentFont = False
LabelPosition = lpLeft
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 3
Text = '1'
OnChange = edRegAddrChange
OnKeyPress = edRegAddrKeyPress
end
object btnConnect: TButton
Left = 376
Height = 32
Top = 6
Width = 140
Action = actConnect
ParentFont = False
TabOrder = 1
end
object btnDissconect: TButton
Left = 376
Height = 32
Top = 42
Width = 140
Action = actDissconect
ParentFont = False
TabOrder = 2
end
object lbAddr: TLabel
Left = 36
Height = 17
Top = 12
Width = 34
Alignment = taRightJustify
Caption = 'Addr:'
ParentColor = False
ParentFont = False
end
object cbIP: TComboBox
Left = 80
Height = 25
Top = 8
Width = 256
ItemHeight = 17
OnKeyPress = cbIPKeyPress
ParentFont = False
TabOrder = 0
Text = '127.0.0.1'
end
object cbRegisterType: TComboBox
Left = 528
Height = 25
Top = 8
Width = 220
ItemHeight = 17
ItemIndex = 3
Items.Strings = (
'1x (bool, RO) - Discrete Input'
'0x (bool, RW) - Discrete Coils'
'3x (word, RO) - Input Registers'
'4x (word, RW) - Holding Registers'
)
OnChange = cbRegisterTypeChange
ParentFont = False
Style = csDropDownList
TabOrder = 4
Text = '4x (word, RW) - Holding Registers'
end
object cbRegFormat: TComboBox
Left = 528
Height = 25
Top = 44
Width = 192
ItemHeight = 17
ItemIndex = 0
Items.Strings = (
'Dectimal Int (65535)'
'Dectimal Signed Int (-32768)'
'Hex (F0A5)'
'Bin (0000 0000 0000 0001)'
'Boolean (0-gray, 1-green)'
'Float (4 byte)'
'Double Float (8 byte)'
)
OnChange = cbRegFormatChange
ParentFont = False
Style = csDropDownList
TabOrder = 5
Text = 'Dectimal Int (65535)'
end
object shapeState: TShape
Left = 344
Height = 24
Top = 12
Width = 24
Shape = stCircle
end
object btnSwapConfig: TButton
Left = 724
Height = 24
Top = 44
Width = 24
Action = actSwapConfig
Caption = '...'
TabOrder = 6
end
object edRegCount: TLabeledEdit
Left = 280
Height = 25
Hint = 'register count'
Top = 48
Width = 62
EditLabel.AnchorSideTop.Control = edRegCount
EditLabel.AnchorSideTop.Side = asrCenter
EditLabel.AnchorSideRight.Control = edRegCount
EditLabel.AnchorSideBottom.Control = edRegCount
EditLabel.AnchorSideBottom.Side = asrBottom
EditLabel.Left = 239
EditLabel.Height = 17
EditLabel.Top = 52
EditLabel.Width = 38
EditLabel.Caption = 'Count'
EditLabel.ParentColor = False
EditLabel.ParentFont = False
LabelPosition = lpLeft
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 7
Text = '125'
OnChange = edRegCountChange
OnKeyPress = edRegCountKeyPress
end
object btnSetReadCount: TButton
Left = 344
Height = 25
Top = 48
Width = 24
Caption = 'ok'
Enabled = False
OnClick = btnSetReadCountClick
TabOrder = 8
end
object btnSetRegAddr: TButton
Left = 171
Height = 25
Top = 48
Width = 24
Caption = 'ok'
Enabled = False
OnClick = btnSetRegAddrClick
TabOrder = 9
end
end
object listLog: TListBox
Left = 0
Height = 100
Top = 532
Width = 923
Align = alBottom
ItemHeight = 0
TabOrder = 4
Visible = False
end
object SplitterLog: TSplitter
Cursor = crVSplit
Left = 0
Height = 3
Top = 529
Width = 923
Align = alBottom
ResizeAnchor = akBottom
Visible = False
end
object DrawGrid1: TDrawGrid
Left = 0
Height = 414
Top = 115
Width = 923
Align = alClient
ColCount = 7
ExtendedSelect = False
FixedCols = 0
FixedRows = 0
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goSmoothScroll]
PopupMenu = menuMainList
RangeSelectMode = rsmMulti
RowCount = 1
TabOrder = 6
Visible = False
end
object TimerReadMB: TTimer
left = 560
top = 424
end
object ApplicationProperties1: TApplicationProperties
CaptureExceptions = False
left = 60
top = 400
end
object TimerInit: TTimer
Interval = 10
OnTimer = TimerInitTimer
left = 200
top = 400
end
object ActionList1: TActionList
left = 200
top = 310
object actDissconect: TAction
Caption = 'Dissconect'
Enabled = False
OnExecute = actDissconectExecute
OnUpdate = actDissconectUpdate
end
object actConnect: TAction
Caption = 'Connect'
OnExecute = actConnectExecute
OnUpdate = actConnectUpdate
end
object actAbout: TAction
Caption = 'About'
OnExecute = actAboutExecute
end
object actExit: TAction
Caption = 'Exit'
OnExecute = actExitExecute
end
object actOptions: TAction
Caption = 'Options'
OnExecute = actOptionsExecute
end
object actCopy: TAction
Caption = 'Copy'
OnExecute = actCopyExecute
OnUpdate = actMassActionUpdate
end
object actCopyValue: TAction
Caption = 'Copy value'
OnExecute = actCopyValueExecute
OnUpdate = actMassActionUpdate
end
object actPaste: TAction
Caption = 'Paste'
OnExecute = actPasteExecute
OnUpdate = actMassActionUpdate
end
object actSet0: TAction
Caption = 'Set 0'
OnExecute = actSet0Execute
OnUpdate = actMassActionUpdate
end
object actSet1: TAction
Caption = 'Set 1'
OnExecute = actSet1Execute
OnUpdate = actMassActionUpdate
end
object actSetX: TAction
Caption = 'Set X'
OnExecute = actSetXExecute
OnUpdate = actMassActionUpdate
end
object actEditExt: TAction
Caption = 'Edit'
OnExecute = actEditExtExecute
OnUpdate = actMassActionUpdate
end
object actTestServerEnable: TAction
Caption = 'Test server'
OnExecute = actTestServerEnableExecute
end
object actSwapConfig: TAction
Caption = 'Swap config'
Hint = 'Swap config'
OnExecute = actSwapConfigExecute
end
object actShowLog: TAction
Caption = 'Show log'
OnExecute = actShowLogExecute
end
end
object menuMainList: TPopupMenu
left = 200
top = 220
object mnEditExt: TMenuItem
Action = actEditExt
Default = True
end
object mnCopy: TMenuItem
Action = actCopy
end
object mnCopyValueOnly: TMenuItem
Action = actCopyValue
end
object mnPaste: TMenuItem
Action = actPaste
end
object mnSet0: TMenuItem
Action = actSet0
end
object mnSet1: TMenuItem
Action = actSet1
end
object mnSetX: TMenuItem
Action = actSetX
end
end
object IniPropStorage1: TIniPropStorage
StoredValues = <>
IniFileName = 'openmodbustool.ini'
left = 60
top = 490
end
object menuMainForm: TMainMenu
left = 60
top = 220
object MenuItem1: TMenuItem
Caption = 'Client'
object MenuItem2: TMenuItem
Action = actConnect
end
object MenuItem3: TMenuItem
Action = actDissconect
end
object MenuItem7: TMenuItem
Action = actOptions
end
object MenuItem4: TMenuItem
Caption = '-'
end
object MenuItem5: TMenuItem
Action = actExit
end
end
object MenuItem17: TMenuItem
Caption = 'View'
object mnViewAsTable: TMenuItem
Caption = 'Table'
GroupIndex = 1
RadioItem = True
OnClick = mnViewAsTableClick
end
object mnViewAsShortList: TMenuItem
Caption = 'Short list'
GroupIndex = 1
RadioItem = True
OnClick = mnViewAsShortListClick
end
object MenuItem18: TMenuItem
Caption = '-'
end
object mnShowLog: TMenuItem
Action = actShowLog
end
end
object mnEdit1: TMenuItem
Caption = 'Edit'
object MenuItem8: TMenuItem
Action = actEditExt
end
object MenuItem9: TMenuItem
Action = actCopy
end
object MenuItem10: TMenuItem
Action = actCopyValue
end
object MenuItem11: TMenuItem
Action = actPaste
end
object MenuItem15: TMenuItem
Caption = '-'
end
object MenuItem12: TMenuItem
Action = actSet0
end
object MenuItem13: TMenuItem
Action = actSet1
end
object MenuItem14: TMenuItem
Action = actSetX
end
end
object MenuItem16: TMenuItem
Caption = 'Server'
object mnSrvStart: TMenuItem
Action = actTestServerEnable
Caption = 'Enable local server'
end
object MenuItem19: TMenuItem
Caption = '-'
end
object mnSrvTestRead: TMenuItem
Caption = 'Test mode - read only'
Checked = True
Enabled = False
end
object mnSrvAddSmallRandom: TMenuItem
Caption = 'Add small random'
Checked = True
OnClick = mnSrvAddSmallRandomClick
end
object mnSrvFullRnd: TMenuItem
Caption = 'Full rnd'
OnClick = mnSrvFullRndClick
end
end
object MenuItem6: TMenuItem
Action = actAbout
end
end
object IdModBusServerTest: TIdModBusServer
Bindings = <
item
IP = '0.0.0.0'
Port = 502
end
item
IP = '::'
IPVersion = Id_IPv6
Port = 502
end>
OnConnect = IdModBusServerTestConnect
OnDisconnect = IdModBusServerTestDisconnect
OnInvalidFunction = IdModBusServerTestInvalidFunction
OnReadCoils = IdModBusServerTestReadCoils
OnReadHoldingRegisters = IdModBusServerTestReadHoldingRegisters
OnReadInputBits = IdModBusServerTestReadInputBits
OnReadInputRegisters = IdModBusServerTestReadInputRegisters
OnWriteCoils = IdModBusServerTestWriteCoils
OnWriteRegisters = IdModBusServerTestWriteRegisters
left = 440
top = 300
end
object TimerUpdateData: TTimer
Enabled = False
Interval = 100
left = 496
top = 448
end
end