jvcllaz: In JvOutlookBar component editor, use IDE images, save/load layout, improve interaction with object inspector (inspired by fieldseditor.pas).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6357 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2018-04-26 10:09:15 +00:00
parent 6d6f3c6f62
commit fe7d894bc7
3 changed files with 617 additions and 193 deletions

View File

@ -2,14 +2,16 @@ object FrmOLBEditor: TFrmOLBEditor
Left = 311
Height = 462
Top = 151
Width = 226
Width = 258
BorderIcons = [biSystemMenu]
Caption = 'OutlookBar Editor'
ClientHeight = 462
ClientWidth = 226
ClientWidth = 258
Constraints.MinHeight = 200
Constraints.MinWidth = 150
OnActivate = FormActivate
OnClose = FormClose
OnCreate = FormCreate
OnDestroy = FormDestroy
OnShow = FormShow
PopupMenu = popForm
@ -17,15 +19,16 @@ object FrmOLBEditor: TFrmOLBEditor
LCLVersion = '1.9.0.0'
object TbTop: TToolBar
Left = 0
Height = 26
Height = 36
Top = 0
Width = 226
Width = 258
AutoSize = True
ButtonHeight = 34
ButtonWidth = 30
Caption = 'TbTop'
EdgeBorders = [ebTop, ebBottom]
Images = ImgList16
ParentShowHint = False
PopupMenu = popToolbar
ShowCaptions = True
TabOrder = 0
object BtnNew: TToolButton
Left = 1
@ -35,33 +38,33 @@ object FrmOLBEditor: TFrmOLBEditor
Style = tbsDropDown
end
object BtnDel: TToolButton
Left = 36
Left = 74
Top = 2
Action = AcDelete
end
object ToolButton1: TToolButton
Left = 59
Height = 22
Left = 115
Height = 34
Top = 2
Caption = 'ToolButton1'
Style = tbsDivider
end
object BtnUp: TToolButton
Left = 64
Left = 120
Top = 2
Action = AcMoveUp
end
object BtnDown: TToolButton
Left = 87
Left = 150
Top = 2
Action = AcMoveDown
end
end
object TvItems: TTreeView
Left = 0
Height = 413
Top = 26
Width = 226
Height = 403
Top = 36
Width = 258
Align = alClient
HideSelection = False
RightClickSelect = True
@ -77,150 +80,14 @@ object FrmOLBEditor: TFrmOLBEditor
Left = 0
Height = 23
Top = 439
Width = 226
Width = 258
Panels = <
item
Width = 50
end>
SimplePanel = False
end
object ImgList16: TImageList
left = 64
top = 96
Bitmap = {
4C69040000001000000010000000000000000000000000000000848484FFFFFF
FFFF000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000FFFFFF0000000000000000848484FF00FF
FFFF0000000000000000848484FF000000000000000000000000000000000000
0000000000000000000000000000848484FF00FFFFFF00000000848484FFFFFF
FFFF00000000848484FF00FFFFFF000000000000000000000000000000000000
000000000000000000000000000000000000848484FF00FFFFFF848484FF00FF
FFFF848484FF00FFFFFF00000000000000000000000000000000000000000000
0000000000000000000000000000FFFFFFFF00FFFFFF848484FF00FFFFFFFFFF
FFFF848484FF848484FF848484FF848484FF000000FF000000FF000000FF0000
00FF000000FF000000FF00000000848484FF848484FF848484FFFFFFFFFF8484
84FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF000000FF848484FF00000000848484FFFFFFFFFF848484FF00FF
FFFF848484FF00FFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFF000000FF848484FF848484FF00FFFFFF00FFFFFF848484FFFFFF
FFFF00FFFFFF848484FF00FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF000000FF848484FFFFFFFFFF000000FFFFFFFFFF848484FF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFF000000FF848484FF00000000000000FF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF000000FF0000
00FF000000FF000000FF848484FF00000000000000FFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF00FFFFFFC6C6
C6FF000000FF000000FF848484FF00000000000000FF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FFC6C6C6FF0000
00FFFFFFFFFF000000FF848484FF00000000000000FFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF000000FFFFFF
FFFF00FFFFFF000000FF848484FF00000000000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF848484FF0000000000000000848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000084FF000084FF848484FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000084FF000084FF848484FF000000000000000000000000000000000000
0000000000000000000000000000000084FF000084FF848484FF000000000000
84FF000084FF848484FF00000000000000000000000000000000000000000000
0000000000000000000000000000848484FF000084FF000084FF000084FF0000
84FF848484FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF0000000000000000848484FF000084FF000084FF0000
84FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF000000FF848484FF00000000848484FF000084FF000084FF0000
84FF000084FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFF000000FF848484FF00000000000084FF000084FF848484FF00FF
FFFF000084FF000084FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF000000FF848484FF848484FF000084FF848484FF00FFFFFFFFFF
FFFF848484FF000084FF848484FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFF000000FF848484FF000084FF000084FF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF848484FF000084FF00FFFFFFFFFFFFFF000000FF000000FF0000
00FF000000FF000000FF848484FF000084FF000000FFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF00FFFFFFC6C6
C6FF000000FF000000FF848484FF848484FF000000FF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FFC6C6C6FF0000
00FFFFFFFFFF000000FF848484FF00000000000000FFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF000000FFFFFF
FFFF00FFFFFF000000FF848484FF00000000000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF848484FF0000000000000000848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000FF848400FF000000FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00FF848400FF848400FF848400FF848400FF848400FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000FF8484
00FF848400FF848400FF848400FF848400FF848400FF848400FF000000FF0000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF848400FF848400FF848400FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
00000000000000000000000000000000000000000000000000FF000000FF0000
00FF000000FF848400FF848400FF848400FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000FF8484
00FF848400FF848400FF848400FF848400FF848400FF848400FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00FF848400FF848400FF848400FF848400FF848400FF000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000FF848400FF848400FF848400FF000000FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000FF848400FF000000FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
}
end
object AlActions: TActionList
Images = ImgList16
OnUpdate = AlActionsUpdate
left = 64
top = 40
@ -243,13 +110,13 @@ object FrmOLBEditor: TFrmOLBEditor
OnExecute = AcDeleteExecute
end
object AcMoveUp: TAction
Caption = 'Move up'
Caption = 'Up'
Hint = 'Move item up'
ImageIndex = 2
OnExecute = AcMoveUpExecute
end
object AcMoveDown: TAction
Caption = 'Move down'
Caption = 'Down'
Hint = 'Move item down'
ImageIndex = 3
OnExecute = AcMoveDownExecute
@ -259,10 +126,11 @@ object FrmOLBEditor: TFrmOLBEditor
Hint = 'Update list'
OnExecute = AcUpdateExecute
end
object AcShowTextLabels: TAction
Caption = 'Text labels'
Hint = 'Show text labels'
OnExecute = AcShowTextLabelsExecute
object AcShowToolbarCaptions: TAction
Caption = 'Toolbar captions'
Checked = True
Hint = 'Show toolbar captions'
OnExecute = AcShowToolbarCaptionsExecute
end
object AcToolbar: TAction
Caption = 'Toolbar'
@ -271,45 +139,294 @@ object FrmOLBEditor: TFrmOLBEditor
end
end
object popNew: TPopupMenu
Images = ImgList16
left = 64
top = 152
object MnuNewPage: TMenuItem
Action = AcNewPage
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF000000FFFFFFFFFF00FFFFFF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FFC6C6C6FF000000FFFFFFFFFF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF00FFFFFFC6C6C6FF000000FF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FF000000FF000000FF000000FF000000FF848484FFFFFFFFFF0000
00FFFFFFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF00FF
FFFF00FFFFFF848484FFFFFFFFFF00FFFFFF848484FF00FFFFFFFFFFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FF000000008484
84FFFFFFFFFF848484FF00FFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF8484
84FF848484FFFFFFFFFF848484FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FFFFFFFFFF00FF
FFFF848484FF00FFFFFFFFFFFFFF848484FF848484FF848484FF848484FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000008484
84FF00FFFFFF848484FF00FFFFFF848484FF00FFFFFF00000000000000000000
0000000000000000000000000000000000000000000000000000848484FF00FF
FFFF00000000848484FFFFFFFFFF00000000848484FF00FFFFFF000000000000
000000000000000000000000000000000000000000000000000000FFFFFF0000
000000000000848484FF00FFFFFF0000000000000000848484FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FFFFFFFFFF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end
object MnuNewButton: TMenuItem
Action = AcNewButton
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF000000FFFFFFFFFF00FFFFFF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FFC6C6C6FF000000FFFFFFFFFF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF00FFFFFFC6C6C6FF000000FF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FF000000FF000000FF000000FF000000FF848484FFFFFFFFFF0000
00FFFFFFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF00FF
FFFF00FFFFFF848484FFFFFFFFFF00FFFFFF848484FF00FFFFFFFFFFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FF000000008484
84FFFFFFFFFF848484FF00FFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF8484
84FF848484FFFFFFFFFF848484FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FFFFFFFFFF00FF
FFFF848484FF00FFFFFFFFFFFFFF848484FF848484FF848484FF848484FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000008484
84FF00FFFFFF848484FF00FFFFFF848484FF00FFFFFF00000000000000000000
0000000000000000000000000000000000000000000000000000848484FF00FF
FFFF00000000848484FFFFFFFFFF00000000848484FF00FFFFFF000000000000
000000000000000000000000000000000000000000000000000000FFFFFF0000
000000000000848484FF00FFFFFF0000000000000000848484FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FFFFFFFFFF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end
end
object popToolbar: TPopupMenu
Images = ImgList16
left = 64
top = 208
object MenuItem1: TMenuItem
Action = AcShowTextLabels
Action = AcShowToolbarCaptions
end
end
object popForm: TPopupMenu
Images = ImgList16
left = 64
top = 264
object MenuItem2: TMenuItem
Action = AcNewPage
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF000000FFFFFFFFFF00FFFFFF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FFC6C6C6FF000000FFFFFFFFFF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF00FFFFFFC6C6C6FF000000FF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FF000000FF000000FF000000FF000000FF848484FFFFFFFFFF0000
00FFFFFFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF00FF
FFFF00FFFFFF848484FFFFFFFFFF00FFFFFF848484FF00FFFFFFFFFFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FF000000008484
84FFFFFFFFFF848484FF00FFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF8484
84FF848484FFFFFFFFFF848484FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FFFFFFFFFF00FF
FFFF848484FF00FFFFFFFFFFFFFF848484FF848484FF848484FF848484FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000008484
84FF00FFFFFF848484FF00FFFFFF848484FF00FFFFFF00000000000000000000
0000000000000000000000000000000000000000000000000000848484FF00FF
FFFF00000000848484FFFFFFFFFF00000000848484FF00FFFFFF000000000000
000000000000000000000000000000000000000000000000000000FFFFFF0000
000000000000848484FF00FFFFFF0000000000000000848484FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FFFFFFFFFF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end
object MenuItem3: TMenuItem
Action = AcNewButton
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF000000FFFFFFFFFF00FFFFFF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FFC6C6C6FF000000FFFFFFFFFF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF00FFFFFFC6C6C6FF000000FF000000FF848484FF000000000000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FF000000FF000000FF000000FF000000FF848484FFFFFFFFFF0000
00FFFFFFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF00FF
FFFF00FFFFFF848484FFFFFFFFFF00FFFFFF848484FF00FFFFFFFFFFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FF000000008484
84FFFFFFFFFF848484FF00FFFFFF848484FF00FFFFFFFFFFFFFF00FFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF848484FF8484
84FF848484FFFFFFFFFF848484FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FFFFFFFFFF00FF
FFFF848484FF00FFFFFFFFFFFFFF848484FF848484FF848484FF848484FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000000008484
84FF00FFFFFF848484FF00FFFFFF848484FF00FFFFFF00000000000000000000
0000000000000000000000000000000000000000000000000000848484FF00FF
FFFF00000000848484FFFFFFFFFF00000000848484FF00FFFFFF000000000000
000000000000000000000000000000000000000000000000000000FFFFFF0000
000000000000848484FF00FFFFFF0000000000000000848484FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000848484FFFFFFFFFF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end
object MenuItem4: TMenuItem
Action = AcDelete
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF000000000000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF848484FF000000000000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF000000FFFFFFFFFF00FFFFFF000000FF848484FF848484FF0000
00FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FFC6C6C6FF000000FFFFFFFFFF000000FF848484FF000084FF0000
00FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFF000000FF00FFFFFFC6C6C6FF000000FF000000FF848484FF000084FF0000
84FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF848484FF000084FF00FFFFFFFFFF
FFFF000000FF000000FF000000FF000000FF000000FF848484FF848484FF0000
84FF848484FF00FFFFFFFFFFFFFF848484FF000084FF848484FFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF000000000000
84FF000084FF848484FF00FFFFFF000084FF000084FFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FF000000008484
84FF000084FF000084FF000084FF000084FFFFFFFFFF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF848484FF000000008484
84FF000084FF000084FF000084FFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF848484FF848484FF0000
84FF000084FF000084FF000084FF848484FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF00000000000084FF0000
84FF848484FF00000000000084FF000084FF848484FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000084FF000084FF848484FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000084FF000084FF848484FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end
object MenuItem5: TMenuItem
Caption = '-'
end
object MenuItem6: TMenuItem
Action = AcMoveUp
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF848400FF848400FF848400FF0000
00FF000000FF000000FF000000FF000000000000000000000000000000000000
000000000000000000FF848400FF848400FF848400FF848400FF848400FF8484
00FF848400FF000000FF00000000000000000000000000000000000000000000
00000000000000000000000000FF848400FF848400FF848400FF848400FF8484
00FF000000FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF848400FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end
object MenuItem7: TMenuItem
Action = AcMoveDown
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000FF848400FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000FF848400FF848400FF848400FF848400FF8484
00FF000000FF0000000000000000000000000000000000000000000000000000
000000000000000000FF848400FF848400FF848400FF848400FF848400FF8484
00FF848400FF000000FF00000000000000000000000000000000000000000000
0000000000FF000000FF000000FF000000FF848400FF848400FF848400FF0000
00FF000000FF000000FF000000FF000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF848400FF848400FF848400FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FF000000FF000000FF000000FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end
object MenuItem8: TMenuItem
Caption = '-'

View File

@ -21,9 +21,8 @@ type
AcMoveDown: TAction;
AcToolbar: TAction;
AcUpdate: TAction;
AcShowTextLabels: TAction;
AcShowToolbarCaptions: TAction;
AlActions: TActionList;
ImgList16: TImageList;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
@ -51,11 +50,13 @@ type
procedure AcMoveUpExecute(Sender: TObject);
procedure AcNewButtonExecute(Sender: TObject);
procedure AcNewPageExecute(Sender: TObject);
procedure AcShowTextLabelsExecute(Sender: TObject);
procedure AcShowToolbarCaptionsExecute(Sender: TObject);
procedure AcToolbarExecute(Sender: TObject);
procedure AcUpdateExecute(Sender: TObject);
procedure AlActionsUpdate(AAction: TBasicAction; var Handled: Boolean);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TvItemsChange(Sender: TObject; Node: TTreeNode);
@ -64,11 +65,21 @@ type
procedure TvItemsEdited(Sender: TObject; Node: TTreeNode; var S: string);
procedure TvItemsKeyPress(Sender: TObject; var Key: char);
private
FUpdateSelectionCount: Integer;
FLargeToolBtnSize: Integer;
FSmallToolBtnSize: Integer;
procedure BeginUpdateSelection;
procedure EndUpdateSelection;
procedure BuildTreeData;
procedure DeleteItem(Item: TPersistent);
procedure ExchangeItems(Node1, Node2: TTreeNode);
class function GetButtonName(OLBar: TJvCustomOutlookBar): string;
class function GetPageName(OLBar: TJvCustomOutlookBar): string;
// class function GetButtonName(OLBar: TJvCustomOutlookBar): string;
// class function GetPageName(OLBar: TJvCustomOutlookBar): string;
// procedure OnComponentRenamed(AComponent: TComponent);
procedure OnGetSelection(const ASelection: TPersistentSelectionList);
procedure OnPersistentAdded(APersistent: TPersistent; Select: boolean);
procedure OnPersistentDeleting(APersistent: TPersistent);
procedure OnSetSelection(const ASelection: TPersistentSelectionList);
procedure SelectButtonInObjectInspector(AButton: TJvOutlookBarButton; ForceUpdate: Boolean);
procedure SelectPageInObjectInspector(APage: TJvOutlookBarPage; ForceUpdate: Boolean);
function ValidateTreeData: boolean;
@ -78,9 +89,12 @@ type
FDesigner: TComponentEditorDesigner;
function CheckValidButtonNode(Node: TTreeNode): boolean;
function CheckValidPageNode(Node: TTreeNode): boolean;
function FindNode(ACandidate: TPersistent; out ANode: TTreeNode): Boolean;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure SelectionChanged(AOrderChanged: Boolean = false);
public
constructor Create(AOwner: TComponent); override;
procedure RefreshNames;
procedure SetData(AOutlookBar: TJvCustomOutlookBar; ADesigner: TComponentEditorDesigner);
property Outlookbar: TJvCustomOutlookBar read FOutlookBar;
@ -95,7 +109,7 @@ implementation
{$R *.lfm}
uses
PropEditUtils,
PropEditUtils, IDEWindowIntf, IDEImagesIntf,
JvConsts;
type
@ -107,6 +121,36 @@ const
{ TFrmOLBEditor }
constructor TFrmOLBEditor.Create(AOwner: TComponent);
begin
inherited;
FLargeToolBtnSize := 34;
FSmallToolBtnSize := 22;
TbTop.ButtonHeight := FLargeToolBtnSize;
TbTop.ButtonWidth := TbTop.ButtonHeight;
AlActions.Images := IDEImages.Images_16;
AcNewPage.ImageIndex := IDEImages.LoadImage('laz_add');
AcNewButton.ImageIndex := IDEImages.LoadImage('laz_add');
AcDelete.ImageIndex := IDEImages.LoadImage('laz_delete');
AcMoveDown.ImageIndex := IDEImages.LoadImage('arrow_down');
AcMoveUp.ImageIndex := IDEImages.LoadImage('arrow_up');
TbTop.Images := AlActions.Images;
popNew.Images := AlActions.Images;
popForm.Images := AlActions.Images;
popToolbar.Images := AlActions.Images;
if Assigned(GlobalDesignHook) then
begin
// GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed);
GlobalDesignHook.AddHandlerPersistentDeleting(@OnPersistentDeleting);
GlobalDesignHook.AddHandlerGetSelection(@OnGetSelection);
GlobalDesignHook.AddHandlerSetSelection(@OnSetSelection);
GlobalDesignHook.AddHandlerPersistentAdded(@OnPersistentAdded);
end;
end;
procedure TFrmOLBEditor.AcDeleteExecute(Sender: TObject);
var
P: TPersistent;
@ -116,6 +160,16 @@ begin
if (FOutlookBar = nil) or (FDesigner = nil) or (TvItems.Selected = nil) then
exit;
BeginUpdateSelection;
FDesigner.DeleteSelection;
EndUpdateSelection;
exit;
TvItems.Items.BeginUpdate;
try
node := TvItems.Selected;
@ -177,17 +231,18 @@ begin
N := N.Parent;
page := TJvOutlookBarPage(N.Data);
btn := page.Buttons.Add;
// btn.Caption := FDesigner.CreateUniqueComponentName(btn.ClassName);
btn.Caption := GetButtonName(OutlookBar);
TvItems.Selected := TvItems.Items.AddChildObject(N, btn.Caption, btn);
FDesigner.PropertyEditorHook.PersistentAdded(btn, True);
FDesigner.Modified;
if FindNode(btn, N) then TvItems.Selected := N;
//TvItems.Selected := TvItems.Items.AddChildObject(N, btn.Caption, btn);
//SelectionChanged;
end;
procedure TFrmOLBEditor.AcNewPageExecute(Sender: TObject);
var
page: TJvOutlookBarPage;
node: TTreeNode;
begin
if (FOutlookBar = nil) or (FDesigner = nil) then
exit;
@ -195,25 +250,24 @@ begin
exit;
page := THackOutlookBar(FOutlookBar).Pages.Add;
// page.Caption := FDesigner.CreateUniqueComponentName(page.ClassName);
page.Caption := GetPageName(FOutlookBar);
TvItems.Selected := TvItems.Items.AddObject(nil, page.Caption, page);
FDesigner.PropertyEditorHook.PersistentAdded(page,True);
FDesigner.Modified;
if FindNode(page, node) then TvItems.Selected := node;
//TvItems.Selected := TvItems.Items.AddObject(nil, page.Caption, page);
//SelectionChanged;
end;
procedure TFrmOLBEditor.AcShowTextLabelsExecute(Sender: TObject);
procedure TFrmOLBEditor.AcShowToolbarCaptionsExecute(Sender: TObject);
begin
AcShowTextLabels.Checked := not AcShowTextLabels.Checked;
tbTop.ShowCaptions := AcShowTextLabels.Checked;
if AcShowTextLabels.Checked then begin
tbTop.ButtonHeight := 32;
tbTop.ButtonWidth := 32;
AcShowToolbarCaptions.Checked := not AcShowToolbarCaptions.Checked;
tbTop.ShowCaptions := AcShowToolbarCaptions.Checked;
if AcShowToolbarCaptions.Checked then begin
TbTop.ButtonHeight := FLargeToolBtnSize;
TbTop.ButtonWidth := FLargeToolBtnSize;
end else
begin
tbTop.ButtonHeight := 22;
tbTop.ButtonWidth := 22;
TbTop.ButtonHeight := FSmallToolBtnSize;
TbTop.ButtonWidth := FSmallToolBtnSize;
end;
end;
@ -240,6 +294,11 @@ begin
AcUpdate.Enabled := Screen.ActiveForm = Self;
end;
procedure TFrmOLBEditor.BeginUpdateSelection;
begin
Inc(FUpdateSelectionCount);
end;
procedure TFrmOLBEditor.BuildTreeData;
var
i, j: Integer;
@ -339,6 +398,13 @@ begin
end;
end;
procedure TFrmOLBEditor.EndUpdateSelection;
begin
dec(FUpdateSelectionCount);
if FUpdateSelectionCount=0 then
SelectionChanged;
end;
procedure TFrmOLBEditor.ExchangeItems(Node1, Node2: TTreeNode);
var
I: Integer;
@ -348,6 +414,7 @@ begin
I := TJvOutlookBarButton(Node1.Data).Index;
TJvOutlookBarButton(Node1.Data).Index := TJvOutlookBarButton(Node2.Data).Index;
TJvOutlookBarButton(Node2.Data).Index := I;
FDesigner.PropertyEditorHook.PersistentAdded(TJvOutlookBarButton(Node1.Data), True);
end
else
if TObject(Node1.Data) is TJvOutlookBarPage then
@ -355,7 +422,39 @@ begin
I := TJvOutlookBarPage(Node1.Data).Index;
TJvOutlookBarPage(Node1.Data).Index := TJvOutlookBarPage(Node2.Data).Index;
TJvOutlookBarPage(Node2.Data).Index := I;
FDesigner.PropertyEditorHook.PersistentAdded(TJvOutlookBarPage(Node1.Data), True);
end;
FDesigner.Modified;
end;
function TFrmOLBEditor.FindNode(ACandidate: TPersistent;
out ANode: TTreeNode): Boolean;
var
pageNode, btnNode: TTreeNode;
begin
pageNode := TvItems.Items.GetFirstNode;
while pageNode <> nil do begin
if (ACandidate is TJvOutlookBarPage) then begin
if TJvOutlookBarPage(pageNode.Data) = ACandidate then begin
ANode := pageNode;
Result := true;
exit;
end;
end else
if (ACandidate is TJvOutlookBarButton) then begin
btnNode := pageNode.GetFirstChild;
while btnnode <> nil do begin
if TJvOutlookBarButton(btnNode.Data) = ACandidate then begin
ANode := btnNode;
Result := true;
exit;
end;
btnNode := btnNode.GetNextSibling;
end;
end;
pageNode := pageNode.GetNextSibling;
end;
Result := false;
end;
procedure TFrmOLBEditor.FormActivate(Sender: TObject);
@ -366,10 +465,31 @@ begin
BuildTreeData;
end;
procedure TFrmOLBEditor.FormClose(Sender: TObject;
var CloseAction: TCloseAction);
begin
IDEDialogLayoutList.SaveLayout(Self);
end;
procedure TFrmOLBEditor.FormCreate(Sender: TObject);
begin
IDEDialogLayoutList.ApplyLayout(Self);
end;
procedure TFrmOLBEditor.FormDestroy(Sender: TObject);
begin
if FOutlookBar <> nil then
FOutlookBar.RemoveFreeNotification(self);
if GlobalDesignHook = Nil then
Exit;
(*
if Assigned(FComponentEditor) and Assigned(LinkDataset)
and not (csDestroying in LinkDataset.ComponentState)
and (FieldsListBox.SelCount > 0) then
GlobalDesignHook.SelectOnlyThis(LinkDataset);
*)
GlobalDesignHook.RemoveAllHandlersForObject(Self);
end;
procedure TFrmOLBEditor.FormShow(Sender: TObject);
@ -378,7 +498,7 @@ begin
exit;
BuildTreeData;
end;
(*
class function TFrmOLBEditor.GetButtonName(OLBar: TJvCustomOutlookBar): string;
const
cPrefix = 'JvOutlookBarButton';
@ -445,7 +565,7 @@ begin
end;
end;
end;
*)
procedure TFrmOLBEditor.Notification(AComponent: TComponent;
Operation: TOperation);
begin
@ -458,6 +578,102 @@ begin
SetData(nil, nil);
end;
end;
(*
procedure TFrmOLBEditor.OnComponentRenamed(AComponent: TComponent);
var
page: TJvOutlookBarPage;
button: TJvOutlookBarButton;
i: integer;
begin
if AComponent is TJvOutlookBarPage then begin
page := TJvOutlookBarPage(AComponent);
if AComponent is TField then begin
Field := TField(AComponent);
if not Assigned( Field ) then Exit;
i := FieldsListBox.Items.IndexOfObject(Field);
if i >= 0 then
FieldsListBox.Items[i] := Field.FieldName;
end else
if AComponent is TDataset And (AComponent = LinkDataset) then
Caption := fesFeTitle + ' - ' + LinkDataset.Name;
end; *)
procedure TFrmOLBEditor.OnGetSelection(
const ASelection: TPersistentSelectionList);
var
pagenode, btnnode: TTreeNode;
begin
if not Assigned(ASelection) then
exit;
if ASelection.Count > 0 then
ASelection.Clear;
pageNode := TvItems.Items.GetFirstNode;
while pageNode <> nil do begin
if pageNode.Selected then
ASelection.Add(TPersistent(pageNode.Data));
btnNode := pageNode.GetFirstChild;
while btnNode <> nil do begin
if btnNode.selected then
ASelection.Add(TPersistent(btnNode.Data));
btnNode := btnNode.GetNextSibling;
end;
pageNode := pageNode.GetNextSibling;
end;
end;
procedure TFrmOLBEditor.OnPersistentAdded(APersistent: TPersistent; Select: boolean);
var
olb: TJvCustomOutlookBar;
page: TJvOutlookBarPage;
button: TJvOutlookBarButton;
node: TTreeNode;
begin
if not Assigned(APersistent) then exit;
if (APersistent is TJvOutlookBarPage) then begin
page := TJvOutlookBarPage(APersistent);
olb := THackOutlookbar((page.Collection).Owner);
if (olb = FOutlookBar) then begin
if not FindNode(page, node) then
node := TvItems.Items.AddObject(nil, page.Caption, page);
TvItems.Selected := node;
end;
end else
if (APersistent is TJvOutlookBarButton) then begin
button := TJvOutlookBarButton(APersistent);
page := TJvOutlookBarPage(button.Collection.Owner);
olb := THackOutlookBar(page.Collection.Owner);
if (olb = FOutlookBar) and FindNode(page, node) then begin
if not FindNode(button, node) then
node := TvItems.Items.AddChildObject(node, button.Caption, button);
TvItems.Selected := node;
end;
end;
end;
procedure TFrmOLBEditor.OnPersistentDeleting(APersistent: TPersistent);
var
node: TTreeNode;
begin
if FindNode(APersistent, node) then
TvItems.Items.Delete(node);
end;
procedure TFrmOLBEditor.OnSetSelection(
const ASelection: TPersistentSelectionList);
var
i: Integer;
node: TTreeNode;
begin
if Assigned(ASelection) then begin
//Unselect all
for i := 0 to TvItems.SelectionCount-1 do
TvItems.Items.GetSelections(I).Selected := false;
//select from list
for i := 0 to ASelection.Count - 1 do
if FindNode(ASelection.Items[i], node) then
node.Selected := true;
end;
end;
procedure TFrmOLBEditor.RefreshNames;
var
@ -486,6 +702,29 @@ begin
end;
end;
procedure TFrmOLBEditor.SelectionChanged(AOrderChanged: Boolean = false);
var
SelList: TPersistentSelectionList;
begin
if (FUpdateSelectionCount>0) or (GlobalDesignHook=nil) then
exit;
GlobalDesignHook.RemoveHandlerSetSelection(@OnSetSelection);
try
SelList := TPersistentSelectionList.Create;
SelList.ForceUpdate := AOrderChanged;
try
OnGetSelection(SelList);
FDesigner.PropertyEditorHook.SetSelection(SelList) ;
finally
SelList.Free;
end;
finally
GlobalDesignHook.AddHandlerSetSelection(@OnSetSelection);
end;
AlActions.UpdateAction(nil);
end;
procedure TFrmOLBEditor.SelectPageInObjectInspector(APage: TJvOutlookbarPage;
ForceUpdate: Boolean);
var
@ -566,8 +805,6 @@ begin
raise Exception.Create('TFrmOLBEditor.TvItemsChange: ' + SDamagedTreeStructure);
page := TJvOutlookBarPage(Obj);
SelectPageInObjectInspector(page, true);
(****************** FIX ME
FDesigner.SelectOnlyThisComponent(page); *)
index := olb.Pages.IndexOf(page);
if index = -1 then
raise Exception.Create('TFrmOLBEditor.TvItemsChange: ' + SDamagedTreeStructure);
@ -577,9 +814,6 @@ begin
begin
btn := TJvOutlookBarButton(Obj);
SelectButtonInObjectInspector(btn, true);
(******************* FIX ME
FDesigner.SelectOnlyThisComponent(btn);
**********)
if not(CheckValidButtonNode(Node)) then
raise Exception.Create('TFrmOLBEditor.TvItemsChange: ' + SDamagedTreeStructure);
page := TJvOutlookBarPage(Node.Parent.Data);
@ -591,6 +825,7 @@ begin
end else
FDesigner.SelectOnlyThisComponent(FOutlookBar);
FDesigner.Modified;
// CheckActionsAvailability;
end;

View File

@ -95,7 +95,6 @@ type
procedure Change;
procedure SetEnabled(const Value: Boolean);
procedure SetAction(Value: TBasicAction);
function GetOutlookBar: TJvCustomOutlookBar;
protected
function GetDisplayName: string; override;
function GetActionLinkClass: TJvOutlookBarButtonActionLinkClass; dynamic;
@ -108,6 +107,7 @@ type
procedure Assign(Source: TPersistent); override;
procedure Click; dynamic;
procedure EditCaption;
function GetOutlookBar: TJvCustomOutlookBar;
// A property for user's usage, allowing to link an object to the button
property LinkedObject: TObject read FLinkedObject write FLinkedObject;
@ -177,15 +177,14 @@ type
protected
procedure DoPictureChange(Sender: TObject);
function GetDisplayName: string; override;
function GetOutlookBar: TJvCustomOutlookBar;
public
constructor Create(ACollection: Classes.TCollection); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure EditCaption;
function GetOutlookBar: TJvCustomOutlookBar;
property DownButton: TJvOutlookBarButton read GetDownButton write SetDownButton;
property DownIndex: Integer read GetDownIndex write SetDownIndex;
// A property for user's usage, allowing to link an objet to the page.
property LinkedObject: TObject read FLinkedObject write FLinkedObject;
published
@ -510,6 +509,9 @@ uses
{$R ..\..\resource\JvOutlookBar.res}
type
THackOutlookBar = class(TJvCustomOutlookBar);
const
cTextMargins = 3;
cMinTextWidth = 32;
@ -542,6 +544,74 @@ begin
Result := (Method1.Code = Method2.Code) and (Method1.Data = Method2.Data);
end;
function GetUniquePageName(OLBar: TJvCustomOutlookBar): string;
const
cPrefix = 'JvOutlookBarPage';
cTemplate = cPrefix + '%d';
var
K: Integer;
Tmp: string;
function IsUnique(const S: string): Boolean;
var
I: Integer;
begin
Result := False;
for I := 0 to THackOutlookBar(OLBar).Pages.Count - 1 do
if AnsiSameText(THackOutlookBar(OLBar).Pages[I].Caption, S) then
Exit;
Result := True;
end;
begin
Result := cPrefix;
if OLBar <> nil then
for K := 1 to MaxInt - 1 do
begin
Tmp := Format(cTemplate, [K]);
if IsUnique(Tmp) then
begin
Result := Tmp;
Exit;
end;
end;
end;
function GetUniqueButtonName(OLBar: TJvCustomOutlookBar): string;
const
cPrefix = 'JvOutlookBarButton';
cTemplate = cPrefix + '%d';
var
K: Integer;
Tmp: string;
function IsUnique(const S: string): Boolean;
var
I, J: Integer;
begin
Result := False;
for I := 0 to THackOutlookBar(OLBar).Pages.Count - 1 do
for J := 0 to THackOutlookBar(OLBar).Pages[I].Buttons.Count - 1 do
if AnsiSameText(THackOutlookBar(OLBar).Pages[I].Buttons[J].Caption, S) then
Exit;
Result := True;
end;
begin
Result := cPrefix;
if OLBar <> nil then
for K := 1 to MaxInt - 1 do
begin
Tmp := Format(cTemplate, [K]);
if IsUnique(Tmp) then
begin
Result := Tmp;
Exit;
end;
end;
end;
//=== { TJvOutlookBarEdit } ==================================================
type
@ -1030,6 +1100,7 @@ end;
function TJvOutlookBarButtons.Add: TJvOutlookBarButton;
begin
Result := TJvOutlookBarButton(inherited Add);
Result.Caption := GetUniqueButtonName(Result.GetOutlookBar);
end;
procedure TJvOutlookBarButtons.Assign(Source: TPersistent);
@ -1347,6 +1418,7 @@ end;
function TJvOutlookBarPages.Add: TJvOutlookBarPage;
begin
Result := TJvOutlookBarPage(inherited Add);
Result.Caption := GetUniquePageName(Result.GetOutlookBar);
end;
procedure TJvOutlookBarPages.Assign(Source: TPersistent);