LazMapViewer: Combine the units of the two fulldemo projects.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@9326 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
d7ebdbad20
commit
20997f05cc
547
components/lazmapviewer/examples/fulldemo/configframe.lfm
Normal file
547
components/lazmapviewer/examples/fulldemo/configframe.lfm
Normal file
@ -0,0 +1,547 @@
|
|||||||
|
object CfgFrame: TCfgFrame
|
||||||
|
Left = 0
|
||||||
|
Height = 682
|
||||||
|
Top = 0
|
||||||
|
Width = 287
|
||||||
|
ClientHeight = 682
|
||||||
|
ClientWidth = 287
|
||||||
|
TabOrder = 0
|
||||||
|
DesignLeft = 1150
|
||||||
|
DesignTop = 210
|
||||||
|
object LblProviders: TLabel
|
||||||
|
AnchorSideLeft.Control = cmbProviders
|
||||||
|
AnchorSideTop.Control = Owner
|
||||||
|
Left = 4
|
||||||
|
Height = 15
|
||||||
|
Top = 8
|
||||||
|
Width = 52
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'Providers:'
|
||||||
|
FocusControl = cmbProviders
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object cmbProviders: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = LblProviders
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = btnLoadMapProviders
|
||||||
|
Left = 4
|
||||||
|
Height = 23
|
||||||
|
Top = 25
|
||||||
|
Width = 213
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 4
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
BorderSpacing.Right = 2
|
||||||
|
DropDownCount = 24
|
||||||
|
ItemHeight = 15
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 0
|
||||||
|
OnChange = cmbProvidersChange
|
||||||
|
end
|
||||||
|
object btnLoadMapProviders: TSpeedButton
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = cmbProviders
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = btnSaveMapProviders
|
||||||
|
Left = 219
|
||||||
|
Height = 28
|
||||||
|
Top = 22
|
||||||
|
Width = 30
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 2
|
||||||
|
Glyph.Data = {
|
||||||
|
36040000424D3604000000000000360000002800000010000000100000000100
|
||||||
|
2000000000000004000064000000640000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000003591
|
||||||
|
DBFA439FDDFA439FDDFA429FDDFA429EDDFA419EDCFA419EDCFA419EDCFA419E
|
||||||
|
DCFA419EDCFA419EDCFA419EDCFA3792DAFB3080DF100000000000000000429C
|
||||||
|
DEF76EC7EBFF6DC7EAFF6BC6EAFF6AC5E9FF68C4E9FF67C3E8FF65C2E8FF64C1
|
||||||
|
E7FF63C0E7FF61BFE6FF60BEE5FF51AFE3FE308CD6450000000000000000409A
|
||||||
|
DDF47CD0F1FF7BD0F0FF7ACFEFFF79CEEFFF77CDEEFF76CCEEFF74CBEDFF73CA
|
||||||
|
EDFF71C9ECFF70C8ECFF6EC7EBFF6AC3E9FF3993DB8E00000000000000003E99
|
||||||
|
DCEC7ECEF1FF8AD9F6FF89D8F5FF87D7F4FF86D6F4FF84D5F3FF83D5F3FF81D4
|
||||||
|
F2FF80D3F2FF7ED2F1FF7DD1F1FF7BD0F0FF439ADEB40000000000000000409B
|
||||||
|
DDE470C1EDFF99E2FBFF97E2FBFF96E1FAFF94E0F9FF93DFF9FF91DEF8FF90DD
|
||||||
|
F8FF8EDCF7FF8DDBF7FF8CDAF6FF8AD9F6FF4EA4E2CD00000000000000004AA5
|
||||||
|
E0DF61B3E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA2E8FEFFA0E7FEFF9FE6
|
||||||
|
FDFF9DE5FDFF9CE4FCFF9AE3FCFF99E2FBFF5FB3E9E33080DF100000000051A8
|
||||||
|
E2DF5EB2E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9
|
||||||
|
FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFF84CFF5FB348CDA450000000058AD
|
||||||
|
E5DF60B3E8FF61B3E9FF61B3E9FF60B2E9FF60B2E8FF60B2E8FF5FB1E8FF5FB1
|
||||||
|
E8FF5EB1E8FF5EB1E8FF5EB1E7FF59ADE7FB55A9E5E33B94DC85000000005FB0
|
||||||
|
E8DF9DE4FBFF9AE3FAFF97E1F9FF94DFF8FF91DDF7FF8EDBF5FF8BD9F4FF88D8
|
||||||
|
F3FF85D6F2FF82D4F1FF7FD2F0FF4FA7E1DF00000000000000000000000061B1
|
||||||
|
E8DFA6EAFFFFA6EAFFFFA6EAFFFFA3E8FEFF7AC6F1ED59ACE6DF58AAE5DF57AA
|
||||||
|
E5DF56AAE5DF53A9E4DF53A8E4DF3C94DCE20000000000000000000000004096
|
||||||
|
DEE25DAEE7DF5DAEE7DF5DAEE7DF57A9E6DF4399DF6E00000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000
|
||||||
|
}
|
||||||
|
OnClick = btnLoadMapProvidersClick
|
||||||
|
end
|
||||||
|
object btnSaveMapProviders: TSpeedButton
|
||||||
|
AnchorSideLeft.Control = btnLoadMapProviders
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = cmbProviders
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 251
|
||||||
|
Height = 28
|
||||||
|
Top = 22
|
||||||
|
Width = 32
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 4
|
||||||
|
Glyph.Data = {
|
||||||
|
36040000424D3604000000000000360000002800000010000000100000000100
|
||||||
|
2000000000000004000064000000640000000000000000000000A4653455A465
|
||||||
|
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||||
|
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||||
|
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||||
|
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||||
|
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||||
|
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||||
|
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||||
|
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||||
|
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||||
|
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||||
|
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||||
|
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||||
|
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
||||||
|
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||||
|
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
||||||
|
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||||
|
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FF5959
|
||||||
|
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
||||||
|
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000A46534FF5959
|
||||||
|
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
||||||
|
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000
|
||||||
|
}
|
||||||
|
OnClick = btnSaveMapProvidersClick
|
||||||
|
end
|
||||||
|
object gbProxy: TGroupBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = cmbProviders
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 185
|
||||||
|
Top = 56
|
||||||
|
Width = 279
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
BorderSpacing.Around = 4
|
||||||
|
Caption = 'Proxy'
|
||||||
|
ClientHeight = 165
|
||||||
|
ClientWidth = 275
|
||||||
|
TabOrder = 1
|
||||||
|
object lblProxyHost: TLabel
|
||||||
|
AnchorSideLeft.Control = rbNoProxy
|
||||||
|
AnchorSideTop.Control = edProxyHost
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 20
|
||||||
|
Height = 15
|
||||||
|
Top = 65
|
||||||
|
Width = 28
|
||||||
|
BorderSpacing.Left = 10
|
||||||
|
Caption = 'Host:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object edProxyHost: TEdit
|
||||||
|
AnchorSideLeft.Control = edProxyUserName
|
||||||
|
AnchorSideTop.Control = rbProxyData
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = gbProxy
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 85
|
||||||
|
Height = 23
|
||||||
|
Top = 61
|
||||||
|
Width = 184
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object lblProxyPort: TLabel
|
||||||
|
AnchorSideLeft.Control = lblProxyHost
|
||||||
|
AnchorSideTop.Control = seProxyPort
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 20
|
||||||
|
Height = 15
|
||||||
|
Top = 90
|
||||||
|
Width = 22
|
||||||
|
Caption = 'Port'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object seProxyPort: TSpinEdit
|
||||||
|
AnchorSideLeft.Control = lblProxyUserName
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = edProxyHost
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 85
|
||||||
|
Height = 23
|
||||||
|
Top = 86
|
||||||
|
Width = 70
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
MaxValue = 65535
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object lblProxyUserName: TLabel
|
||||||
|
AnchorSideLeft.Control = lblProxyHost
|
||||||
|
AnchorSideTop.Control = edProxyUserName
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 20
|
||||||
|
Height = 15
|
||||||
|
Top = 115
|
||||||
|
Width = 59
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
Caption = 'User name:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object edProxyUserName: TEdit
|
||||||
|
AnchorSideLeft.Control = lblProxyUserName
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = seProxyPort
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = gbProxy
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 85
|
||||||
|
Height = 23
|
||||||
|
Top = 111
|
||||||
|
Width = 184
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
|
object lblProxyPassword: TLabel
|
||||||
|
AnchorSideLeft.Control = lblProxyHost
|
||||||
|
AnchorSideTop.Control = edProxyPassword
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 20
|
||||||
|
Height = 15
|
||||||
|
Top = 140
|
||||||
|
Width = 50
|
||||||
|
Caption = 'Password'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object edProxyPassword: TEdit
|
||||||
|
AnchorSideLeft.Control = edProxyUserName
|
||||||
|
AnchorSideTop.Control = edProxyUserName
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = gbProxy
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 85
|
||||||
|
Height = 23
|
||||||
|
Top = 136
|
||||||
|
Width = 184
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
BorderSpacing.Bottom = 6
|
||||||
|
TabOrder = 6
|
||||||
|
end
|
||||||
|
object rbProxyData: TRadioButton
|
||||||
|
AnchorSideLeft.Control = rbNoProxy
|
||||||
|
AnchorSideTop.Control = rbSystemProxy
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 10
|
||||||
|
Height = 19
|
||||||
|
Top = 42
|
||||||
|
Width = 74
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
Caption = 'Proxy data'
|
||||||
|
TabOrder = 2
|
||||||
|
OnChange = rbProxyDataChange
|
||||||
|
end
|
||||||
|
object rbNoProxy: TRadioButton
|
||||||
|
AnchorSideLeft.Control = gbProxy
|
||||||
|
AnchorSideTop.Control = gbProxy
|
||||||
|
Left = 10
|
||||||
|
Height = 19
|
||||||
|
Top = 0
|
||||||
|
Width = 67
|
||||||
|
BorderSpacing.Left = 10
|
||||||
|
Caption = 'No proxy'
|
||||||
|
TabOrder = 0
|
||||||
|
OnChange = rbNoProxyChange
|
||||||
|
end
|
||||||
|
object rbSystemProxy: TRadioButton
|
||||||
|
AnchorSideLeft.Control = rbNoProxy
|
||||||
|
AnchorSideTop.Control = rbNoProxy
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 10
|
||||||
|
Height = 19
|
||||||
|
Top = 21
|
||||||
|
Width = 110
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
Caption = 'Use system proxy'
|
||||||
|
Checked = True
|
||||||
|
TabOrder = 1
|
||||||
|
TabStop = True
|
||||||
|
OnChange = rbSystemProxyChange
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object cbZoomToCursor: TCheckBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = gbProxy
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 19
|
||||||
|
Top = 249
|
||||||
|
Width = 100
|
||||||
|
BorderSpacing.Left = 4
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
BorderSpacing.Right = 16
|
||||||
|
Caption = 'Zoom to cursor'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 2
|
||||||
|
OnChange = cbZoomToCursorChange
|
||||||
|
end
|
||||||
|
object cbUseThreads: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbZoomToCursor
|
||||||
|
AnchorSideTop.Control = cbZoomToCursor
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 19
|
||||||
|
Top = 272
|
||||||
|
Width = 79
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
Caption = 'Use threads'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 3
|
||||||
|
OnChange = cbUseThreadsChange
|
||||||
|
end
|
||||||
|
object cbDoubleBuffer: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbUseThreads
|
||||||
|
AnchorSideTop.Control = cbUseThreads
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 19
|
||||||
|
Top = 295
|
||||||
|
Width = 85
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
Caption = 'DblBuffering'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 4
|
||||||
|
OnChange = cbDoubleBufferChange
|
||||||
|
end
|
||||||
|
object cbDebugTiles: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbDoubleBuffer
|
||||||
|
AnchorSideTop.Control = cbDoubleBuffer
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 19
|
||||||
|
Top = 318
|
||||||
|
Width = 77
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
Caption = 'Debug tiles'
|
||||||
|
TabOrder = 5
|
||||||
|
OnChange = cbDebugTilesChange
|
||||||
|
end
|
||||||
|
object cbCyclicView: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbZoomToCursor
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = cbZoomToCursor
|
||||||
|
Left = 120
|
||||||
|
Height = 19
|
||||||
|
Top = 249
|
||||||
|
Width = 77
|
||||||
|
Caption = 'Cyclic view'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 6
|
||||||
|
OnChange = cbCyclicViewChange
|
||||||
|
end
|
||||||
|
object cbPreviewTiles: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbCyclicView
|
||||||
|
AnchorSideTop.Control = cbUseThreads
|
||||||
|
Left = 120
|
||||||
|
Height = 19
|
||||||
|
Top = 272
|
||||||
|
Width = 83
|
||||||
|
Caption = 'Preview tiles'
|
||||||
|
Checked = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 7
|
||||||
|
OnChange = cbPreviewTilesChange
|
||||||
|
end
|
||||||
|
object clbBackColor: TColorButton
|
||||||
|
AnchorSideLeft.Control = cbCyclicView
|
||||||
|
AnchorSideTop.Control = cbDoubleBuffer
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 120
|
||||||
|
Height = 28
|
||||||
|
Top = 290
|
||||||
|
Width = 108
|
||||||
|
BorderWidth = 2
|
||||||
|
ButtonColorAutoSize = False
|
||||||
|
ButtonColorSize = 15
|
||||||
|
ButtonColor = clWhite
|
||||||
|
Caption = 'Map backgr.'
|
||||||
|
Margin = 4
|
||||||
|
OnColorChanged = clbBackColorColorChanged
|
||||||
|
end
|
||||||
|
object Bevel1: TBevel
|
||||||
|
AnchorSideLeft.Control = cbDebugTiles
|
||||||
|
AnchorSideTop.Control = cbDebugTiles
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 2
|
||||||
|
Top = 343
|
||||||
|
Width = 257
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
Shape = bsTopLine
|
||||||
|
end
|
||||||
|
object rgPOIMode: TRadioGroup
|
||||||
|
AnchorSideLeft.Control = cmbProviders
|
||||||
|
AnchorSideTop.Control = Bevel1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 128
|
||||||
|
Top = 351
|
||||||
|
Width = 279
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoFill = False
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Right = 4
|
||||||
|
Caption = 'POI Mode'
|
||||||
|
ChildSizing.LeftRightSpacing = 12
|
||||||
|
ChildSizing.TopBottomSpacing = 4
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||||
|
ChildSizing.ControlsPerLine = 4
|
||||||
|
ClientHeight = 108
|
||||||
|
ClientWidth = 275
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'default drawing'
|
||||||
|
'default POI image'
|
||||||
|
'image from imagelist'
|
||||||
|
'custom drawing'
|
||||||
|
)
|
||||||
|
TabOrder = 8
|
||||||
|
OnClick = rgPOIModeClick
|
||||||
|
object Bevel3: TBevel
|
||||||
|
Left = 151
|
||||||
|
Height = 25
|
||||||
|
Top = 4
|
||||||
|
Width = 66
|
||||||
|
Constraints.MaxHeight = 25
|
||||||
|
Shape = bsSpacer
|
||||||
|
end
|
||||||
|
object btnSelectPOIImage: TButton
|
||||||
|
Left = 151
|
||||||
|
Height = 25
|
||||||
|
Top = 29
|
||||||
|
Width = 66
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
Caption = 'Select...'
|
||||||
|
Enabled = False
|
||||||
|
TabOrder = 4
|
||||||
|
OnClick = btnSelectPOIImageClick
|
||||||
|
end
|
||||||
|
object Bevel4: TBevel
|
||||||
|
Left = 151
|
||||||
|
Height = 25
|
||||||
|
Top = 54
|
||||||
|
Width = 66
|
||||||
|
Constraints.MaxHeight = 25
|
||||||
|
Shape = bsSpacer
|
||||||
|
end
|
||||||
|
object Bevel5: TBevel
|
||||||
|
Left = 151
|
||||||
|
Height = 25
|
||||||
|
Top = 79
|
||||||
|
Width = 66
|
||||||
|
Constraints.MaxHeight = 25
|
||||||
|
Shape = bsSpacer
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object btnPOITextFont: TButton
|
||||||
|
AnchorSideLeft.Control = rgPOIMode
|
||||||
|
AnchorSideTop.Control = rgPOIMode
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 4
|
||||||
|
Height = 30
|
||||||
|
Top = 487
|
||||||
|
Width = 87
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'POI text font'
|
||||||
|
TabOrder = 9
|
||||||
|
OnClick = btnPOITextFontClick
|
||||||
|
end
|
||||||
|
object LblPOITextBgColor: TLabel
|
||||||
|
AnchorSideLeft.Control = btnPOITextFont
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = btnPOITextFont
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 97
|
||||||
|
Height = 15
|
||||||
|
Top = 495
|
||||||
|
Width = 39
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
Caption = 'Backgr.'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object cbPOITextBgColor: TColorBox
|
||||||
|
AnchorSideLeft.Control = LblPOITextBgColor
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = btnPOITextFont
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = rgPOIMode
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 142
|
||||||
|
Height = 21
|
||||||
|
Top = 492
|
||||||
|
Width = 141
|
||||||
|
NoneColorColor = clWhite
|
||||||
|
Style = [cbStandardColors, cbExtendedColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors]
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
ItemHeight = 15
|
||||||
|
TabOrder = 10
|
||||||
|
OnChange = cbPOITextBgColorChange
|
||||||
|
end
|
||||||
|
object OpenPictureDialog: TOpenPictureDialog
|
||||||
|
Left = 184
|
||||||
|
Top = 344
|
||||||
|
end
|
||||||
|
object FontDialog: TFontDialog
|
||||||
|
MinFontSize = 0
|
||||||
|
MaxFontSize = 0
|
||||||
|
Left = 40
|
||||||
|
Top = 528
|
||||||
|
end
|
||||||
|
end
|
359
components/lazmapviewer/examples/fulldemo/configframe.pas
Normal file
359
components/lazmapviewer/examples/fulldemo/configframe.pas
Normal file
@ -0,0 +1,359 @@
|
|||||||
|
unit ConfigFrame;
|
||||||
|
|
||||||
|
{$mode ObjFPC}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, IniFiles,
|
||||||
|
Graphics,
|
||||||
|
Forms, Controls, StdCtrls, Buttons, Dialogs, ExtCtrls, ColorBox, ExtDlgs, Spin,
|
||||||
|
mvMapViewer, mvEngine,
|
||||||
|
globals;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ TCfgFrame }
|
||||||
|
|
||||||
|
TCfgFrame = class(TFrame)
|
||||||
|
Bevel1: TBevel;
|
||||||
|
Bevel3: TBevel;
|
||||||
|
Bevel4: TBevel;
|
||||||
|
Bevel5: TBevel;
|
||||||
|
btnLoadMapProviders: TSpeedButton;
|
||||||
|
btnPOITextFont: TButton;
|
||||||
|
btnSaveMapProviders: TSpeedButton;
|
||||||
|
btnSelectPOIImage: TButton;
|
||||||
|
cbCyclicView: TCheckBox;
|
||||||
|
cbDebugTiles: TCheckBox;
|
||||||
|
cbDoubleBuffer: TCheckBox;
|
||||||
|
cbPOITextBgColor: TColorBox;
|
||||||
|
cbPreviewTiles: TCheckBox;
|
||||||
|
cmbProviders: TComboBox;
|
||||||
|
cbUseThreads: TCheckBox;
|
||||||
|
cbZoomToCursor: TCheckBox;
|
||||||
|
clbBackColor: TColorButton;
|
||||||
|
edProxyHost: TEdit;
|
||||||
|
edProxyPassword: TEdit;
|
||||||
|
edProxyUserName: TEdit;
|
||||||
|
FontDialog: TFontDialog;
|
||||||
|
gbProxy: TGroupBox;
|
||||||
|
LblPOITextBgColor: TLabel;
|
||||||
|
LblProviders: TLabel;
|
||||||
|
lblProxyHost: TLabel;
|
||||||
|
lblProxyPassword: TLabel;
|
||||||
|
lblProxyPort: TLabel;
|
||||||
|
lblProxyUserName: TLabel;
|
||||||
|
OpenPictureDialog: TOpenPictureDialog;
|
||||||
|
rbNoProxy: TRadioButton;
|
||||||
|
rbProxyData: TRadioButton;
|
||||||
|
rbSystemProxy: TRadioButton;
|
||||||
|
rgPOIMode: TRadioGroup;
|
||||||
|
seProxyPort: TSpinEdit;
|
||||||
|
procedure btnLoadMapProvidersClick(Sender: TObject);
|
||||||
|
procedure btnPOITextFontClick(Sender: TObject);
|
||||||
|
procedure btnSaveMapProvidersClick(Sender: TObject);
|
||||||
|
procedure btnSelectPOIImageClick(Sender: TObject);
|
||||||
|
procedure cbCyclicViewChange(Sender: TObject);
|
||||||
|
procedure cbDebugTilesChange(Sender: TObject);
|
||||||
|
procedure cbDoubleBufferChange(Sender: TObject);
|
||||||
|
procedure cbPOITextBgColorChange(Sender: TObject);
|
||||||
|
procedure cbPreviewTilesChange(Sender: TObject);
|
||||||
|
procedure cbUseThreadsChange(Sender: TObject);
|
||||||
|
procedure cbZoomToCursorChange(Sender: TObject);
|
||||||
|
procedure clbBackColorColorChanged(Sender: TObject);
|
||||||
|
procedure cmbProvidersChange(Sender: TObject);
|
||||||
|
procedure rbNoProxyChange(Sender: TObject);
|
||||||
|
procedure rgPOIModeClick(Sender: TObject);
|
||||||
|
procedure rbProxyDataChange(Sender: TObject);
|
||||||
|
procedure rbSystemProxyChange(Sender: TObject);
|
||||||
|
private
|
||||||
|
FMapView: TMapView;
|
||||||
|
FPOIImage: TCustomBitmap;
|
||||||
|
FDrawGPSPointEvent: TDrawGpsPointEvent;
|
||||||
|
FUpdateLayersEvent: TNotifyEvent;
|
||||||
|
function GetMapProviders: TStrings;
|
||||||
|
function GetPOIMode: TPOIMode;
|
||||||
|
function GetPOITextBkColor: TColor;
|
||||||
|
procedure SetMapView(AValue: TMapView);
|
||||||
|
protected
|
||||||
|
procedure DoUpdateLayers; virtual;
|
||||||
|
procedure UpdateDownloadEngineProxy;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
procedure ReadFromIni(ini: TCustomIniFile); virtual;
|
||||||
|
procedure WriteToIni(ini: TCustomIniFile); virtual;
|
||||||
|
|
||||||
|
property MapView: TMapView read FMapView write SetMapView;
|
||||||
|
property MapProviders: TStrings read GetMapProviders;
|
||||||
|
property POIMode: TPOIMode read GetPOIMode;
|
||||||
|
property POITextBkColor: TColor read GetPOITextBkColor;
|
||||||
|
property OnDrawGPSPoint: TDrawGpsPointEvent read FDrawGPSPointEvent write FDrawGPSPointEvent;
|
||||||
|
property OnUpdateLayers: TNotifyEvent read FUpdateLayersEvent write FUpdateLayersEvent;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
{ TCfgFrame }
|
||||||
|
|
||||||
|
constructor TCfgFrame.Create(AOwner: TComponent);
|
||||||
|
var
|
||||||
|
fn: String;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
|
||||||
|
fn := Application.Location + 'mapmarker.png';
|
||||||
|
if not FileExists(fn) then
|
||||||
|
MessageDlg('Copy the file "mapmarker.png" from the source folder to the folder with the executable.',
|
||||||
|
mtError, [mbOK], 0)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
FPOIImage := TPortableNetworkGraphic.Create;
|
||||||
|
FPOIImage.PixelFormat := pf32bit;
|
||||||
|
FPOIImage.LoadFromFile(fn);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TCfgFrame.Destroy;
|
||||||
|
begin
|
||||||
|
FPOIImage.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.btnLoadMapProvidersClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
fn: String;
|
||||||
|
msg: String;
|
||||||
|
begin
|
||||||
|
fn := Application.Location + MAP_PROVIDER_FILENAME;
|
||||||
|
if FileExists(fn) then begin
|
||||||
|
if MapView.Engine.ReadProvidersFromXML(fn, msg) then begin
|
||||||
|
MapView.GetMapProviders(cmbProviders.Items);
|
||||||
|
cmbProviders.ItemIndex := 0;
|
||||||
|
MapView.MapProvider := cmbProviders.Text;
|
||||||
|
// sgLayers.Columns[1].PickList.Assign(cmbProviders.Items); // <<--- FIXME
|
||||||
|
end else
|
||||||
|
ShowMessage(msg);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.btnPOITextFontClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FontDialog.Font.Assign(MapView.Font);
|
||||||
|
if FontDialog.Execute then
|
||||||
|
MapView.Font.Assign(FontDialog.Font);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.btnSaveMapProvidersClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.Engine.WriteProvidersToXML(Application.Location + MAP_PROVIDER_FILENAME);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.btnSelectPOIImageClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
OpenPictureDialog.Filter := 'PNG files|*.png|BMP files|*.bmp';
|
||||||
|
OpenPictureDialog.DefaultExt := '.png';
|
||||||
|
if OpenPictureDialog.Execute then
|
||||||
|
begin
|
||||||
|
FPOIImage.LoadFromFile(OpenPictureDialog.FileName);
|
||||||
|
MapView.POIImage.Assign(FPOIImage);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cbCyclicViewChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.Cyclic := cbCyclicView.Checked;
|
||||||
|
DoUpdateLayers;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cbDebugTilesChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.DebugTiles := CbDebugTiles.Checked;
|
||||||
|
MapView.Invalidate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cbDoubleBufferChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.DoubleBuffered := cbDoubleBuffer.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cbPOITextBgColorChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.POITextBgColor := cbPOITextBgColor.Selected;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cbPreviewTilesChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.DrawPreviewTiles := cbPreviewTiles.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cbUseThreadsChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.UseThreads := cbUseThreads.Checked;
|
||||||
|
DoUpdateLayers;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.clbBackColorColorChanged(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.InactiveColor := clbBackColor.ButtonColor;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cbZoomToCursorChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.ZoomToCursor := CbZoomToCursor.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.cmbProvidersChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MapView.MapProvider := cmbProviders.Text;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.DoUpdateLayers;
|
||||||
|
begin
|
||||||
|
if Assigned(FUpdateLayersEvent) then
|
||||||
|
FUpdateLayersEvent(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCfgFrame.GetMapProviders: TStrings;
|
||||||
|
begin
|
||||||
|
Result := cmbProviders.Items;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCfgFrame.GetPOIMode: TPOIMode;
|
||||||
|
begin
|
||||||
|
Result := TPOIMode(rgPOIMode.ItemIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCfgFrame.GetPOITextBkColor: TColor;
|
||||||
|
begin
|
||||||
|
Result := cbPOITextBgColor.Selected;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.ReadFromIni(ini: TCustomIniFile);
|
||||||
|
var
|
||||||
|
n: Integer;
|
||||||
|
s: String;
|
||||||
|
begin
|
||||||
|
n := ini.ReadInteger('Proxy', 'UseProxy', 0);
|
||||||
|
case n of
|
||||||
|
0: rbNoProxy.Checked := true;
|
||||||
|
1: rbSystemProxy.Checked := true;
|
||||||
|
2: rbProxyData.Checked := true;
|
||||||
|
end;
|
||||||
|
edProxyHost.Text := ini.ReadString('Proxy', 'ProxyHost', edProxyHost.Text);
|
||||||
|
seProxyPort.Value := ini.ReadInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
||||||
|
edProxyUserName.Text := ini.ReadString('Proxy', 'ProxyName', edProxyUserName.Text);
|
||||||
|
edProxyPassword.Text := ini.ReadString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
||||||
|
|
||||||
|
UpdateDownloadEngineProxy;
|
||||||
|
|
||||||
|
// The following parameters already have been read by the main form,
|
||||||
|
// we still must update the frame controls.
|
||||||
|
MapView.GetMapProviders(cmbProviders.Items);
|
||||||
|
cmbProviders.ItemIndex := cmbProviders.Items.IndexOf(MapView.MapProvider);
|
||||||
|
clbBackColor.ButtonColor := MapView.InactiveColor;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.rbNoProxyChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
UpdateDownloadEngineProxy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.rbProxyDataChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
UpdateDownloadEngineProxy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.rbSystemProxyChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
UpdateDownloadEngineProxy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.rgPOIModeClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
case rgPOIMode.ItemIndex of
|
||||||
|
0: begin // default symbol
|
||||||
|
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
||||||
|
MapView.OnDrawGPSPoint := nil;
|
||||||
|
end;
|
||||||
|
1: begin // default POI image
|
||||||
|
MapView.POIImage := FPOIImage;
|
||||||
|
MapView.OnDrawGPSPoint := nil;
|
||||||
|
end;
|
||||||
|
2: begin // image from image list, to be applied to the next POI only
|
||||||
|
//
|
||||||
|
end;
|
||||||
|
3: begin // custom-drawn symbol
|
||||||
|
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
||||||
|
MapView.OnDrawGPSPoint := FDrawGpsPointEvent;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
MapView.Invalidate;
|
||||||
|
btnSelectPOIImage.Enabled := (rgPOIMode.ItemIndex = 1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.SetMapView(AValue: TMapView);
|
||||||
|
begin
|
||||||
|
if FMapView = AValue then
|
||||||
|
exit;
|
||||||
|
FMapView := AValue;
|
||||||
|
if FMapView = nil then
|
||||||
|
raise Exception.Create('[TCfgFrame.SetMapView] New mapview is nil.');
|
||||||
|
|
||||||
|
FMapView.GetMapProviders(cmbProviders.Items);
|
||||||
|
cmbProviders.ItemIndex := cmbProviders.Items.IndexOf(FMapView.MapProvider);
|
||||||
|
//sgLayers.Columns[1].PickList.Assign(CbProviders.Items); // << --- FIX ME
|
||||||
|
FMapView.DoubleBuffered := true;
|
||||||
|
FMapView.Zoom := 1;
|
||||||
|
cbZoomToCursor.Checked := FMapView.ZoomToCursor;
|
||||||
|
cbUseThreads.Checked := FMapView.UseThreads;
|
||||||
|
cbDoubleBuffer.Checked := FMapView.DoubleBuffered;
|
||||||
|
cbPOITextBgColor.Selected := FMapView.POITextBgColor;
|
||||||
|
cbPOITextBgColor.ItemHeight := cmbProviders.ItemHeight + 2;
|
||||||
|
clbBackColor.ButtonColor := FMapView.InactiveColor;
|
||||||
|
|
||||||
|
FDrawGPSpointEvent := FMapView.OnDrawGPSPoint;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.UpdateDownloadEngineProxy;
|
||||||
|
begin
|
||||||
|
if MapView.DownloadEngine.HasProxySupport then
|
||||||
|
begin
|
||||||
|
MapView.DownloadEngine.SetProxy(
|
||||||
|
rbSystemProxy.Checked, rbProxyData.Checked,
|
||||||
|
edProxyHost.Name, seProxyPort.Value, edProxyUserName.Text, edProxyPassword.Text
|
||||||
|
);
|
||||||
|
rbSystemProxy.Enabled := MapView.DownloadEngine.SupportsSystemProxy;
|
||||||
|
lblProxyHost.Enabled := rbProxyData.Checked;
|
||||||
|
edProxyHost.Enabled := rbProxyData.Checked;
|
||||||
|
lblProxyPort.Enabled := rbProxyData.Checked;
|
||||||
|
seProxyPort.Enabled := rbProxyData.Checked;
|
||||||
|
lblProxyUserName.Enabled := rbProxyData.Checked;
|
||||||
|
edProxyUserName.Enabled := rbProxyData.Checked;
|
||||||
|
lblProxyPassword.Enabled := rbProxyData.Checked;
|
||||||
|
edProxyPassword.Enabled := rbProxyData.Checked;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame.WriteToIni(ini: TCustomIniFile);
|
||||||
|
var
|
||||||
|
n: Integer = 0;
|
||||||
|
begin
|
||||||
|
if rbSystemProxy.Checked then
|
||||||
|
n := 1
|
||||||
|
else if rbProxyData.Checked then
|
||||||
|
n := 2;
|
||||||
|
ini.EraseSection('Proxy');
|
||||||
|
ini.WriteInteger('Proxy', 'UseProxy', n);
|
||||||
|
ini.WriteString('Proxy', 'ProxyHost', edProxyHost.Text);
|
||||||
|
ini.WriteInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
||||||
|
ini.WriteString('Proxy', 'ProxyName', edProxyUserName.Text);
|
||||||
|
ini.WriteString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -0,0 +1,139 @@
|
|||||||
|
inherited CfgFrame_with_addons: TCfgFrame_with_addons
|
||||||
|
inherited LblProviders: TLabel
|
||||||
|
AnchorSideTop.Control = Owner
|
||||||
|
end
|
||||||
|
inherited cmbProviders: TComboBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
end
|
||||||
|
inherited btnSaveMapProviders: TSpeedButton
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
end
|
||||||
|
inherited gbProxy: TGroupBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = cbDownloadEngine
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
Top = 154
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
end
|
||||||
|
inherited cbZoomToCursor: TCheckBox
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
Top = 347
|
||||||
|
end
|
||||||
|
inherited cbUseThreads: TCheckBox
|
||||||
|
Top = 370
|
||||||
|
end
|
||||||
|
inherited cbDoubleBuffer: TCheckBox
|
||||||
|
Top = 393
|
||||||
|
end
|
||||||
|
inherited cbDebugTiles: TCheckBox
|
||||||
|
Top = 416
|
||||||
|
end
|
||||||
|
inherited cbCyclicView: TCheckBox
|
||||||
|
Top = 347
|
||||||
|
end
|
||||||
|
inherited cbPreviewTiles: TCheckBox
|
||||||
|
Top = 370
|
||||||
|
end
|
||||||
|
inherited clbBackColor: TColorButton
|
||||||
|
Top = 388
|
||||||
|
end
|
||||||
|
inherited Bevel1: TBevel
|
||||||
|
Top = 441
|
||||||
|
end
|
||||||
|
inherited rgPOIMode: TRadioGroup
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
Top = 449
|
||||||
|
end
|
||||||
|
inherited btnPOITextFont: TButton
|
||||||
|
Top = 585
|
||||||
|
end
|
||||||
|
inherited LblPOITextBgColor: TLabel
|
||||||
|
Top = 593
|
||||||
|
end
|
||||||
|
inherited cbPOITextBgColor: TColorBox
|
||||||
|
Top = 590
|
||||||
|
end
|
||||||
|
object Label1: TLabel[17]
|
||||||
|
AnchorSideLeft.Control = cbDrawingEngine
|
||||||
|
AnchorSideTop.Control = cmbProviders
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 15
|
||||||
|
Top = 56
|
||||||
|
Width = 86
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'Drawing engine:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object cbDrawingEngine: TComboBox[18]
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Label1
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 23
|
||||||
|
Top = 73
|
||||||
|
Width = 275
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
ItemHeight = 15
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'default'
|
||||||
|
'RGBGraphics'
|
||||||
|
'BGRABitmap'
|
||||||
|
'LCL'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 11
|
||||||
|
Text = 'default'
|
||||||
|
OnChange = cbDrawingEngineChange
|
||||||
|
end
|
||||||
|
object Label2: TLabel[19]
|
||||||
|
AnchorSideLeft.Control = cbDownloadEngine
|
||||||
|
AnchorSideTop.Control = cbDrawingEngine
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 15
|
||||||
|
Top = 104
|
||||||
|
Width = 96
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'Download engine:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object cbDownloadEngine: TComboBox[20]
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = Label2
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 23
|
||||||
|
Top = 121
|
||||||
|
Width = 275
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
ItemHeight = 15
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'default'
|
||||||
|
'Synapse'
|
||||||
|
'FpHTTPClient'
|
||||||
|
'WinInet'
|
||||||
|
)
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 12
|
||||||
|
Text = 'default'
|
||||||
|
OnChange = cbDownloadEngineChange
|
||||||
|
end
|
||||||
|
inherited OpenPictureDialog: TOpenPictureDialog[21]
|
||||||
|
end
|
||||||
|
inherited FontDialog: TFontDialog[22]
|
||||||
|
Top = 616
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,108 @@
|
|||||||
|
unit ConfigFrame_with_Addons;
|
||||||
|
|
||||||
|
{$mode ObjFPC}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||||
|
mvDrawingEngine, mvDE_RGBGraphics, mvDE_BGRA, mvDE_LCL,
|
||||||
|
mvDLEFPC, mvDLEWin, mvDLESynapse,
|
||||||
|
ConfigFrame;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TCfgFrame_with_addons }
|
||||||
|
|
||||||
|
TCfgFrame_with_addons = class(TCfgFrame)
|
||||||
|
cbDownloadEngine: TComboBox;
|
||||||
|
cbDrawingEngine: TComboBox;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
procedure cbDownloadEngineChange(Sender: TObject);
|
||||||
|
procedure cbDrawingEngineChange(Sender: TObject);
|
||||||
|
private
|
||||||
|
FRGBGraphicsDrawingEngine: TMvRGBGraphicsDrawingEngine;
|
||||||
|
FBGRADrawingEngine: TMvBGRADrawingEngine;
|
||||||
|
FLCLDrawingEngine: TMvLCLDrawingEngine;
|
||||||
|
FSynapseDownloadEngine: TMvDESynapse;
|
||||||
|
FFpHttpClientDownloadEngine: TMvDEFPC;
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
FWinDownloadEngine: TMvDEWin;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
public
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
{ TCfgFrame_with_addons }
|
||||||
|
|
||||||
|
destructor TCfgFrame_with_addons.Destroy;
|
||||||
|
begin
|
||||||
|
FreeAndNil(FRGBGraphicsDrawingEngine);
|
||||||
|
FreeAndNil(FBGRADrawingEngine);
|
||||||
|
FreeAndNil(FSynapseDownloadEngine);
|
||||||
|
FreeAndNil(FFpHttpClientDownloadEngine);
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
FreeAndNil(FWinDownloadEngine);
|
||||||
|
{$ENDIF}
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame_with_addons.cbDrawingEngineChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
case cbDrawingEngine.ItemIndex of
|
||||||
|
0: MapView.DrawingEngine := nil;
|
||||||
|
1: begin
|
||||||
|
if FRGBGraphicsDrawingEngine = nil then
|
||||||
|
FRGBGraphicsDrawingEngine := TMvRGBGraphicsDrawingEngine.Create(self);
|
||||||
|
MapView.DrawingEngine := FRGBGraphicsDrawingEngine;
|
||||||
|
end;
|
||||||
|
2: begin
|
||||||
|
if FBGRADrawingEngine = nil then
|
||||||
|
FBGRADrawingEngine := TMvBGRADrawingEngine.Create(self);
|
||||||
|
MapView.DrawingEngine := FBGRADrawingEngine;
|
||||||
|
end;
|
||||||
|
3: begin
|
||||||
|
if FLCLDrawingEngine = nil then
|
||||||
|
FLCLDrawingEngine := TMvLCLDrawingEngine.Create(self);
|
||||||
|
MapView.DrawingEngine := FLCLDrawingEngine;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
DoUpdateLayers;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCfgFrame_with_addons.cbDownloadEngineChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
case cbDownloadEngine.ItemIndex of
|
||||||
|
0: MapView.DownloadEngine := nil;
|
||||||
|
1: begin
|
||||||
|
if FSynapseDownloadEngine = nil then
|
||||||
|
FSynapseDownloadEngine := TMvDESynapse.Create(self);
|
||||||
|
MapView.DownloadEngine := FSynapseDownloadEngine;
|
||||||
|
end;
|
||||||
|
2: begin
|
||||||
|
if FFpHttpClientDownloadEngine = nil then
|
||||||
|
FFpHttpClientDownloadEngine := TMvDEFPC.Create(self);
|
||||||
|
MapView.DownloadEngine := FFpHttpClientDownloadEngine;
|
||||||
|
end;
|
||||||
|
3: begin
|
||||||
|
{$IFDEF MSWINDOWS}
|
||||||
|
if FWinDownloadEngine = nil then
|
||||||
|
FWinDownloadEngine := TMvDEWin.Create(Self);
|
||||||
|
MapView.DownloadEngine := FWinDownloadEngine;
|
||||||
|
{$ELSE}
|
||||||
|
ShowMessage('WinInet download engine can only be used in Windows.');
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
UpdateDownloadEngineProxy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -7,9 +7,14 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, mvEngine;
|
Classes, SysUtils, mvEngine;
|
||||||
|
|
||||||
|
type
|
||||||
|
TPOIMode = (pmDefaultDrawing, pmDefaultImage, pmImageList, pmCustomDrawing);
|
||||||
|
|
||||||
|
const
|
||||||
|
MAP_PROVIDER_FILENAME = 'map-providers.xml';
|
||||||
|
|
||||||
const
|
const
|
||||||
DistanceUnit_Names: array[TDistanceUnits] of string = ('m', 'km', 'miles');
|
DistanceUnit_Names: array[TDistanceUnits] of string = ('m', 'km', 'miles');
|
||||||
|
|
||||||
var
|
var
|
||||||
DistanceUnit: TDistanceUnits = duKilometers;
|
DistanceUnit: TDistanceUnits = duKilometers;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
object MainForm: TMainForm
|
object MainForm: TMainForm
|
||||||
Left = 381
|
Left = 375
|
||||||
Height = 586
|
Height = 586
|
||||||
Top = 187
|
Top = 177
|
||||||
Width = 750
|
Width = 750
|
||||||
Caption = 'LazMapViewer'
|
Caption = 'LazMapViewer'
|
||||||
ClientHeight = 586
|
ClientHeight = 586
|
||||||
@ -40,9 +40,9 @@ object MainForm: TMainForm
|
|||||||
Height = 586
|
Height = 586
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 275
|
Width = 275
|
||||||
ActivePage = PgConfig
|
ActivePage = PgData
|
||||||
Align = alRight
|
Align = alRight
|
||||||
TabIndex = 2
|
TabIndex = 0
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object PgData: TTabSheet
|
object PgData: TTabSheet
|
||||||
Caption = 'Data'
|
Caption = 'Data'
|
||||||
@ -715,534 +715,6 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object PgConfig: TTabSheet
|
object PgConfig: TTabSheet
|
||||||
Caption = 'Config'
|
Caption = 'Config'
|
||||||
ClientHeight = 558
|
|
||||||
ClientWidth = 267
|
|
||||||
object LblProviders: TLabel
|
|
||||||
AnchorSideLeft.Control = CbProviders
|
|
||||||
AnchorSideTop.Control = PgConfig
|
|
||||||
Left = 4
|
|
||||||
Height = 15
|
|
||||||
Top = 8
|
|
||||||
Width = 52
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
Caption = 'Providers:'
|
|
||||||
FocusControl = CbProviders
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object CbProviders: TComboBox
|
|
||||||
AnchorSideLeft.Control = PgConfig
|
|
||||||
AnchorSideTop.Control = LblProviders
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = BtnLoadMapProviders
|
|
||||||
Left = 4
|
|
||||||
Height = 23
|
|
||||||
Top = 25
|
|
||||||
Width = 193
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Left = 4
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
BorderSpacing.Right = 2
|
|
||||||
DropDownCount = 24
|
|
||||||
ItemHeight = 15
|
|
||||||
Style = csDropDownList
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = CbProvidersChange
|
|
||||||
end
|
|
||||||
object BtnLoadMapProviders: TSpeedButton
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = CbProviders
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = BtnSaveMapProviders
|
|
||||||
Left = 199
|
|
||||||
Height = 28
|
|
||||||
Top = 22
|
|
||||||
Width = 30
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.Right = 2
|
|
||||||
Glyph.Data = {
|
|
||||||
36040000424D3604000000000000360000002800000010000000100000000100
|
|
||||||
2000000000000004000064000000640000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000003591
|
|
||||||
DBFA439FDDFA439FDDFA429FDDFA429EDDFA419EDCFA419EDCFA419EDCFA419E
|
|
||||||
DCFA419EDCFA419EDCFA419EDCFA3792DAFB3080DF100000000000000000429C
|
|
||||||
DEF76EC7EBFF6DC7EAFF6BC6EAFF6AC5E9FF68C4E9FF67C3E8FF65C2E8FF64C1
|
|
||||||
E7FF63C0E7FF61BFE6FF60BEE5FF51AFE3FE308CD6450000000000000000409A
|
|
||||||
DDF47CD0F1FF7BD0F0FF7ACFEFFF79CEEFFF77CDEEFF76CCEEFF74CBEDFF73CA
|
|
||||||
EDFF71C9ECFF70C8ECFF6EC7EBFF6AC3E9FF3993DB8E00000000000000003E99
|
|
||||||
DCEC7ECEF1FF8AD9F6FF89D8F5FF87D7F4FF86D6F4FF84D5F3FF83D5F3FF81D4
|
|
||||||
F2FF80D3F2FF7ED2F1FF7DD1F1FF7BD0F0FF439ADEB40000000000000000409B
|
|
||||||
DDE470C1EDFF99E2FBFF97E2FBFF96E1FAFF94E0F9FF93DFF9FF91DEF8FF90DD
|
|
||||||
F8FF8EDCF7FF8DDBF7FF8CDAF6FF8AD9F6FF4EA4E2CD00000000000000004AA5
|
|
||||||
E0DF61B3E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA2E8FEFFA0E7FEFF9FE6
|
|
||||||
FDFF9DE5FDFF9CE4FCFF9AE3FCFF99E2FBFF5FB3E9E33080DF100000000051A8
|
|
||||||
E2DF5EB2E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9
|
|
||||||
FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFF84CFF5FB348CDA450000000058AD
|
|
||||||
E5DF60B3E8FF61B3E9FF61B3E9FF60B2E9FF60B2E8FF60B2E8FF5FB1E8FF5FB1
|
|
||||||
E8FF5EB1E8FF5EB1E8FF5EB1E7FF59ADE7FB55A9E5E33B94DC85000000005FB0
|
|
||||||
E8DF9DE4FBFF9AE3FAFF97E1F9FF94DFF8FF91DDF7FF8EDBF5FF8BD9F4FF88D8
|
|
||||||
F3FF85D6F2FF82D4F1FF7FD2F0FF4FA7E1DF00000000000000000000000061B1
|
|
||||||
E8DFA6EAFFFFA6EAFFFFA6EAFFFFA3E8FEFF7AC6F1ED59ACE6DF58AAE5DF57AA
|
|
||||||
E5DF56AAE5DF53A9E4DF53A8E4DF3C94DCE20000000000000000000000004096
|
|
||||||
DEE25DAEE7DF5DAEE7DF5DAEE7DF57A9E6DF4399DF6E00000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
|
||||||
0000000000000000000000000000000000000000000000000000
|
|
||||||
}
|
|
||||||
OnClick = BtnLoadMapProvidersClick
|
|
||||||
end
|
|
||||||
object BtnSaveMapProviders: TSpeedButton
|
|
||||||
AnchorSideLeft.Control = BtnLoadMapProviders
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = CbProviders
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Control = PgConfig
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 231
|
|
||||||
Height = 28
|
|
||||||
Top = 22
|
|
||||||
Width = 32
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
BorderSpacing.Right = 4
|
|
||||||
Glyph.Data = {
|
|
||||||
36040000424D3604000000000000360000002800000010000000100000000100
|
|
||||||
2000000000000004000064000000640000000000000000000000A4653455A465
|
|
||||||
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
|
||||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
|
||||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
|
||||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
|
||||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
|
||||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
|
||||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
|
||||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
|
||||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
|
||||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
|
||||||
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
|
||||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
|
||||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
|
||||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
|
||||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
|
||||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
|
||||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FF5959
|
|
||||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
|
||||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000A46534FF5959
|
|
||||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
|
||||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000
|
|
||||||
}
|
|
||||||
OnClick = BtnSaveMapProvidersClick
|
|
||||||
end
|
|
||||||
object CbUseThreads: TCheckBox
|
|
||||||
AnchorSideLeft.Control = PgConfig
|
|
||||||
AnchorSideTop.Control = CbZoomToCursor
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 19
|
|
||||||
Top = 272
|
|
||||||
Width = 79
|
|
||||||
BorderSpacing.Left = 4
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
Caption = 'Use threads'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 4
|
|
||||||
OnChange = CbUseThreadsChange
|
|
||||||
end
|
|
||||||
object CbDoubleBuffer: TCheckBox
|
|
||||||
AnchorSideLeft.Control = CbUseThreads
|
|
||||||
AnchorSideTop.Control = CbUseThreads
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 19
|
|
||||||
Top = 295
|
|
||||||
Width = 85
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
Caption = 'DblBuffering'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 6
|
|
||||||
OnChange = CbDoubleBufferChange
|
|
||||||
end
|
|
||||||
object CbDebugTiles: TCheckBox
|
|
||||||
AnchorSideLeft.Control = CbDoubleBuffer
|
|
||||||
AnchorSideTop.Control = CbDoubleBuffer
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 19
|
|
||||||
Top = 318
|
|
||||||
Width = 77
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
Caption = 'Debug tiles'
|
|
||||||
TabOrder = 7
|
|
||||||
OnChange = CbDebugTilesChange
|
|
||||||
end
|
|
||||||
object BtnPOITextFont: TButton
|
|
||||||
AnchorSideLeft.Control = rgPOIMode
|
|
||||||
AnchorSideTop.Control = rgPOIMode
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 30
|
|
||||||
Top = 487
|
|
||||||
Width = 87
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
Caption = 'POI text font'
|
|
||||||
TabOrder = 9
|
|
||||||
OnClick = BtnPOITextFontClick
|
|
||||||
end
|
|
||||||
object cbPOITextBgColor: TColorBox
|
|
||||||
AnchorSideLeft.Control = LblPOITextBgColor
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = BtnPOITextFont
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 142
|
|
||||||
Height = 21
|
|
||||||
Top = 492
|
|
||||||
Width = 119
|
|
||||||
NoneColorColor = clWhite
|
|
||||||
Style = [cbStandardColors, cbExtendedColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors]
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Left = 6
|
|
||||||
ItemHeight = 15
|
|
||||||
TabOrder = 10
|
|
||||||
OnChange = cbPOITextBgColorChange
|
|
||||||
end
|
|
||||||
object LblPOITextBgColor: TLabel
|
|
||||||
AnchorSideLeft.Control = BtnPOITextFont
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = BtnPOITextFont
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 97
|
|
||||||
Height = 15
|
|
||||||
Top = 495
|
|
||||||
Width = 39
|
|
||||||
BorderSpacing.Left = 6
|
|
||||||
Caption = 'Backgr.'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object Bevel1: TBevel
|
|
||||||
AnchorSideLeft.Control = CbDebugTiles
|
|
||||||
AnchorSideTop.Control = CbDebugTiles
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 2
|
|
||||||
Top = 343
|
|
||||||
Width = 257
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
Shape = bsTopLine
|
|
||||||
end
|
|
||||||
object rgPOIMode: TRadioGroup
|
|
||||||
AnchorSideLeft.Control = CbProviders
|
|
||||||
AnchorSideTop.Control = Bevel1
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 128
|
|
||||||
Top = 351
|
|
||||||
Width = 233
|
|
||||||
AutoFill = False
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
Caption = 'POI Mode'
|
|
||||||
ChildSizing.LeftRightSpacing = 12
|
|
||||||
ChildSizing.TopBottomSpacing = 4
|
|
||||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
|
||||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
|
||||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
|
||||||
ChildSizing.ControlsPerLine = 4
|
|
||||||
ClientHeight = 108
|
|
||||||
ClientWidth = 229
|
|
||||||
ItemIndex = 0
|
|
||||||
Items.Strings = (
|
|
||||||
'default drawing'
|
|
||||||
'default POI image'
|
|
||||||
'image from imagelist'
|
|
||||||
'custom drawing'
|
|
||||||
)
|
|
||||||
TabOrder = 8
|
|
||||||
OnClick = rgPOIModeClick
|
|
||||||
object Bevel3: TBevel
|
|
||||||
Left = 151
|
|
||||||
Height = 25
|
|
||||||
Top = 4
|
|
||||||
Width = 66
|
|
||||||
Constraints.MaxHeight = 25
|
|
||||||
Shape = bsSpacer
|
|
||||||
end
|
|
||||||
object BtnSelectPOIImage: TButton
|
|
||||||
Left = 151
|
|
||||||
Height = 25
|
|
||||||
Top = 29
|
|
||||||
Width = 66
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
Caption = 'Select...'
|
|
||||||
Enabled = False
|
|
||||||
TabOrder = 4
|
|
||||||
OnClick = BtnSelectPOIImageClick
|
|
||||||
end
|
|
||||||
object Bevel4: TBevel
|
|
||||||
Left = 151
|
|
||||||
Height = 25
|
|
||||||
Top = 54
|
|
||||||
Width = 66
|
|
||||||
Constraints.MaxHeight = 25
|
|
||||||
Shape = bsSpacer
|
|
||||||
end
|
|
||||||
object Bevel5: TBevel
|
|
||||||
Left = 151
|
|
||||||
Height = 25
|
|
||||||
Top = 79
|
|
||||||
Width = 66
|
|
||||||
Constraints.MaxHeight = 25
|
|
||||||
Shape = bsSpacer
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object CbZoomToCursor: TCheckBox
|
|
||||||
AnchorSideLeft.Control = PgConfig
|
|
||||||
AnchorSideTop.Control = gbProxy
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 19
|
|
||||||
Top = 249
|
|
||||||
Width = 100
|
|
||||||
BorderSpacing.Left = 4
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Right = 16
|
|
||||||
Caption = 'Zoom to cursor'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 2
|
|
||||||
OnChange = CbZoomToCursorChange
|
|
||||||
end
|
|
||||||
object cbCyclicView: TCheckBox
|
|
||||||
AnchorSideLeft.Control = CbZoomToCursor
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = CbZoomToCursor
|
|
||||||
Left = 120
|
|
||||||
Height = 19
|
|
||||||
Top = 249
|
|
||||||
Width = 77
|
|
||||||
Caption = 'Cyclic view'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 3
|
|
||||||
OnChange = cbCyclicViewChange
|
|
||||||
end
|
|
||||||
object clbBackColor: TColorButton
|
|
||||||
AnchorSideLeft.Control = cbCyclicView
|
|
||||||
AnchorSideTop.Control = CbDoubleBuffer
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 120
|
|
||||||
Height = 28
|
|
||||||
Top = 290
|
|
||||||
Width = 108
|
|
||||||
BorderWidth = 2
|
|
||||||
ButtonColorAutoSize = False
|
|
||||||
ButtonColorSize = 15
|
|
||||||
ButtonColor = clWhite
|
|
||||||
Caption = 'Map backgr.'
|
|
||||||
Margin = 4
|
|
||||||
OnColorChanged = clbBackColorColorChanged
|
|
||||||
end
|
|
||||||
object CbPreviewTiles: TCheckBox
|
|
||||||
AnchorSideLeft.Control = cbCyclicView
|
|
||||||
AnchorSideTop.Control = CbUseThreads
|
|
||||||
Left = 120
|
|
||||||
Height = 19
|
|
||||||
Top = 272
|
|
||||||
Width = 83
|
|
||||||
Caption = 'Preview tiles'
|
|
||||||
Checked = True
|
|
||||||
State = cbChecked
|
|
||||||
TabOrder = 5
|
|
||||||
OnChange = CbPreviewTilesChange
|
|
||||||
end
|
|
||||||
object gbProxy: TGroupBox
|
|
||||||
AnchorSideLeft.Control = PgConfig
|
|
||||||
AnchorSideTop.Control = CbProviders
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = PgConfig
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 4
|
|
||||||
Height = 185
|
|
||||||
Top = 56
|
|
||||||
Width = 259
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
BorderSpacing.Around = 4
|
|
||||||
Caption = 'Proxy'
|
|
||||||
ClientHeight = 165
|
|
||||||
ClientWidth = 255
|
|
||||||
TabOrder = 1
|
|
||||||
object lblProxyHost: TLabel
|
|
||||||
AnchorSideLeft.Control = rbNoProxy
|
|
||||||
AnchorSideTop.Control = edProxyHost
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 20
|
|
||||||
Height = 15
|
|
||||||
Top = 65
|
|
||||||
Width = 28
|
|
||||||
BorderSpacing.Left = 10
|
|
||||||
Caption = 'Host:'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object edProxyHost: TEdit
|
|
||||||
AnchorSideLeft.Control = edProxyUserName
|
|
||||||
AnchorSideTop.Control = rbProxyData
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = gbProxy
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 85
|
|
||||||
Height = 23
|
|
||||||
Top = 61
|
|
||||||
Width = 164
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
TabOrder = 3
|
|
||||||
OnChange = rbProxyChange
|
|
||||||
end
|
|
||||||
object lblProxyPort: TLabel
|
|
||||||
AnchorSideLeft.Control = lblProxyHost
|
|
||||||
AnchorSideTop.Control = seProxyPort
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 20
|
|
||||||
Height = 15
|
|
||||||
Top = 90
|
|
||||||
Width = 22
|
|
||||||
Caption = 'Port'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object seProxyPort: TSpinEdit
|
|
||||||
AnchorSideLeft.Control = lblProxyUserName
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = edProxyHost
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 85
|
|
||||||
Height = 23
|
|
||||||
Top = 86
|
|
||||||
Width = 70
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
MaxValue = 65535
|
|
||||||
TabOrder = 4
|
|
||||||
OnChange = rbProxyChange
|
|
||||||
end
|
|
||||||
object lblProxyUserName: TLabel
|
|
||||||
AnchorSideLeft.Control = lblProxyHost
|
|
||||||
AnchorSideTop.Control = edProxyUserName
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 20
|
|
||||||
Height = 15
|
|
||||||
Top = 115
|
|
||||||
Width = 59
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
Caption = 'User name:'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object edProxyUserName: TEdit
|
|
||||||
AnchorSideLeft.Control = lblProxyUserName
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = seProxyPort
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = gbProxy
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 85
|
|
||||||
Height = 23
|
|
||||||
Top = 111
|
|
||||||
Width = 164
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
TabOrder = 5
|
|
||||||
OnChange = rbProxyChange
|
|
||||||
end
|
|
||||||
object lblProxyPassword: TLabel
|
|
||||||
AnchorSideLeft.Control = lblProxyHost
|
|
||||||
AnchorSideTop.Control = edProxyPassword
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 20
|
|
||||||
Height = 15
|
|
||||||
Top = 140
|
|
||||||
Width = 50
|
|
||||||
Caption = 'Password'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object edProxyPassword: TEdit
|
|
||||||
AnchorSideLeft.Control = edProxyUserName
|
|
||||||
AnchorSideTop.Control = edProxyUserName
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = gbProxy
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 85
|
|
||||||
Height = 23
|
|
||||||
Top = 136
|
|
||||||
Width = 164
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
TabOrder = 6
|
|
||||||
OnChange = rbProxyChange
|
|
||||||
end
|
|
||||||
object rbProxyData: TRadioButton
|
|
||||||
AnchorSideLeft.Control = rbNoProxy
|
|
||||||
AnchorSideTop.Control = rbSystemProxy
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 10
|
|
||||||
Height = 19
|
|
||||||
Top = 42
|
|
||||||
Width = 74
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
Caption = 'Proxy data'
|
|
||||||
TabOrder = 2
|
|
||||||
OnChangeBounds = rbProxyChange
|
|
||||||
end
|
|
||||||
object rbNoProxy: TRadioButton
|
|
||||||
AnchorSideLeft.Control = gbProxy
|
|
||||||
AnchorSideTop.Control = gbProxy
|
|
||||||
Left = 10
|
|
||||||
Height = 19
|
|
||||||
Top = 0
|
|
||||||
Width = 67
|
|
||||||
BorderSpacing.Left = 10
|
|
||||||
Caption = 'No proxy'
|
|
||||||
TabOrder = 0
|
|
||||||
OnChange = rbProxyChange
|
|
||||||
end
|
|
||||||
object rbSystemProxy: TRadioButton
|
|
||||||
AnchorSideLeft.Control = rbNoProxy
|
|
||||||
AnchorSideTop.Control = rbNoProxy
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 10
|
|
||||||
Height = 19
|
|
||||||
Top = 21
|
|
||||||
Width = 110
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
Caption = 'Use system proxy'
|
|
||||||
Checked = True
|
|
||||||
TabOrder = 1
|
|
||||||
TabStop = True
|
|
||||||
OnChange = rbProxyChange
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object GeoNames: TMVGeoNames
|
object GeoNames: TMVGeoNames
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
{ This file is used by the "MapViewer_Demo" and the "MapViewer_Demo_with_Addons"
|
||||||
|
projects.
|
||||||
|
|
||||||
|
Active define WITH_ADDONS in the project options for "MapViewer_Demo_with_Addons"
|
||||||
|
and make sure that the addon packages are listed as requirements.
|
||||||
|
}
|
||||||
|
|
||||||
unit Main;
|
unit Main;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
@ -6,65 +13,39 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Types, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
Classes, SysUtils, Types, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||||
StdCtrls, ComCtrls, Buttons, IntfGraphics, ColorBox, Spin, PrintersDlgs,
|
StdCtrls, ComCtrls, Buttons, IntfGraphics, PrintersDlgs,
|
||||||
mvGeoNames, mvMapViewer, mvTypes, mvGpsObj, mvDrawingEngine, Grids, ExtDlgs;
|
Grids, ExtDlgs,
|
||||||
|
mvGeoNames, mvMapViewer, mvTypes, mvGpsObj, mvDrawingEngine,
|
||||||
|
{$IFDEF WITH_ADDONS}ConfigFrame_with_Addons{$ELSE}ConfigFrame{$ENDIF};
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TMainForm }
|
{ TMainForm }
|
||||||
|
|
||||||
TMainForm = class(TForm)
|
TMainForm = class(TForm)
|
||||||
Bevel1: TBevel;
|
|
||||||
Bevel2: TBevel;
|
Bevel2: TBevel;
|
||||||
Bevel3: TBevel;
|
|
||||||
Bevel4: TBevel;
|
|
||||||
Bevel5: TBevel;
|
|
||||||
BtnSearch: TButton;
|
BtnSearch: TButton;
|
||||||
BtnGoTo: TButton;
|
BtnGoTo: TButton;
|
||||||
BtnGPSPoints: TButton;
|
BtnGPSPoints: TButton;
|
||||||
BtnSaveToFile: TButton;
|
BtnSaveToFile: TButton;
|
||||||
BtnLoadGPXFile: TButton;
|
BtnLoadGPXFile: TButton;
|
||||||
BtnPOITextFont: TButton;
|
|
||||||
BtnPrintMap: TButton;
|
BtnPrintMap: TButton;
|
||||||
BtnSelectPOIImage: TButton;
|
|
||||||
CbDoubleBuffer: TCheckBox;
|
|
||||||
CbFoundLocations: TComboBox;
|
CbFoundLocations: TComboBox;
|
||||||
CbLocations: TComboBox;
|
CbLocations: TComboBox;
|
||||||
CbProviders: TComboBox;
|
|
||||||
OpenPictureDialog: TOpenPictureDialog;
|
OpenPictureDialog: TOpenPictureDialog;
|
||||||
PgLayers: TTabSheet;
|
PgLayers: TTabSheet;
|
||||||
rbSystemProxy: TRadioButton;
|
|
||||||
rbNoProxy: TRadioButton;
|
|
||||||
rbProxyData: TRadioButton;
|
|
||||||
CbUseThreads: TCheckBox;
|
|
||||||
CbMouseCoords: TGroupBox;
|
CbMouseCoords: TGroupBox;
|
||||||
CbDistanceUnits: TComboBox;
|
CbDistanceUnits: TComboBox;
|
||||||
CbDebugTiles: TCheckBox;
|
|
||||||
cbPOITextBgColor: TColorBox;
|
|
||||||
CbZoomToCursor: TCheckBox;
|
|
||||||
cbCyclicView: TCheckBox;
|
|
||||||
CbPreviewTiles: TCheckBox;
|
|
||||||
clbBackColor: TColorButton;
|
|
||||||
edProxyHost: TEdit;
|
|
||||||
edProxyUserName: TEdit;
|
|
||||||
edProxyPassword: TEdit;
|
|
||||||
FontDialog: TFontDialog;
|
FontDialog: TFontDialog;
|
||||||
GbCenterCoords: TGroupBox;
|
GbCenterCoords: TGroupBox;
|
||||||
GbScreenSize: TGroupBox;
|
GbScreenSize: TGroupBox;
|
||||||
GbSearch: TGroupBox;
|
GbSearch: TGroupBox;
|
||||||
GbGPS: TGroupBox;
|
GbGPS: TGroupBox;
|
||||||
gbProxy: TGroupBox;
|
|
||||||
InfoCenterLatitude: TLabel;
|
InfoCenterLatitude: TLabel;
|
||||||
InfoViewportHeight: TLabel;
|
InfoViewportHeight: TLabel;
|
||||||
InfoCenterLongitude: TLabel;
|
InfoCenterLongitude: TLabel;
|
||||||
InfoBtnGPSPoints: TLabel;
|
InfoBtnGPSPoints: TLabel;
|
||||||
GPSPointInfo: TLabel;
|
GPSPointInfo: TLabel;
|
||||||
InfoViewportWidth: TLabel;
|
InfoViewportWidth: TLabel;
|
||||||
lblProxyUserName: TLabel;
|
|
||||||
lblProxyPort: TLabel;
|
|
||||||
lblProxyHost: TLabel;
|
|
||||||
LblPOITextBgColor: TLabel;
|
|
||||||
lblProxyPassword: TLabel;
|
|
||||||
LblSelectLocation: TLabel;
|
LblSelectLocation: TLabel;
|
||||||
LblCenterLatitude: TLabel;
|
LblCenterLatitude: TLabel;
|
||||||
LblViewportHeight: TLabel;
|
LblViewportHeight: TLabel;
|
||||||
@ -74,20 +55,15 @@ type
|
|||||||
InfoPositionLongitude: TLabel;
|
InfoPositionLongitude: TLabel;
|
||||||
InfoPositionLatitude: TLabel;
|
InfoPositionLatitude: TLabel;
|
||||||
LblCenterLongitude: TLabel;
|
LblCenterLongitude: TLabel;
|
||||||
LblProviders: TLabel;
|
|
||||||
LblZoom: TLabel;
|
LblZoom: TLabel;
|
||||||
MapView: TMapView;
|
MapView: TMapView;
|
||||||
GeoNames: TMVGeoNames;
|
GeoNames: TMVGeoNames;
|
||||||
BtnLoadMapProviders: TSpeedButton;
|
|
||||||
BtnSaveMapProviders: TSpeedButton;
|
|
||||||
OpenDialog: TOpenDialog;
|
OpenDialog: TOpenDialog;
|
||||||
PageControl: TPageControl;
|
PageControl: TPageControl;
|
||||||
PgData: TTabSheet;
|
PgData: TTabSheet;
|
||||||
PgConfig: TTabSheet;
|
PgConfig: TTabSheet;
|
||||||
POIImages: TImageList;
|
POIImages: TImageList;
|
||||||
PrintDialog: TPrintDialog;
|
PrintDialog: TPrintDialog;
|
||||||
rgPOIMode: TRadioGroup;
|
|
||||||
seProxyPort: TSpinEdit;
|
|
||||||
sgLayers: TStringGrid;
|
sgLayers: TStringGrid;
|
||||||
rgDrawMode: TRadioGroup;
|
rgDrawMode: TRadioGroup;
|
||||||
lblOpacity: TLabel;
|
lblOpacity: TLabel;
|
||||||
@ -100,21 +76,9 @@ type
|
|||||||
procedure BtnGPSPointsClick(Sender: TObject);
|
procedure BtnGPSPointsClick(Sender: TObject);
|
||||||
procedure BtnSaveToFileClick(Sender: TObject);
|
procedure BtnSaveToFileClick(Sender: TObject);
|
||||||
procedure BtnPOITextFontClick(Sender: TObject);
|
procedure BtnPOITextFontClick(Sender: TObject);
|
||||||
procedure BtnSelectPOIImageClick(Sender: TObject);
|
|
||||||
procedure cbCyclicViewChange(Sender: TObject);
|
|
||||||
procedure CbDebugTilesChange(Sender: TObject);
|
|
||||||
procedure CbDoubleBufferChange(Sender: TObject);
|
|
||||||
procedure CbFoundLocationsDrawItem(Control: TWinControl; Index: Integer;
|
procedure CbFoundLocationsDrawItem(Control: TWinControl; Index: Integer;
|
||||||
ARect: TRect; State: TOwnerDrawState);
|
ARect: TRect; State: TOwnerDrawState);
|
||||||
procedure cbPOITextBgColorChange(Sender: TObject);
|
|
||||||
procedure CbPreviewTilesChange(Sender: TObject);
|
|
||||||
procedure CbProvidersChange(Sender: TObject);
|
|
||||||
procedure rbProxyChange(Sender: TObject);
|
|
||||||
procedure CbShowPOIImageChange(Sender: TObject);
|
|
||||||
procedure CbUseThreadsChange(Sender: TObject);
|
|
||||||
procedure CbDistanceUnitsChange(Sender: TObject);
|
procedure CbDistanceUnitsChange(Sender: TObject);
|
||||||
procedure CbZoomToCursorChange(Sender: TObject);
|
|
||||||
procedure clbBackColorColorChanged(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormDestroy(Sender: TObject);
|
procedure FormDestroy(Sender: TObject);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
@ -128,23 +92,18 @@ type
|
|||||||
procedure MapViewMouseUp(Sender: TObject; Button: TMouseButton;
|
procedure MapViewMouseUp(Sender: TObject; Button: TMouseButton;
|
||||||
{%H-}Shift: TShiftState; X, Y: Integer);
|
{%H-}Shift: TShiftState; X, Y: Integer);
|
||||||
procedure MapViewZoomChange(Sender: TObject);
|
procedure MapViewZoomChange(Sender: TObject);
|
||||||
procedure BtnLoadMapProvidersClick(Sender: TObject);
|
|
||||||
procedure BtnSaveMapProvidersClick(Sender: TObject);
|
|
||||||
procedure rgDrawModeSelectionChanged(Sender: TObject);
|
procedure rgDrawModeSelectionChanged(Sender: TObject);
|
||||||
procedure rgPOIModeClick(Sender: TObject);
|
procedure sgLayersCheckboxToggled({%H-}Sender: TObject; {%H-}aCol, {%H-}aRow: Integer; aState: TCheckboxState);
|
||||||
procedure sgLayersCheckboxToggled(sender: TObject; aCol, aRow: Integer;
|
|
||||||
aState: TCheckboxState);
|
|
||||||
procedure sgLayersEditingDone(Sender: TObject);
|
procedure sgLayersEditingDone(Sender: TObject);
|
||||||
procedure sgLayersSelection(Sender: TObject; aCol, aRow: Integer);
|
procedure sgLayersSelection(Sender: TObject; {%H-}aCol, aRow: Integer);
|
||||||
procedure tbOpacityChange(Sender: TObject);
|
procedure tbOpacityChange(Sender: TObject);
|
||||||
procedure UpdateLayers;
|
procedure UpdateLayers(Sender: TObject);
|
||||||
procedure ZoomTrackBarChange(Sender: TObject);
|
procedure ZoomTrackBarChange(Sender: TObject);
|
||||||
|
|
||||||
private
|
private
|
||||||
POIImage: TCustomBitmap;
|
CfgFrame: {$IFDEF WITH_ADDONS}TCfgFrame_with_Addons{$ELSE}TCfgFrame{$ENDIF};
|
||||||
procedure ClearFoundLocations;
|
procedure ClearFoundLocations;
|
||||||
procedure UpdateCoords(X, Y: Integer);
|
procedure UpdateCoords(X, Y: Integer);
|
||||||
procedure UpdateDownloadEngineProxy;
|
|
||||||
procedure UpdateDropdownWidth(ACombobox: TCombobox);
|
procedure UpdateDropdownWidth(ACombobox: TCombobox);
|
||||||
procedure UpdateLocationHistory(ALocation: String);
|
procedure UpdateLocationHistory(ALocation: String);
|
||||||
procedure UpdateViewportSize;
|
procedure UpdateViewportSize;
|
||||||
@ -177,7 +136,6 @@ type
|
|||||||
|
|
||||||
const
|
const
|
||||||
MAX_LOCATIONS_HISTORY = 50;
|
MAX_LOCATIONS_HISTORY = 50;
|
||||||
MAP_PROVIDER_FILENAME = 'map-providers.xml';
|
|
||||||
USE_DMS = true;
|
USE_DMS = true;
|
||||||
_TILELAYERS_ID_ = 42;
|
_TILELAYERS_ID_ = 42;
|
||||||
|
|
||||||
@ -193,28 +151,6 @@ end;
|
|||||||
|
|
||||||
{ TMainForm }
|
{ TMainForm }
|
||||||
|
|
||||||
procedure TMainForm.BtnLoadMapProvidersClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
fn: String;
|
|
||||||
msg: String;
|
|
||||||
begin
|
|
||||||
fn := Application.Location + MAP_PROVIDER_FILENAME;
|
|
||||||
if FileExists(fn) then begin
|
|
||||||
if MapView.Engine.ReadProvidersFromXML(fn, msg) then begin
|
|
||||||
MapView.GetMapProviders(CbProviders.Items);
|
|
||||||
CbProviders.ItemIndex := 0;
|
|
||||||
MapView.MapProvider := CbProviders.Text;
|
|
||||||
sgLayers.Columns[1].PickList.Assign(CbProviders.Items);
|
|
||||||
end else
|
|
||||||
ShowMessage(msg);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.BtnSaveMapProvidersClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.Engine.WriteProvidersToXML(Application.Location + MAP_PROVIDER_FILENAME);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.rgDrawModeSelectionChanged(Sender: TObject);
|
procedure TMainForm.rgDrawModeSelectionChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
TileLayer[Pred(sgLayers.Row)].DrawMode := TItemDrawMode(rgDrawMode.ItemIndex);
|
TileLayer[Pred(sgLayers.Row)].DrawMode := TItemDrawMode(rgDrawMode.ItemIndex);
|
||||||
@ -374,34 +310,6 @@ begin
|
|||||||
MapView.Font.Assign(FontDialog.Font);
|
MapView.Font.Assign(FontDialog.Font);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.BtnSelectPOIImageClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OpenPictureDialog.Filter := 'PNG files|*.png|BMP files|*.bmp';
|
|
||||||
OpenPictureDialog.DefaultExt := '.png';
|
|
||||||
if OpenPictureDialog.Execute then
|
|
||||||
begin
|
|
||||||
POIImage.LoadFromFile(OpenPictureDialog.FileName);
|
|
||||||
MapView.POIImage.Assign(POIImage);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.cbCyclicViewChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.Cyclic := cbCyclicView.Checked;
|
|
||||||
UpdateLayers;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbDebugTilesChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.DebugTiles := CbDebugTiles.Checked;
|
|
||||||
MapView.Invalidate;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbDoubleBufferChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.DoubleBuffered := CbDoubleBuffer.Checked;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbFoundLocationsDrawItem(Control: TWinControl;
|
procedure TMainForm.CbFoundLocationsDrawItem(Control: TWinControl;
|
||||||
Index: Integer; ARect: TRect; State: TOwnerDrawState);
|
Index: Integer; ARect: TRect; State: TOwnerDrawState);
|
||||||
var
|
var
|
||||||
@ -431,58 +339,12 @@ begin
|
|||||||
combo.Canvas.TextOut(x, y, P.Descr);
|
combo.Canvas.TextOut(x, y, P.Descr);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.cbPOITextBgColorChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.POITextBgColor := cbPOITextBgColor.Selected;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbPreviewTilesChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.DrawPreviewTiles := CbPreviewTiles.Checked;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbProvidersChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.MapProvider := CbProviders.Text;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.rbProxyChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
UpdateDownloadEngineProxy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbShowPOIImageChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
{
|
|
||||||
if CbShowPOIImage.Checked then
|
|
||||||
MapView.POIImage.Assign(POIImage)
|
|
||||||
else
|
|
||||||
MapView.POIImage.Clear;
|
|
||||||
}
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbUseThreadsChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.UseThreads := CbUseThreads.Checked;
|
|
||||||
UpdateLayers;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.CbDistanceUnitsChange(Sender: TObject);
|
procedure TMainForm.CbDistanceUnitsChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DistanceUnit := TDistanceUnits(CbDistanceUnits.ItemIndex);
|
DistanceUnit := TDistanceUnits(CbDistanceUnits.ItemIndex);
|
||||||
UpdateViewPortSize;
|
UpdateViewPortSize;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.CbZoomToCursorChange(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.ZoomToCursor := CbZoomToCursor.Checked;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.clbBackColorColorChanged(Sender: TObject);
|
|
||||||
begin
|
|
||||||
MapView.InactiveColor := clbBackColor.ButtonColor;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.ClearFoundLocations;
|
procedure TMainForm.ClearFoundLocations;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -497,35 +359,17 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.FormCreate(Sender: TObject);
|
procedure TMainForm.FormCreate(Sender: TObject);
|
||||||
var
|
var
|
||||||
fn: String;
|
|
||||||
I: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
|
CfgFrame := {$IFDEF WITH_ADDONS}TCfgFrame_with_Addons{$ELSE}TCfgFrame{$ENDIF}.Create(self);
|
||||||
|
CfgFrame.Parent := pgConfig;
|
||||||
|
CfgFrame.Align := alClient;
|
||||||
|
CfgFrame.MapView := MapView;
|
||||||
|
CfgFrame.OnDrawGPSPoint := @MapViewDrawGpsPoint;
|
||||||
|
CfgFrame.OnUpdateLayers := @UpdateLayers;
|
||||||
|
|
||||||
cInputQueryEditSizePercents := 0;
|
cInputQueryEditSizePercents := 0;
|
||||||
|
|
||||||
fn := Application.Location + 'mapmarker.png';
|
|
||||||
if not FileExists(fn) then
|
|
||||||
MessageDlg('Copy the file "mapmarker.png" from the source folder to the folder with the executable.',
|
|
||||||
mtError, [mbOK], 0)
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
// FMapMarker := CreateMapMarker(32, clRed, clBlack);
|
|
||||||
POIImage := TPortableNetworkGraphic.Create;
|
|
||||||
POIImage.PixelFormat := pf32bit;
|
|
||||||
POIImage.LoadFromFile(fn);
|
|
||||||
end;
|
|
||||||
|
|
||||||
MapView.GetMapProviders(CbProviders.Items);
|
|
||||||
CbProviders.ItemIndex := CbProviders.Items.IndexOf(MapView.MapProvider);
|
|
||||||
sgLayers.Columns[1].PickList.Assign(CbProviders.Items);
|
|
||||||
MapView.DoubleBuffered := true;
|
|
||||||
MapView.Zoom := 1;
|
|
||||||
CbZoomToCursor.Checked := MapView.ZoomToCursor;
|
|
||||||
CbUseThreads.Checked := MapView.UseThreads;
|
|
||||||
CbDoubleBuffer.Checked := MapView.DoubleBuffered;
|
|
||||||
CbPOITextBgColor.Selected := MapView.POITextBgColor;
|
|
||||||
CbPOITextBgColor.ItemHeight := CbProviders.ItemHeight + 2;
|
|
||||||
ClbBackColor.ButtonColor := MapView.InactiveColor;
|
|
||||||
|
|
||||||
InfoPositionLongitude.Caption := '';
|
InfoPositionLongitude.Caption := '';
|
||||||
InfoPositionLatitude.Caption := '';
|
InfoPositionLatitude.Caption := '';
|
||||||
InfoCenterLongitude.Caption := '';
|
InfoCenterLongitude.Caption := '';
|
||||||
@ -567,7 +411,6 @@ begin
|
|||||||
for I := 0 to High(TileLayer) do
|
for I := 0 to High(TileLayer) do
|
||||||
MapView.GPSLayer[I].Delete(TileLayer[I]);
|
MapView.GPSLayer[I].Delete(TileLayer[I]);
|
||||||
ClearFoundLocations;
|
ClearFoundLocations;
|
||||||
FreeAndNil(POIImage)
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.FormShow(Sender: TObject);
|
procedure TMainForm.FormShow(Sender: TObject);
|
||||||
@ -599,22 +442,30 @@ var
|
|||||||
sym: TGPSSymbol;
|
sym: TGPSSymbol;
|
||||||
clr: TColor;
|
clr: TColor;
|
||||||
extent: TSize;
|
extent: TSize;
|
||||||
|
lMapView: TMapView;
|
||||||
begin
|
begin
|
||||||
|
lMapView := TMapView(Sender);
|
||||||
|
|
||||||
// Screen coordinates of the GPS point
|
// Screen coordinates of the GPS point
|
||||||
P := TMapView(Sender).LatLonToScreen(APoint.RealPoint);
|
P := lMapView.LatLonToScreen(APoint.RealPoint);
|
||||||
|
|
||||||
// Draw the GPS point as specified by the data in the point's ExtraData
|
// Draw the GPS point as specified by the data in the point's ExtraData
|
||||||
if not (APoint.ExtraData is TGPSExtraData) then
|
if (APoint.ExtraData is TGPSExtraData) then
|
||||||
exit;
|
// Get the POI attributes
|
||||||
|
with TGPSExtraData(APoint.ExtraData) do
|
||||||
// Get the POI attributes
|
begin
|
||||||
with TGPSExtraData(APoint.ExtraData) do
|
clr := Color;
|
||||||
|
sym := Symbol;
|
||||||
|
d := Size div 2;
|
||||||
|
end
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
clr := Color;
|
sym := gpsPlus;
|
||||||
sym := Symbol;
|
clr := clRed;
|
||||||
d := Size div 2;
|
d := 5;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
// Draw the POI symbol
|
// Draw the POI symbol
|
||||||
ADrawer.PenColor := clr;
|
ADrawer.PenColor := clr;
|
||||||
case sym of
|
case sym of
|
||||||
@ -655,12 +506,12 @@ begin
|
|||||||
// Prepare text output: background color...
|
// Prepare text output: background color...
|
||||||
inc(P.Y, d + 4);
|
inc(P.Y, d + 4);
|
||||||
extent := ADrawer.TextExtent(APoint.Name);
|
extent := ADrawer.TextExtent(APoint.Name);
|
||||||
if cbPOITextBgColor.selected = clNone then
|
if CfgFrame.POITextBkColor = clNone then
|
||||||
ADrawer.BrushStyle := bsClear
|
ADrawer.BrushStyle := bsClear
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
ADrawer.BrushStyle := bsSolid;
|
ADrawer.BrushStyle := bsSolid;
|
||||||
ADrawer.BrushColor := cbPOITextBgColor.Selected;
|
ADrawer.BrushColor := CfgFrame.POITextBkColor;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// ... and font
|
// ... and font
|
||||||
@ -673,11 +524,6 @@ begin
|
|||||||
ADrawer.TextOut(P.X - extent.CX div 2, P.Y, APoint.Name);
|
ADrawer.TextOut(P.X - extent.CX div 2, P.Y, APoint.Name);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ ADrawer.BrushColor := clRed;
|
|
||||||
ADrawer.BrushStyle := bsSolid;
|
|
||||||
ADrawer.Ellipse(P.X - R, P.Y - R, P.X + R, P.Y + R);
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
procedure TMainForm.MapViewMouseLeave(Sender: TObject);
|
procedure TMainForm.MapViewMouseLeave(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
UpdateCoords(MaxInt, MaxInt);
|
UpdateCoords(MaxInt, MaxInt);
|
||||||
@ -733,14 +579,14 @@ begin
|
|||||||
if (Button = mbRight) then begin
|
if (Button = mbRight) then begin
|
||||||
rPt := MapView.ScreenToLatLon(Point(X, Y));
|
rPt := MapView.ScreenToLatLon(Point(X, Y));
|
||||||
|
|
||||||
case rgPOIMode.ItemIndex of
|
case CfgFrame.POIMode of
|
||||||
0, 1:
|
pmDefaultDrawing, pmDefaultImage:
|
||||||
begin
|
begin
|
||||||
if not InputQuery('Name of GPS location', 'Please enter name', gpsName) then
|
if not InputQuery('Name of GPS location', 'Please enter name', gpsName) then
|
||||||
exit;
|
exit;
|
||||||
gpsPt := TGpsPoint.CreateFrom(rPt);
|
gpsPt := TGpsPoint.CreateFrom(rPt);
|
||||||
end;
|
end;
|
||||||
2:
|
pmImageList:
|
||||||
begin
|
begin
|
||||||
if GPSPointForm = nil then
|
if GPSPointForm = nil then
|
||||||
begin
|
begin
|
||||||
@ -754,7 +600,7 @@ begin
|
|||||||
GPSPointForm.GetImageIndexData(gpsName, gpsImageIndex);
|
GPSPointForm.GetImageIndexData(gpsName, gpsImageIndex);
|
||||||
TGPSPointOfInterest(gpsPt).ImageIndex := gpsImageIndex;
|
TGPSPointOfInterest(gpsPt).ImageIndex := gpsImageIndex;
|
||||||
end;
|
end;
|
||||||
3:
|
pmCustomDrawing:
|
||||||
begin
|
begin
|
||||||
if GPSPointForm = nil then
|
if GPSPointForm = nil then
|
||||||
begin
|
begin
|
||||||
@ -796,24 +642,10 @@ var
|
|||||||
s: String;
|
s: String;
|
||||||
pt: TRealPoint;
|
pt: TRealPoint;
|
||||||
du: TDistanceUnits;
|
du: TDistanceUnits;
|
||||||
|
provider: String;
|
||||||
begin
|
begin
|
||||||
ini := TMemIniFile.Create(CalcIniName);
|
ini := TMemIniFile.Create(CalcIniName);
|
||||||
try
|
try
|
||||||
HERE_AppID := ini.ReadString('HERE', 'APP_ID', '');
|
|
||||||
HERE_AppCode := ini.ReadString('HERE', 'APP_CODE', '');
|
|
||||||
OpenWeatherMap_ApiKey := ini.ReadString('OpenWeatherMap', 'API_Key', '');
|
|
||||||
ThunderForest_ApiKey := ini.ReadString('ThunderForest', 'API_Key', '');
|
|
||||||
|
|
||||||
if ((HERE_AppID <> '') and (HERE_AppCode <> '')) or
|
|
||||||
(OpenWeatherMap_ApiKey <> '') or
|
|
||||||
(ThunderForest_ApiKey <> '') then
|
|
||||||
begin
|
|
||||||
MapView.Engine.ClearMapProviders;
|
|
||||||
MapView.Engine.RegisterProviders;
|
|
||||||
MapView.GetMapProviders(CbProviders.Items);
|
|
||||||
sgLayers.Columns[1].PickList.Assign(CbProviders.Items);
|
|
||||||
end;
|
|
||||||
|
|
||||||
R := Screen.DesktopRect;
|
R := Screen.DesktopRect;
|
||||||
L := ini.ReadInteger('MainForm', 'Left', Left);
|
L := ini.ReadInteger('MainForm', 'Left', Left);
|
||||||
T := ini.ReadInteger('MainForm', 'Top', Top);
|
T := ini.ReadInteger('MainForm', 'Top', Top);
|
||||||
@ -825,20 +657,34 @@ begin
|
|||||||
if T < R.Top then T := R.Top;
|
if T < R.Top then T := R.Top;
|
||||||
SetBounds(L, T, W, H);
|
SetBounds(L, T, W, H);
|
||||||
|
|
||||||
s := ini.ReadString('MapView', 'Provider', MapView.MapProvider);
|
HERE_AppID := ini.ReadString('HERE', 'APP_ID', '');
|
||||||
if CbProviders.Items.IndexOf(s) = -1 then begin
|
HERE_AppCode := ini.ReadString('HERE', 'APP_CODE', '');
|
||||||
MessageDlg('Map provider "' + s + '" not found.', mtError, [mbOK], 0);
|
OpenWeatherMap_ApiKey := ini.ReadString('OpenWeatherMap', 'API_Key', '');
|
||||||
s := CbProviders.Items[0];
|
ThunderForest_ApiKey := ini.ReadString('ThunderForest', 'API_Key', '');
|
||||||
end;
|
|
||||||
MapView.MapProvider := s;
|
|
||||||
CbProviders.Text := MapView.MapProvider;
|
|
||||||
|
|
||||||
|
list := TStringList.Create;
|
||||||
|
try
|
||||||
|
MapView.Engine.ClearMapProviders;
|
||||||
|
MapView.Engine.RegisterProviders;
|
||||||
|
MapView.GetMapProviders(list);
|
||||||
|
sgLayers.Columns[1].PickList.Assign(list);
|
||||||
|
|
||||||
|
provider := ini.ReadString('MapView', 'Provider', MapView.MapProvider);
|
||||||
|
if MapView.Engine.MapProviderByName(provider) = nil then
|
||||||
|
begin
|
||||||
|
MessageDlg('Map provider "' + provider + '" not found.', mtError, [mbOK], 0);
|
||||||
|
provider := list[0];
|
||||||
|
end;
|
||||||
|
MapView.MapProvider := provider;
|
||||||
|
finally
|
||||||
|
list.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
MapView.InactiveColor := ini.ReadInteger('MapView', 'MapBkgrColor', MapView.InactiveColor);
|
||||||
MapView.Zoom := ini.ReadInteger('MapView', 'Zoom', MapView.Zoom);
|
MapView.Zoom := ini.ReadInteger('MapView', 'Zoom', MapView.Zoom);
|
||||||
pt.Lon := StrToFloatDef(ini.ReadString('MapView', 'Center.Longitude', ''), 0.0, PointFormatSettings);
|
pt.Lon := StrToFloatDef(ini.ReadString('MapView', 'Center.Longitude', ''), 0.0, PointFormatSettings);
|
||||||
pt.Lat := StrToFloatDef(ini.ReadString('MapView', 'Center.Latitude', ''), 0.0, PointFormatSettings);
|
pt.Lat := StrToFloatDef(ini.ReadString('MapView', 'Center.Latitude', ''), 0.0, PointFormatSettings);
|
||||||
MapView.Center := pt;
|
MapView.Center := pt;
|
||||||
MapView.InactiveColor := ini.ReadInteger('MapView', 'MapBkgrColor', MapView.InactiveColor);
|
|
||||||
clbBackColor.ButtonColor := MapView.InactiveColor;
|
|
||||||
|
|
||||||
s := ini.ReadString('MapView', 'DistanceUnits', '');
|
s := ini.ReadString('MapView', 'DistanceUnits', '');
|
||||||
if s <> '' then begin
|
if s <> '' then begin
|
||||||
@ -862,47 +708,13 @@ begin
|
|||||||
List.Free;
|
List.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
i := ini.ReadInteger('Proxy', 'UseProxy', 0);
|
CfgFrame.ReadFromIni(ini);
|
||||||
case i of
|
|
||||||
0: rbNoProxy.Checked := true;
|
|
||||||
1: rbSystemProxy.Checked := true;
|
|
||||||
2: rbProxyData.Checked := true;
|
|
||||||
end;
|
|
||||||
edProxyHost.Text := ini.ReadString('Proxy', 'ProxyHost', edProxyHost.Text);
|
|
||||||
seProxyPort.Value := ini.ReadInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
|
||||||
edProxyUserName.Text := ini.ReadString('Proxy', 'ProxyName', edProxyUserName.Text);
|
|
||||||
edProxyPassword.Text := ini.ReadString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
|
||||||
|
|
||||||
UpdateDownloadEngineProxy;
|
|
||||||
|
|
||||||
finally
|
finally
|
||||||
ini.Free;
|
ini.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.rgPOIModeClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
case rgPOIMode.ItemIndex of
|
|
||||||
0: begin // default
|
|
||||||
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
|
||||||
MapView.OnDrawGPSPoint := nil;
|
|
||||||
MapView.Invalidate;
|
|
||||||
end;
|
|
||||||
1: begin // default POI image
|
|
||||||
MapView.POIImage := POIImage;
|
|
||||||
MapView.OnDrawGPSPoint := nil;
|
|
||||||
MapView.Invalidate;
|
|
||||||
end;
|
|
||||||
2: ; // image from image list
|
|
||||||
3: begin // symbol
|
|
||||||
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
|
||||||
MapView.OnDrawGPSPoint := @MapViewDrawGpsPoint;
|
|
||||||
MapView.Invalidate;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
BtnSelectPOIImage.Enabled := (rgPOIMode.ItemIndex = 1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.sgLayersCheckboxToggled(sender: TObject; aCol,
|
procedure TMainForm.sgLayersCheckboxToggled(sender: TObject; aCol,
|
||||||
aRow: Integer; aState: TCheckboxState);
|
aRow: Integer; aState: TCheckboxState);
|
||||||
begin
|
begin
|
||||||
@ -936,7 +748,7 @@ begin
|
|||||||
MapView.Redraw;
|
MapView.Redraw;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.UpdateLayers;
|
procedure TMainForm.UpdateLayers(Sender: TObject);
|
||||||
var
|
var
|
||||||
TL: TGPSTileLayer;
|
TL: TGPSTileLayer;
|
||||||
begin
|
begin
|
||||||
@ -964,26 +776,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.UpdateDownloadEngineProxy;
|
|
||||||
begin
|
|
||||||
if MapView.DownloadEngine.HasProxySupport then
|
|
||||||
begin
|
|
||||||
MapView.DownloadEngine.SetProxy(
|
|
||||||
rbSystemProxy.Checked, rbProxyData.Checked,
|
|
||||||
edProxyHost.Name, seProxyPort.Value, edProxyUserName.Text, edProxyPassword.Text
|
|
||||||
);
|
|
||||||
rbSystemProxy.Enabled := MapView.DownloadEngine.SupportsSystemProxy;
|
|
||||||
lblProxyHost.Enabled := rbProxyData.Checked;
|
|
||||||
edProxyHost.Enabled := rbProxyData.Checked;
|
|
||||||
lblProxyPort.Enabled := rbProxyData.Checked;
|
|
||||||
seProxyPort.Enabled := rbProxyData.Checked;
|
|
||||||
lblProxyUserName.Enabled := rbProxyData.Checked;
|
|
||||||
edProxyUserName.Enabled := rbProxyData.Checked;
|
|
||||||
lblProxyPassword.Enabled := rbProxyData.Checked;
|
|
||||||
edProxyPassword.Enabled := rbProxyData.Checked;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.UpdateDropdownWidth(ACombobox: TCombobox);
|
procedure TMainForm.UpdateDropdownWidth(ACombobox: TCombobox);
|
||||||
var
|
var
|
||||||
cnv: TControlCanvas;
|
cnv: TControlCanvas;
|
||||||
@ -1082,18 +874,7 @@ begin
|
|||||||
for i := 0 to CbLocations.Items.Count-1 do
|
for i := 0 to CbLocations.Items.Count-1 do
|
||||||
ini.WriteString('Locations', 'Item'+IntToStr(i), CbLocations.Items[i]);
|
ini.WriteString('Locations', 'Item'+IntToStr(i), CbLocations.Items[i]);
|
||||||
|
|
||||||
if rbSystemProxy.Checked then
|
CfgFrame.WriteToIni(ini);
|
||||||
i := 1
|
|
||||||
else if rbProxyData.Checked then
|
|
||||||
i := 2
|
|
||||||
else
|
|
||||||
i := 0;
|
|
||||||
ini.EraseSection('Proxy');
|
|
||||||
ini.WriteInteger('Proxy', 'UseProxy', i);
|
|
||||||
ini.WriteString('Proxy', 'ProxyHost', edProxyHost.Text);
|
|
||||||
ini.WriteInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
|
||||||
ini.WriteString('Proxy', 'ProxyName', edProxyUserName.Text);
|
|
||||||
ini.WriteString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
|
||||||
|
|
||||||
finally
|
finally
|
||||||
ini.Free;
|
ini.Free;
|
||||||
|
@ -36,10 +36,11 @@
|
|||||||
<PackageName Value="LCL"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item3>
|
</Item3>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="6">
|
<Units Count="7">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="MapViewer_Demo.lpr"/>
|
<Filename Value="mapViewer_demo.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="mapviewer_demo"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
@ -71,13 +72,21 @@
|
|||||||
<Filename Value="..\..\source\mvengine_mapreg.inc"/>
|
<Filename Value="..\..\source\mvengine_mapreg.inc"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
</Unit5>
|
</Unit5>
|
||||||
|
<Unit6>
|
||||||
|
<Filename Value="configframe.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="CfgFrame"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Frame"/>
|
||||||
|
<UnitName Value="ConfigFrame"/>
|
||||||
|
</Unit6>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
<Version Value="11"/>
|
<Version Value="11"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<Target>
|
<Target>
|
||||||
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\MapViewer_Demo"/>
|
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\mapviewer_demo"/>
|
||||||
</Target>
|
</Target>
|
||||||
<SearchPaths>
|
<SearchPaths>
|
||||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
@ -6,7 +6,7 @@ uses
|
|||||||
{$IFDEF UNIX}cthreads,{$ENDIF}
|
{$IFDEF UNIX}cthreads,{$ENDIF}
|
||||||
Interfaces, // this includes the LCL widgetset
|
Interfaces, // this includes the LCL widgetset
|
||||||
Forms,
|
Forms,
|
||||||
Main, gpslistform;
|
Main, gpslistform, ConfigFrame;
|
||||||
|
|
||||||
{$R *.res}
|
{$R *.res}
|
||||||
|
|
@ -0,0 +1,144 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="12"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<CompatibilityMode Value="True"/>
|
||||||
|
</Flags>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<Title Value="MapViewer_Demo_with_Addons"/>
|
||||||
|
<Scaled Value="True"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
<UseXPManifest Value="True"/>
|
||||||
|
<XPManifest>
|
||||||
|
<DpiAware Value="True"/>
|
||||||
|
</XPManifest>
|
||||||
|
</General>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<FormatVersion Value="2"/>
|
||||||
|
</RunParams>
|
||||||
|
<RequiredPackages Count="6">
|
||||||
|
<Item1>
|
||||||
|
<PackageName Value="lazmapviewer_bgra"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<PackageName Value="lazmapviewer_rgbgraphics"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<PackageName Value="lazMapViewer_Synapse"/>
|
||||||
|
</Item3>
|
||||||
|
<Item4>
|
||||||
|
<PackageName Value="Printer4Lazarus"/>
|
||||||
|
</Item4>
|
||||||
|
<Item5>
|
||||||
|
<PackageName Value="lazMapViewerPkg"/>
|
||||||
|
</Item5>
|
||||||
|
<Item6>
|
||||||
|
<PackageName Value="LCL"/>
|
||||||
|
</Item6>
|
||||||
|
</RequiredPackages>
|
||||||
|
<Units Count="8">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="mapviewer_demo_with_addons.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="main.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="MainForm"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="Main"/>
|
||||||
|
</Unit1>
|
||||||
|
<Unit2>
|
||||||
|
<Filename Value="gpslistform.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="GPSListViewer"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="globals.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit3>
|
||||||
|
<Unit4>
|
||||||
|
<Filename Value="gpsptform.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="GPSPointForm"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
</Unit4>
|
||||||
|
<Unit5>
|
||||||
|
<Filename Value="..\..\source\mvengine_mapreg.inc"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit5>
|
||||||
|
<Unit6>
|
||||||
|
<Filename Value="configframe.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="CfgFrame"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Frame"/>
|
||||||
|
<UnitName Value="ConfigFrame"/>
|
||||||
|
</Unit6>
|
||||||
|
<Unit7>
|
||||||
|
<Filename Value="configframe_with_addons.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="CfgFrame_with_addons"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Frame"/>
|
||||||
|
<UnitName Value="ConfigFrame_with_Addons"/>
|
||||||
|
</Unit7>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\MapViewer_Demo"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||||
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<Linking>
|
||||||
|
<Debugging>
|
||||||
|
<DebugInfoType Value="dsDwarf3"/>
|
||||||
|
</Debugging>
|
||||||
|
<Options>
|
||||||
|
<Win32>
|
||||||
|
<GraphicApplication Value="True"/>
|
||||||
|
</Win32>
|
||||||
|
</Options>
|
||||||
|
</Linking>
|
||||||
|
<Other>
|
||||||
|
<CustomOptions Value="-dWITH_ADDONS"/>
|
||||||
|
<OtherDefines Count="1">
|
||||||
|
<Define0 Value="WITH_ADDONS"/>
|
||||||
|
</OtherDefines>
|
||||||
|
</Other>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="4">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item3>
|
||||||
|
<Item4>
|
||||||
|
<Name Value="EHTTPClient"/>
|
||||||
|
</Item4>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
@ -0,0 +1,22 @@
|
|||||||
|
program MapViewer_Demo;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF UNIX}cthreads,{$ENDIF}
|
||||||
|
Interfaces, // this includes the LCL widgetset
|
||||||
|
Forms,
|
||||||
|
Main, gpslistform, ConfigFrame, configframe_with_addons;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
|
||||||
|
begin
|
||||||
|
RequireDerivedFormResource:=True;
|
||||||
|
Application.Title:='MapViewer_Demo_with_Addons';
|
||||||
|
Application.Scaled:=True;
|
||||||
|
Application.Initialize;
|
||||||
|
Application.CreateForm(TMainForm, MainForm);
|
||||||
|
Application.CreateForm(TGPSListViewer, GPSListViewer);
|
||||||
|
Application.Run;
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user