- Realigned frmRegionControl

- Added coordinate grabbing to TfrmRegionControl
- Added hints to the grab buttons in frmLargeScaleCommand
This commit is contained in:
Andreas Schneider 2009-12-19 14:39:14 +01:00
parent 387d5fb28d
commit a9f278ae21
3 changed files with 1348 additions and 1193 deletions

View File

@ -1084,7 +1084,7 @@ object frmLargeScaleCommand: TfrmLargeScaleCommand
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = btnDeleteArea AnchorSideBottom.Control = btnDeleteArea
Left = 4 Left = 4
Height = 118 Height = 122
Top = 154 Top = 154
Width = 144 Width = 144
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
@ -1209,10 +1209,8 @@ object frmLargeScaleCommand: TfrmLargeScaleCommand
Top = 280 Top = 280
Width = 22 Width = 22
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
BorderSpacing.Left = 4 BorderSpacing.Bottom = 4
BorderSpacing.Top = 8 BorderSpacing.Around = 4
BorderSpacing.Right = 4
BorderSpacing.Bottom = 8
Color = clBtnFace Color = clBtnFace
Glyph.Data = { Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100 36040000424D3604000000000000360000002800000010000000100000000100
@ -1394,6 +1392,7 @@ object frmLargeScaleCommand: TfrmLargeScaleCommand
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 34 Left = 34
Height = 22 Height = 22
Hint = 'Grab coordinates from the main window.'
Top = 360 Top = 360
Width = 22 Width = 22
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
@ -1438,6 +1437,8 @@ object frmLargeScaleCommand: TfrmLargeScaleCommand
} }
NumGlyphs = 0 NumGlyphs = 0
OnClick = btnGrab1Click OnClick = btnGrab1Click
ShowHint = True
ParentShowHint = False
end end
object btnGrab2: TSpeedButton object btnGrab2: TSpeedButton
AnchorSideLeft.Control = seY2 AnchorSideLeft.Control = seY2
@ -1446,6 +1447,7 @@ object frmLargeScaleCommand: TfrmLargeScaleCommand
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 92 Left = 92
Height = 22 Height = 22
Hint = 'Grab coordinates from the main window.'
Top = 360 Top = 360
Width = 22 Width = 22
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
@ -1489,5 +1491,7 @@ object frmLargeScaleCommand: TfrmLargeScaleCommand
} }
NumGlyphs = 0 NumGlyphs = 0
OnClick = btnGrab1Click OnClick = btnGrab1Click
ShowHint = True
ParentShowHint = False
end end
end end

View File

@ -3,7 +3,7 @@ object frmRegionControl: TfrmRegionControl
Height = 413 Height = 413
Top = 139 Top = 139
Width = 620 Width = 620
ActiveControl = Panel1 ActiveControl = vstRegions
Caption = 'Region Control' Caption = 'Region Control'
ClientHeight = 413 ClientHeight = 413
ClientWidth = 620 ClientWidth = 620
@ -14,62 +14,266 @@ object frmRegionControl: TfrmRegionControl
OnShow = FormShow OnShow = FormShow
Position = poOwnerFormCenter Position = poOwnerFormCenter
ShowInTaskBar = stAlways ShowInTaskBar = stAlways
LCLVersion = '0.9.27' LCLVersion = '0.9.29'
object Panel1: TPanel object sbArea: TScrollBox
AnchorSideLeft.Control = vstRegions
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = btnClose
Left = 160
Height = 372
Top = 0
Width = 460
Anchors = [akTop, akLeft, akRight, akBottom]
ClientHeight = 368
ClientWidth = 456
TabOrder = 0
object pbArea: TPaintBox
Left = 0 Left = 0
Height = 380 Height = 105
Top = 0
Width = 105
OnMouseDown = pbAreaMouseDown
OnMouseMove = pbAreaMouseMove
OnPaint = pbAreaPaint
end
end
object btnClose: TButton
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 548
Height = 25
Top = 380
Width = 64
Anchors = [akRight, akBottom]
BorderSpacing.Around = 8
Caption = 'Close'
OnClick = btnCloseClick
TabOrder = 1
end
object btnSave: TButton
AnchorSideRight.Control = btnClose
AnchorSideBottom.Control = btnClose
AnchorSideBottom.Side = asrBottom
Left = 476
Height = 25
Top = 380
Width = 64
Anchors = [akRight, akBottom]
BorderSpacing.Right = 4
Caption = 'Save'
Enabled = False
OnClick = btnSaveClick
TabOrder = 2
end
object vstRegions: TVirtualStringTree
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideBottom.Control = btnAddRegion
Left = 0
Height = 130
Top = 0 Top = 0
Width = 160 Width = 160
Align = alLeft Anchors = [akTop, akLeft, akBottom]
ClientHeight = 380 DefaultText = 'Node'
ClientWidth = 160 Header.AutoSizeIndex = 0
TabOrder = 0 Header.Columns = <
item
Position = 0
Text = 'Regions'
Width = 160
end>
Header.DefaultHeight = 17
Header.Options = [hoAutoResize, hoVisible]
Header.ParentFont = True
Header.Style = hsFlatButtons
PopupMenu = pmRegions
TabOrder = 3
TreeOptions.MiscOptions = [toCheckSupport, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning]
TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toThemeAware, toUseBlendedImages]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnChange = vstRegionsChange
OnFreeNode = vstRegionsFreeNode
OnGetText = vstRegionsGetText
end
object btnAddRegion: TSpeedButton
AnchorSideLeft.Control = vstRegions
AnchorSideBottom.Control = spRegionsArea
Left = 4
Height = 22
Hint = 'Add region'
Top = 134
Width = 22
Anchors = [akLeft, akBottom]
BorderSpacing.Around = 4
Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003A8C44FF368940FF32873CFF2F84
37FF000000000000000000000000000000000000000000000000000000000000
00000000000000000000459653FF419950FF7DC28FFF96D0A6FF96CFA6FF78BE
89FF368D42FF2C8134FF00000000000000000000000000000000000000000000
0000000000004D9C5DFF64B478FFA8DBB5FF87CC98FF66BC7DFF64BA7CFF86CB
98FFA5D9B4FF58AA6BFF2C8134FF000000000000000000000000000000000000
000056A366FF6AB97DFFA8DBB2FF60BC77FF5CBA73FF59B870FF59B56FFF58B5
6FFF5BB774FFA5D9B3FF5AAA6CFF2C8234FF0000000000000000000000000000
000053AB68FFAADDB4FF64C179FF5FBE71FF60BC77FFFFFFFFFFFFFFFFFF59B8
70FF58B56EFF5CB774FFA6DAB4FF388F43FF00000000000000000000000061AC
75FF8ACC98FF89D396FF6BC67AFF63C170FF55AB65FFFFFFFFFFFFFFFFFF59B8
70FF59B870FF5BB972FF85CC97FF7BBE8DFF308539FF000000000000000065AF
7AFFA9DDB3FF7DCF8AFF75CC81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF59B870FF67BE7DFF9CD4ABFF34883DFF000000000000000069B2
7EFFB6E2BEFF8BD597FF7AC986FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF59B870FF69C17EFF9DD4AAFF388B42FF00000000000000006DB5
83FFACDDB6FFA6DFAFFF81CB8CFF7CC986FF6EBD79FFFFFFFFFFFFFFFFFF5BAC
6AFF60BC77FF5CBA73FF8BD199FF80C592FF3C8E47FF00000000000000000000
000085C797FFD2EED7FF95D9A0FF8AD394FF7FC889FFFFFFFFFFFFFFFFFF79CD
85FF6BC37CFF6FC77EFFACDFB5FF459E57FF0000000000000000000000000000
000070B887FFAADAB7FFD8F1DCFF92D89DFF88CD93FF84CC8EFF8BD496FF8AD4
95FF83D28EFFAFE0B7FF6BB97DFF489856FF0000000000000000000000000000
00000000000070B887FFAFDCBBFFDCF2E0FFB6E4BDFF9BDBA5FF96D9A0FFA5DF
AFFFC0E8C5FF79C28AFF509E5FFF000000000000000000000000000000000000
0000000000000000000071B887FF94CEA4FFC3E6CBFFCFEBD4FFC9E9CEFFAFDD
B8FF6DB97FFF58A569FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000006EB684FF6AB380FF67B17CFF63AE
77FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
NumGlyphs = 0
OnClick = mnuAddRegionClick
ShowHint = True
ParentShowHint = False
end
object btnDeleteRegion: TSpeedButton
AnchorSideLeft.Control = btnAddRegion
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = btnAddRegion
AnchorSideBottom.Side = asrBottom
Left = 30
Height = 22
Hint = 'Delete region'
Top = 134
Width = 22
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 4
Color = clBtnFace
Enabled = False
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003853BEFF3551BDFF304BBCFF2E4E
B8FF000000000000000000000000000000000000000000000000000000000000
000000000000000000004255C6FF3C52CCFF757AE8FF8F92EEFF8F92EEFF7178
E4FF334DC1FF2B4AB7FF00000000000000000000000000000000000000000000
0000000000004959CBFF5C65E0FFA1A6F5FF7E86EFFF5B63E9FF595DE7FF7D84
EEFF9EA0F4FF515DD7FF2B4AB7FF000000000000000000000000000000000000
00005361CFFF616BE3FFA1ACF5FF545FECFF505CEAFF4D59E9FF4E59E6FF4C56
E6FF5056E6FF9EA2F4FF5460D6FF2A4AB8FF0000000000000000000000000000
00004B56DBFFA2ABF6FF5664F0FF5266EEFF4D59E9FF4D59E9FF4D59E9FF4D59
E9FF4C58E6FF525AE6FF9FA3F5FF3450C4FF0000000000000000000000005C62
D7FF818CEEFF7E91F7FF5D73F3FF4D59E9FF4D59E9FF4D59E9FF4D59E9FF4D59
E9FF4D59E9FF4F5BE9FF7B83F0FF757BE2FF2E4BBAFF00000000000000005F63
DAFFA1ABF7FF7086F8FF6882F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF4D59E9FF5C66EAFF969CF1FF3250BCFF00000000000000006469
DBFFAFB9F9FF7F93FAFF7085F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF4D59E9FF5E6AEEFF969DF1FF364FBEFF0000000000000000676A
DEFFA5AFF5FF9DABFAFF778CF0FF545FECFF545FECFF545FECFF545FECFF545F
ECFF545FECFF6377F2FF818EF4FF787FE9FF3A53C0FF00000000000000000000
00007D83EAFFCDD4FCFF8B9DFAFF7E93F7FF758AEEFF6C84F6FF6C84F6FF6C84
F6FF6C84F6FF6379F3FFA4AFF8FF3E4FD0FF0000000000000000000000000000
00006A69E0FFA3A7F3FFD4DBFDFF879AFAFF7F91F0FF7A8EF1FF7F94F8FF7E92
F9FF768CF8FFA8B6F8FF636EE3FF4557C7FF0000000000000000000000000000
0000000000006A69E0FFAAADF2FFD8DCFDFFAEBAFAFF91A3FAFF8B9DFAFF9CA9
FBFFBAC7FCFF707BE9FF4C5BCCFF000000000000000000000000000000000000
000000000000000000006A6ADFFF8E93EDFFBEC3F8FFCCD3F9FFC4CBF9FFAAB4
F4FF6670E2FF535ED1FF00000000000000000000000000000000000000000000
000000000000000000000000000000000000686ADDFF6364DCFF6164DAFF5D63
D9FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
NumGlyphs = 0
OnClick = mnuDeleteRegionClick
ShowHint = True
ParentShowHint = False
end
object vstArea: TVirtualStringTree
AnchorSideLeft.Control = spRegionsArea
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = spRegionsArea
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = btnDeleteArea
Left = 4
Height = 124
Top = 179
Width = 152
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 4
BorderSpacing.Right = 4
BorderSpacing.Bottom = 4
BorderStyle = bsSingle
DefaultText = 'Node'
Header.AutoSizeIndex = 0
Header.Columns = <>
Header.DefaultHeight = 17
Header.MainColumn = -1
Header.Options = [hoColumnResize, hoDrag]
TabOrder = 4
TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toThemeAware, toUseBlendedImages]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnChange = vstAreaChange
OnGetText = vstAreaGetText
end
object Label1: TLabel object Label1: TLabel
Left = 5 AnchorSideLeft.Control = spRegionsArea
AnchorSideTop.Control = spRegionsArea
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = spRegionsArea
AnchorSideRight.Side = asrBottom
Left = 4
Height = 14 Height = 14
Top = 176 Top = 165
Width = 150 Width = 152
Align = alTop Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 4 BorderSpacing.Left = 4
BorderSpacing.Right = 4 BorderSpacing.Right = 4
Caption = 'Area:' Caption = 'Area:'
ParentColor = False ParentColor = False
end end
object pnlAreaControls: TPanel object spRegionsArea: TSplitter
Left = 5 AnchorSideLeft.Control = vstRegions
Height = 82 AnchorSideRight.Control = vstRegions
Top = 293 AnchorSideRight.Side = asrBottom
Width = 150 Cursor = crVSplit
Align = alBottom Left = 0
BorderSpacing.Around = 4 Height = 5
BevelOuter = bvNone Top = 160
ClientHeight = 82 Width = 160
ClientWidth = 150 Align = alNone
TabOrder = 0 Anchors = [akTop, akLeft, akRight]
object lblX: TLabel AutoSnap = False
Left = 4 ResizeAnchor = akTop
Height = 14
Top = 32
Width = 8
Caption = 'X'
Enabled = False
ParentColor = False
end
object lblY: TLabel
Left = 4
Height = 14
Top = 60
Width = 8
Caption = 'Y'
Enabled = False
ParentColor = False
end end
object btnAddArea: TSpeedButton object btnAddArea: TSpeedButton
Left = 30 AnchorSideTop.Control = btnDeleteArea
AnchorSideRight.Control = btnDeleteArea
Left = 43
Height = 22 Height = 22
Hint = 'Add area' Hint = 'Add area'
Top = 0 Top = 307
Width = 23 Width = 22
Anchors = [akTop, akRight]
Color = clBtnFace Color = clBtnFace
Enabled = False Enabled = False
Glyph.Data = { Glyph.Data = {
@ -114,11 +318,17 @@ object frmRegionControl: TfrmRegionControl
ParentShowHint = False ParentShowHint = False
end end
object btnDeleteArea: TSpeedButton object btnDeleteArea: TSpeedButton
Left = 59 AnchorSideLeft.Control = vstArea
AnchorSideLeft.Side = asrCenter
AnchorSideBottom.Control = seX1
Left = 69
Height = 22 Height = 22
Hint = 'Delete area' Hint = 'Delete area'
Top = 0 Top = 307
Width = 23 Width = 22
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 4
BorderSpacing.Around = 4
Color = clBtnFace Color = clBtnFace
Enabled = False Enabled = False
Glyph.Data = { Glyph.Data = {
@ -163,11 +373,14 @@ object frmRegionControl: TfrmRegionControl
ParentShowHint = False ParentShowHint = False
end end
object btnClearArea: TSpeedButton object btnClearArea: TSpeedButton
Left = 87 AnchorSideLeft.Control = btnDeleteArea
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = btnDeleteArea
Left = 95
Height = 22 Height = 22
Hint = 'Delete all areas' Hint = 'Delete all areas'
Top = 0 Top = 307
Width = 23 Width = 22
Color = clBtnFace Color = clBtnFace
Enabled = False Enabled = False
Glyph.Data = { Glyph.Data = {
@ -211,289 +424,201 @@ object frmRegionControl: TfrmRegionControl
ShowHint = True ShowHint = True
ParentShowHint = False ParentShowHint = False
end end
object lblX: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = seX1
AnchorSideTop.Side = asrCenter
Left = 4
Height = 14
Top = 339
Width = 8
BorderSpacing.Left = 4
Caption = 'X'
Enabled = False
ParentColor = False
end
object seX1: TSpinEdit object seX1: TSpinEdit
AnchorSideLeft.Control = seY1
AnchorSideBottom.Control = seY1
Left = 20 Left = 20
Height = 19 Height = 19
Top = 29 Top = 337
Width = 50 Width = 50
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 8
Enabled = False Enabled = False
OnChange = seX1Change OnChange = seX1Change
TabOrder = 0 TabOrder = 6
Value = 1
end end
object seX2: TSpinEdit object seX2: TSpinEdit
Left = 84 AnchorSideLeft.Control = seX1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = seX1
Left = 78
Height = 19 Height = 19
Top = 29 Top = 337
Width = 50 Width = 50
BorderSpacing.Left = 8
Enabled = False Enabled = False
OnChange = seX1Change OnChange = seX1Change
TabOrder = 1 TabOrder = 7
Value = 1
end
object lblY: TLabel
AnchorSideLeft.Control = lblX
AnchorSideTop.Control = seY1
AnchorSideTop.Side = asrCenter
Left = 4
Height = 14
Top = 366
Width = 8
Caption = 'Y'
Enabled = False
ParentColor = False
end end
object seY1: TSpinEdit object seY1: TSpinEdit
AnchorSideLeft.Control = lblY
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = seX1
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = btnGrab1
Left = 20 Left = 20
Height = 19 Height = 19
Top = 56 Top = 364
Width = 50 Width = 50
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
Enabled = False Enabled = False
OnChange = seX1Change OnChange = seX1Change
TabOrder = 2 TabOrder = 8
Value = 1
end end
object seY2: TSpinEdit object seY2: TSpinEdit
Left = 84 AnchorSideLeft.Control = seX2
AnchorSideTop.Control = seX2
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = seX2
AnchorSideRight.Side = asrBottom
Left = 78
Height = 19 Height = 19
Top = 56 Top = 364
Width = 50 Width = 50
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 8
Enabled = False Enabled = False
OnChange = seX1Change OnChange = seX1Change
TabOrder = 3 TabOrder = 9
Value = 1
end end
end object btnGrab1: TSpeedButton
object vstArea: TVirtualStringTree AnchorSideLeft.Control = seY1
Left = 5 AnchorSideLeft.Side = asrCenter
Height = 99 AnchorSideBottom.Control = Owner
Top = 190 AnchorSideBottom.Side = asrBottom
Width = 150 Left = 34
Align = alClient
BorderSpacing.Left = 4
BorderSpacing.Right = 4
BorderSpacing.Bottom = 4
BorderStyle = bsSingle
DefaultText = 'Node'
Header.AutoSizeIndex = 0
Header.Columns = <>
Header.DefaultHeight = 17
Header.MainColumn = -1
Header.Options = [hoColumnResize, hoDrag]
TabOrder = 1
TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toThemeAware, toUseBlendedImages]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnChange = vstAreaChange
OnGetText = vstAreaGetText
end
object spRegionsArea: TSplitter
Cursor = crVSplit
Left = 1
Height = 5
Top = 171
Width = 158
Align = alTop
AutoSnap = False
ResizeAnchor = akTop
end
object Panel4: TPanel
Left = 1
Height = 170
Top = 1
Width = 158
Align = alTop
Anchors = [akLeft, akRight]
BevelOuter = bvNone
ClientHeight = 170
ClientWidth = 158
TabOrder = 3
object vstRegions: TVirtualStringTree
Left = 0
Height = 144
Top = 0
Width = 158
Align = alClient
DefaultText = 'Node'
Header.AutoSizeIndex = 0
Header.Columns = <
item
Position = 0
Text = 'Regions'
Width = 158
end>
Header.DefaultHeight = 17
Header.Options = [hoAutoResize, hoVisible]
Header.ParentFont = True
Header.Style = hsFlatButtons
PopupMenu = pmRegions
TabOrder = 0
TreeOptions.MiscOptions = [toCheckSupport, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning]
TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toThemeAware, toUseBlendedImages]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnChange = vstRegionsChange
OnFreeNode = vstRegionsFreeNode
OnGetText = vstRegionsGetText
end
object Panel5: TPanel
Left = 0
Height = 26
Top = 144
Width = 158
Align = alBottom
BevelOuter = bvNone
ClientHeight = 26
ClientWidth = 158
TabOrder = 1
object btnAddRegion: TSpeedButton
Left = 54
Height = 22 Height = 22
Hint = 'Add region' Hint = 'Grab coordinates from the main window.'
Top = 3 Top = 387
Width = 23 Width = 22
Color = clBtnFace Anchors = [akLeft, akBottom]
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003A8C44FF368940FF32873CFF2F84
37FF000000000000000000000000000000000000000000000000000000000000
00000000000000000000459653FF419950FF7DC28FFF96D0A6FF96CFA6FF78BE
89FF368D42FF2C8134FF00000000000000000000000000000000000000000000
0000000000004D9C5DFF64B478FFA8DBB5FF87CC98FF66BC7DFF64BA7CFF86CB
98FFA5D9B4FF58AA6BFF2C8134FF000000000000000000000000000000000000
000056A366FF6AB97DFFA8DBB2FF60BC77FF5CBA73FF59B870FF59B56FFF58B5
6FFF5BB774FFA5D9B3FF5AAA6CFF2C8234FF0000000000000000000000000000
000053AB68FFAADDB4FF64C179FF5FBE71FF60BC77FFFFFFFFFFFFFFFFFF59B8
70FF58B56EFF5CB774FFA6DAB4FF388F43FF00000000000000000000000061AC
75FF8ACC98FF89D396FF6BC67AFF63C170FF55AB65FFFFFFFFFFFFFFFFFF59B8
70FF59B870FF5BB972FF85CC97FF7BBE8DFF308539FF000000000000000065AF
7AFFA9DDB3FF7DCF8AFF75CC81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF59B870FF67BE7DFF9CD4ABFF34883DFF000000000000000069B2
7EFFB6E2BEFF8BD597FF7AC986FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF59B870FF69C17EFF9DD4AAFF388B42FF00000000000000006DB5
83FFACDDB6FFA6DFAFFF81CB8CFF7CC986FF6EBD79FFFFFFFFFFFFFFFFFF5BAC
6AFF60BC77FF5CBA73FF8BD199FF80C592FF3C8E47FF00000000000000000000
000085C797FFD2EED7FF95D9A0FF8AD394FF7FC889FFFFFFFFFFFFFFFFFF79CD
85FF6BC37CFF6FC77EFFACDFB5FF459E57FF0000000000000000000000000000
000070B887FFAADAB7FFD8F1DCFF92D89DFF88CD93FF84CC8EFF8BD496FF8AD4
95FF83D28EFFAFE0B7FF6BB97DFF489856FF0000000000000000000000000000
00000000000070B887FFAFDCBBFFDCF2E0FFB6E4BDFF9BDBA5FF96D9A0FFA5DF
AFFFC0E8C5FF79C28AFF509E5FFF000000000000000000000000000000000000
0000000000000000000071B887FF94CEA4FFC3E6CBFFCFEBD4FFC9E9CEFFAFDD
B8FF6DB97FFF58A569FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000006EB684FF6AB380FF67B17CFF63AE
77FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
NumGlyphs = 0
OnClick = mnuAddRegionClick
ShowHint = True
ParentShowHint = False
end
object btnDeleteRegion: TSpeedButton
Left = 82
Height = 22
Hint = 'Delete region'
Top = 3
Width = 23
Color = clBtnFace
Enabled = False
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003853BEFF3551BDFF304BBCFF2E4E
B8FF000000000000000000000000000000000000000000000000000000000000
000000000000000000004255C6FF3C52CCFF757AE8FF8F92EEFF8F92EEFF7178
E4FF334DC1FF2B4AB7FF00000000000000000000000000000000000000000000
0000000000004959CBFF5C65E0FFA1A6F5FF7E86EFFF5B63E9FF595DE7FF7D84
EEFF9EA0F4FF515DD7FF2B4AB7FF000000000000000000000000000000000000
00005361CFFF616BE3FFA1ACF5FF545FECFF505CEAFF4D59E9FF4E59E6FF4C56
E6FF5056E6FF9EA2F4FF5460D6FF2A4AB8FF0000000000000000000000000000
00004B56DBFFA2ABF6FF5664F0FF5266EEFF4D59E9FF4D59E9FF4D59E9FF4D59
E9FF4C58E6FF525AE6FF9FA3F5FF3450C4FF0000000000000000000000005C62
D7FF818CEEFF7E91F7FF5D73F3FF4D59E9FF4D59E9FF4D59E9FF4D59E9FF4D59
E9FF4D59E9FF4F5BE9FF7B83F0FF757BE2FF2E4BBAFF00000000000000005F63
DAFFA1ABF7FF7086F8FF6882F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF4D59E9FF5C66EAFF969CF1FF3250BCFF00000000000000006469
DBFFAFB9F9FF7F93FAFF7085F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF4D59E9FF5E6AEEFF969DF1FF364FBEFF0000000000000000676A
DEFFA5AFF5FF9DABFAFF778CF0FF545FECFF545FECFF545FECFF545FECFF545F
ECFF545FECFF6377F2FF818EF4FF787FE9FF3A53C0FF00000000000000000000
00007D83EAFFCDD4FCFF8B9DFAFF7E93F7FF758AEEFF6C84F6FF6C84F6FF6C84
F6FF6C84F6FF6379F3FFA4AFF8FF3E4FD0FF0000000000000000000000000000
00006A69E0FFA3A7F3FFD4DBFDFF879AFAFF7F91F0FF7A8EF1FF7F94F8FF7E92
F9FF768CF8FFA8B6F8FF636EE3FF4557C7FF0000000000000000000000000000
0000000000006A69E0FFAAADF2FFD8DCFDFFAEBAFAFF91A3FAFF8B9DFAFF9CA9
FBFFBAC7FCFF707BE9FF4C5BCCFF000000000000000000000000000000000000
000000000000000000006A6ADFFF8E93EDFFBEC3F8FFCCD3F9FFC4CBF9FFAAB4
F4FF6670E2FF535ED1FF00000000000000000000000000000000000000000000
000000000000000000000000000000000000686ADDFF6364DCFF6164DAFF5D63
D9FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
NumGlyphs = 0
OnClick = mnuDeleteRegionClick
ShowHint = True
ParentShowHint = False
end
end
end
end
object Panel2: TPanel
Left = 160
Height = 380
Top = 0
Width = 460
Align = alClient
Caption = 'Panel2'
ClientHeight = 380
ClientWidth = 460
TabOrder = 1
object sbArea: TScrollBox
Left = 1
Height = 378
Top = 1
Width = 458
Align = alClient
ClientHeight = 374
ClientWidth = 454
TabOrder = 0
object pbArea: TPaintBox
Left = 0
Height = 105
Top = 0
Width = 105
OnMouseDown = pbAreaMouseDown
OnMouseMove = pbAreaMouseMove
OnPaint = pbAreaPaint
end
end
end
object Panel3: TPanel
Left = 4
Height = 25
Top = 384
Width = 612
Align = alBottom
BorderSpacing.Around = 4 BorderSpacing.Around = 4
BevelOuter = bvNone Color = clBtnFace
ClientHeight = 25
ClientWidth = 612
TabOrder = 2
object btnClose: TButton
Left = 548
Height = 25
Top = 0
Width = 64
Align = alRight
Anchors = [akTop, akRight]
BorderSpacing.Left = 4
Caption = 'Close'
OnClick = btnCloseClick
TabOrder = 0
end
object btnSave: TButton
Left = 480
Height = 25
Top = 0
Width = 64
Align = alRight
Anchors = [akTop, akRight]
BorderSpacing.Right = 4
Caption = 'Save'
Enabled = False Enabled = False
OnClick = btnSaveClick Glyph.Data = {
TabOrder = 1 36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007F7F7F067C7C
7CE6787878CC75757581FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008383835DAAAA
AAFFDBDBDBFF797979F275757506FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0097979709FFFFFF00FFFFFF00FFFFFF00888888E7DBDB
DBFFB7B7B7FF7D7D7D80FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF009C9C9CC99898981EFFFFFF0090909050ADADADFFF2F2
F2FF848484FD8181810FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00A0A0A0FF9C9C9CE798989836949494DFD9D9D9FFC1C1
C1FF898989A0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00A4A4A4FFD7D7D7FF9D9D9DF8D0D0D0FFEEEEEEFF9191
91FE8D8D8D18FFFFFF00FFFFFF00818181097E7E7E09FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00A9A9A9FFF2F2F2FFE5E5E5FFE2E2E2FFE3E3E3FF9595
95F4919191CC8D8D8DF9898989FF86868693FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00ADADADFFEEEEEEFFE1E1E1FFDFDFDFFFE0E0E0FFE7E7
E7FFE4E4E4FFBBBBBBFF8E8E8E93FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00B1B1B1FFF0F0F0FFE4E4E4FFE2E2E2FFE2E2E2FFE7E7
E7FFC1C1C1FF96969690FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00B5B5B5FFF2F2F2FFE8E8E8FFE7E7E7FFEAEAEAFFC6C6
C6FF9E9E9E8DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00B9B9B9FFF4F4F4FFECECECFFEDEDEDFFCBCBCBFFA7A7
A78AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00BDBDBDFFF7F7F7FFEFEFEFFFD0D0D0FFAFAFAF8AFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00C1C1C1FFF7F7F7FFD5D5D5FFB6B6B687FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00C4C4C4FFD9D9D9FFBEBEBE84FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00C8C8C8FFC5C5C581FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00CBCBCB7EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = btnGrab1Click
ShowHint = True
ParentShowHint = False
end end
object btnGrab2: TSpeedButton
AnchorSideLeft.Control = seY2
AnchorSideLeft.Side = asrCenter
AnchorSideBottom.Control = btnGrab1
AnchorSideBottom.Side = asrBottom
Left = 92
Height = 22
Hint = 'Grab coordinates from the main window.'
Top = 387
Width = 22
Anchors = [akLeft, akBottom]
Color = clBtnFace
Enabled = False
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007F7F7F067C7C
7CE6787878CC75757581FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008383835DAAAA
AAFFDBDBDBFF797979F275757506FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0097979709FFFFFF00FFFFFF00FFFFFF00888888E7DBDB
DBFFB7B7B7FF7D7D7D80FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF009C9C9CC99898981EFFFFFF0090909050ADADADFFF2F2
F2FF848484FD8181810FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00A0A0A0FF9C9C9CE798989836949494DFD9D9D9FFC1C1
C1FF898989A0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00A4A4A4FFD7D7D7FF9D9D9DF8D0D0D0FFEEEEEEFF9191
91FE8D8D8D18FFFFFF00FFFFFF00818181097E7E7E09FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00A9A9A9FFF2F2F2FFE5E5E5FFE2E2E2FFE3E3E3FF9595
95F4919191CC8D8D8DF9898989FF86868693FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00ADADADFFEEEEEEFFE1E1E1FFDFDFDFFFE0E0E0FFE7E7
E7FFE4E4E4FFBBBBBBFF8E8E8E93FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00B1B1B1FFF0F0F0FFE4E4E4FFE2E2E2FFE2E2E2FFE7E7
E7FFC1C1C1FF96969690FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00B5B5B5FFF2F2F2FFE8E8E8FFE7E7E7FFEAEAEAFFC6C6
C6FF9E9E9E8DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00B9B9B9FFF4F4F4FFECECECFFEDEDEDFFCBCBCBFFA7A7
A78AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00BDBDBDFFF7F7F7FFEFEFEFFFD0D0D0FFAFAFAF8AFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00C1C1C1FFF7F7F7FFD5D5D5FFB6B6B687FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00C4C4C4FFD9D9D9FFBEBEBE84FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00C8C8C8FFC5C5C581FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00CBCBCB7EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = btnGrab1Click
ShowHint = True
ParentShowHint = False
end end
object pmRegions: TPopupMenu object pmRegions: TPopupMenu
left = 48 left = 48

View File

@ -21,7 +21,7 @@
* CDDL HEADER END * CDDL HEADER END
* *
* *
* Portions Copyright 2008 Andreas Schneider * Portions Copyright 2009 Andreas Schneider
*) *)
unit UfrmRegionControl; unit UfrmRegionControl;
@ -32,7 +32,7 @@ interface
uses uses
Classes, SysUtils, math, LResources, Forms, Controls, Graphics, Dialogs, Classes, SysUtils, math, LResources, Forms, Controls, Graphics, Dialogs,
VirtualTrees, ExtCtrls, ImagingComponents, StdCtrls, Buttons, Spin, LCLIntf, VirtualTrees, ExtCtrls, ImagingComponents, StdCtrls, Buttons, Spin, LCLIntf,
UEnhancedMemoryStream, Menus, URectList, UEnums; UEnhancedMemoryStream, Menus, URectList, UEnums, UWorldItem;
type type
TAreaMoveType = (amLeft, amTop, amRight, amBottom); TAreaMoveType = (amLeft, amTop, amRight, amBottom);
@ -54,32 +54,28 @@ type
btnAddArea: TSpeedButton; btnAddArea: TSpeedButton;
btnAddRegion: TSpeedButton; btnAddRegion: TSpeedButton;
btnClearArea: TSpeedButton; btnClearArea: TSpeedButton;
btnDeleteArea: TSpeedButton;
btnClose: TButton; btnClose: TButton;
btnDeleteArea: TSpeedButton;
btnDeleteRegion: TSpeedButton; btnDeleteRegion: TSpeedButton;
btnSave: TButton; btnSave: TButton;
Label1: TLabel; Label1: TLabel;
lblX: TLabel; lblX: TLabel;
lblY: TLabel; lblY: TLabel;
mnuAddRegion: TMenuItem; mnuAddRegion: TMenuItem;
mnuDeleteRegion: TMenuItem; mnuDeleteRegion: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
pbArea: TPaintBox; pbArea: TPaintBox;
pnlAreaControls: TPanel;
pmRegions: TPopupMenu; pmRegions: TPopupMenu;
sbArea: TScrollBox; sbArea: TScrollBox;
seX1: TSpinEdit; seX1: TSpinEdit;
seX2: TSpinEdit; seX2: TSpinEdit;
seY1: TSpinEdit; seY1: TSpinEdit;
seY2: TSpinEdit; seY2: TSpinEdit;
btnGrab1: TSpeedButton;
btnGrab2: TSpeedButton;
spRegionsArea: TSplitter; spRegionsArea: TSplitter;
vstArea: TVirtualStringTree; vstArea: TVirtualStringTree;
vstRegions: TVirtualStringTree; vstRegions: TVirtualStringTree;
procedure btnGrab1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure mnuAddRegionClick(Sender: TObject); procedure mnuAddRegionClick(Sender: TObject);
procedure mnuDeleteRegionClick(Sender: TObject); procedure mnuDeleteRegionClick(Sender: TObject);
@ -93,8 +89,8 @@ type
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure pbAreaMouseDown(Sender: TObject; Button: TMouseButton; procedure pbAreaMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure pbAreaMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer procedure pbAreaMouseMove(Sender: TObject; Shift: TShiftState; X,
); Y: Integer);
procedure pbAreaPaint(Sender: TObject); procedure pbAreaPaint(Sender: TObject);
procedure seX1Change(Sender: TObject); procedure seX1Change(Sender: TObject);
procedure vstAreaChange(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure vstAreaChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
@ -112,12 +108,15 @@ type
FOnRegionModified: TRegionModifiedEvent; FOnRegionModified: TRegionModifiedEvent;
FOnRegionDeleted: TRegionDeletedEvent; FOnRegionDeleted: TRegionDeletedEvent;
FOnRegionList: TRegionListEvent; FOnRegionList: TRegionListEvent;
FSelectFirst: Boolean;
FOldWindowState: TWindowState;
function FindRegion(AName: string): PVirtualNode; function FindRegion(AName: string): PVirtualNode;
procedure CheckUnsaved; procedure CheckUnsaved;
procedure OnModifyRegionPacket(ABuffer: TEnhancedMemoryStream); procedure OnModifyRegionPacket(ABuffer: TEnhancedMemoryStream);
procedure OnDeleteRegionPacket(ABuffer: TEnhancedMemoryStream); procedure OnDeleteRegionPacket(ABuffer: TEnhancedMemoryStream);
procedure OnListRegionsPacket(ABuffer: TEnhancedMemoryStream); procedure OnListRegionsPacket(ABuffer: TEnhancedMemoryStream);
procedure OnAccessChanged(AAccessLevel: TAccessLevel); procedure OnAccessChanged(AAccessLevel: TAccessLevel);
procedure TileSelected(AWorldItem: TWorldItem);
public public
property OnRegionModified: TRegionModifiedEvent read FOnRegionModified write FOnRegionModified; property OnRegionModified: TRegionModifiedEvent read FOnRegionModified write FOnRegionModified;
property OnRegionDeleted: TRegionDeletedEvent read FOnRegionDeleted write FOnRegionDeleted; property OnRegionDeleted: TRegionDeletedEvent read FOnRegionDeleted write FOnRegionDeleted;
@ -221,9 +220,9 @@ end;
procedure TfrmRegionControl.FormDestroy(Sender: TObject); procedure TfrmRegionControl.FormDestroy(Sender: TObject);
begin begin
frmRadarMap.Dependencies.Remove(pbArea); frmRadarMap.Dependencies.Remove(pbArea);
if AdminPacketHandlers[$08] <> nil then FreeAndNil(AdminPacketHandlers[$08]); FreeAndNil(AdminPacketHandlers[$08]);
if AdminPacketHandlers[$09] <> nil then FreeAndNil(AdminPacketHandlers[$09]); FreeAndNil(AdminPacketHandlers[$09]);
if AdminPacketHandlers[$0A] <> nil then FreeAndNil(AdminPacketHandlers[$0A]); FreeAndNil(AdminPacketHandlers[$0A]);
end; end;
procedure TfrmRegionControl.FormShow(Sender: TObject); procedure TfrmRegionControl.FormShow(Sender: TObject);
@ -302,6 +301,15 @@ begin
CheckUnsaved; CheckUnsaved;
end; end;
procedure TfrmRegionControl.btnGrab1Click(Sender: TObject);
begin
FSelectFirst := (Sender = btnGrab1);
frmMain.RegisterSelectionListener(@TileSelected);
FOldWindowState := WindowState;
WindowState := wsMinimized;
frmMain.SwitchToSelection;
end;
procedure TfrmRegionControl.mnuDeleteRegionClick(Sender: TObject); procedure TfrmRegionControl.mnuDeleteRegionClick(Sender: TObject);
var var
regionNode: PVirtualNode; regionNode: PVirtualNode;
@ -481,6 +489,8 @@ begin
seX2.Enabled := selected; seX2.Enabled := selected;
seY1.Enabled := selected; seY1.Enabled := selected;
seY2.Enabled := selected; seY2.Enabled := selected;
btnGrab1.Enabled := selected;
btnGrab2.Enabled := selected;
if selected then if selected then
begin begin
areaInfo := Sender.GetNodeData(Node); areaInfo := Sender.GetNodeData(Node);
@ -708,6 +718,22 @@ begin
dmNetwork.Send(TRequestRegionListPacket.Create); dmNetwork.Send(TRequestRegionListPacket.Create);
end; end;
procedure TfrmRegionControl.TileSelected(AWorldItem: TWorldItem);
begin
if FSelectFirst then
begin
seX1.Value := AWorldItem.X;
seY1.Value := AWorldItem.Y;
end else
begin
seX2.Value := AWorldItem.X;
seY2.Value := AWorldItem.Y;
end;
frmMain.UnregisterSelectionListener(@TileSelected);
WindowState := FOldWindowState;
seX1Change(nil);
end;
initialization initialization
{$I UfrmRegionControl.lrs} {$I UfrmRegionControl.lrs}