IDE: Add a dedicated button for LclWidgetType macro in "Additions and Overrides" page.

git-svn-id: trunk@45086 -
This commit is contained in:
juha 2014-05-18 22:53:51 +00:00
parent 761b0905cc
commit b7f34fb2ec
2 changed files with 162 additions and 82 deletions

View File

@ -6,8 +6,8 @@ object CompOptModeMatrixFrame: TCompOptModeMatrixFrame
ClientHeight = 429 ClientHeight = 429
ClientWidth = 550 ClientWidth = 550
TabOrder = 0 TabOrder = 0
DesignLeft = 307 DesignLeft = 414
DesignTop = 162 DesignTop = 101
object BMMatrixToolBar: TToolBar object BMMatrixToolBar: TToolBar
Left = 0 Left = 0
Height = 26 Height = 26
@ -18,80 +18,93 @@ object CompOptModeMatrixFrame: TCompOptModeMatrixFrame
List = True List = True
ShowCaptions = True ShowCaptions = True
TabOrder = 0 TabOrder = 0
object BMMMoveUpToolButton: TToolButton object BMMMoveUpButton: TToolButton
Left = 1 Left = 1
Top = 0 Top = 0
Caption = 'Up' Caption = 'Up'
OnClick = BMMMoveUpToolButtonClick OnClick = BMMMoveUpButtonClick
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
end end
object BMMMoveDownToolButton: TToolButton object BMMMoveDownButton: TToolButton
Left = 24 Left = 26
Top = 0 Top = 0
Caption = 'Down' Caption = 'Down'
OnClick = BMMMoveDownToolButtonClick OnClick = BMMMoveDownButtonClick
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
end end
object BMMUndoToolButton: TToolButton object BMMUndoButton: TToolButton
Left = 73 Left = 78
Top = 0 Top = 0
Caption = 'Undo' Caption = 'Undo'
OnClick = BMMUndoToolButtonClick OnClick = BMMUndoButtonClick
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
end end
object BMMRedoToolButton: TToolButton object BMMRedoToolButton: TToolButton
Left = 110 Left = 119
Top = 0 Top = 0
Caption = 'Redo' Caption = 'Redo'
OnClick = BMMRedoToolButtonClick OnClick = BMMRedoToolButtonClick
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
end end
object BMMDeleteToolButton: TToolButton object BMMDeleteButton: TToolButton
Left = 207 Left = 408
Top = 0 Top = 0
Caption = 'Delete' Caption = 'Delete'
OnClick = BMMDeleteToolButtonClick OnClick = BMMDeleteButtonClick
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
end end
object ToolButton1: TToolButton object ToolButton1: TToolButton
Left = 63 Left = 68
Top = 0 Top = 0
Width = 10 Width = 10
Caption = 'ToolButton1' Caption = 'ToolButton1'
Style = tbsSeparator Style = tbsSeparator
end end
object ToolButton2: TToolButton object ToolButton2: TToolButton
Left = 145 Left = 158
Top = 0 Top = 0
Width = 10 Width = 10
Caption = 'ToolButton2' Caption = 'ToolButton2'
Style = tbsSeparator Style = tbsSeparator
end end
object ToolButton3: TToolButton object ToolButton3: TToolButton
Left = 197 Left = 398
Top = 0 Top = 0
Width = 10 Width = 10
Caption = 'ToolButton3' Caption = 'ToolButton3'
Style = tbsSeparator Style = tbsSeparator
end end
object BMMAddToolButton: TToolButton object BMMAddOtherButton: TToolButton
Left = 155 Left = 315
Top = 0 Top = 0
Caption = 'Add' Caption = 'Add Other'
DropdownMenu = BMMAddPopupMenu DropdownMenu = BMMAddOtherPopupMenu
OnClick = BMMAddToolButtonClick OnClick = BMMAddOtherButtonClick
Style = tbsDropDown Style = tbsDropDown
end end
object BMMAddLclWidgetButton: TToolButton
Left = 168
Top = 0
Caption = 'Add LCLWidgetType'
OnClick = BMMAddLclWidgetButtonClick
Style = tbsDropDown
end
object ToolButton4: TToolButton
Left = 305
Top = 0
Width = 10
Caption = 'ToolButton4'
Style = tbsSeparator
end
end end
object BMMAddPopupMenu: TPopupMenu object BMMAddOtherPopupMenu: TPopupMenu
OnPopup = BMMAddPopupMenuPopup left = 240
left = 232 top = 117
top = 93
object BMMNewCustomOptionMenuItem: TMenuItem object BMMNewCustomOptionMenuItem: TMenuItem
Caption = 'New Custom Option' Caption = 'New Custom Option'
OnClick = BMMNewCustomOptionMenuItemClick OnClick = BMMNewCustomOptionMenuItemClick
@ -109,4 +122,12 @@ object CompOptModeMatrixFrame: TCompOptModeMatrixFrame
OnClick = BMMNewTargetMenuItemClick OnClick = BMMNewTargetMenuItemClick
end end
end end
object BMMAddLclWidgetPopupMenu: TPopupMenu
left = 240
top = 64
object BMMLCLWidgetTypeMenuItem: TMenuItem
Caption = 'Set LCLWidgetType'
OnClick = BMMNewTargetMenuItemClick
end
end
end end

View File

@ -46,40 +46,44 @@ type
{ TCompOptModeMatrixFrame } { TCompOptModeMatrixFrame }
TCompOptModeMatrixFrame = class(TAbstractIDEOptionsEditor) TCompOptModeMatrixFrame = class(TAbstractIDEOptionsEditor)
BMMAddLclWidgetPopupMenu: TPopupMenu;
BMMatrixToolBar: TToolBar; BMMatrixToolBar: TToolBar;
BMMDeleteToolButton: TToolButton; BMMDeleteButton: TToolButton;
BMMMoveDownToolButton: TToolButton; BMMMoveDownButton: TToolButton;
BMMMoveUpToolButton: TToolButton; BMMMoveUpButton: TToolButton;
BMMLCLWidgetTypeMenuItem: TMenuItem;
BMMRedoToolButton: TToolButton; BMMRedoToolButton: TToolButton;
BMMUndoToolButton: TToolButton; BMMUndoButton: TToolButton;
BMMNewCustomOptionMenuItem: TMenuItem; BMMNewCustomOptionMenuItem: TMenuItem;
BMMAddPopupMenu: TPopupMenu; BMMAddOtherPopupMenu: TPopupMenu;
BMMNewTargetMenuItem: TMenuItem; BMMNewTargetMenuItem: TMenuItem;
BMMAddToolButton: TToolButton; BMMAddOtherButton: TToolButton;
BMMNewIDEMacroMenuItem: TMenuItem; BMMNewIDEMacroMenuItem: TMenuItem;
BMMNewOutDirMenuItem: TMenuItem; BMMNewOutDirMenuItem: TMenuItem;
ToolButton1: TToolButton; ToolButton1: TToolButton;
ToolButton2: TToolButton; ToolButton2: TToolButton;
ToolButton3: TToolButton; ToolButton3: TToolButton;
procedure BMMDeleteToolButtonClick(Sender: TObject); BMMAddLclWidgetButton: TToolButton;
procedure BMMMoveDownToolButtonClick(Sender: TObject); ToolButton4: TToolButton;
procedure BMMMoveUpToolButtonClick(Sender: TObject); procedure BMMDeleteButtonClick(Sender: TObject);
procedure BMMAddPopupMenuPopup(Sender: TObject); procedure BMMMoveDownButtonClick(Sender: TObject);
procedure BMMMoveUpButtonClick(Sender: TObject);
procedure BMMNewIDEMacroMenuItemClick(Sender: TObject); procedure BMMNewIDEMacroMenuItemClick(Sender: TObject);
procedure BMMNewOutDirMenuItemClick(Sender: TObject); procedure BMMNewOutDirMenuItemClick(Sender: TObject);
procedure BMMRedoToolButtonClick(Sender: TObject); procedure BMMRedoToolButtonClick(Sender: TObject);
procedure BMMUndoToolButtonClick(Sender: TObject); procedure BMMUndoButtonClick(Sender: TObject);
procedure BMMNewCustomOptionMenuItemClick(Sender: TObject); procedure BMMNewCustomOptionMenuItemClick(Sender: TObject);
procedure BMMNewTargetMenuItemClick(Sender: TObject); procedure BMMNewTargetMenuItemClick(Sender: TObject);
procedure BMMAddToolButtonClick(Sender: TObject); procedure BMMAddLclWidgetButtonClick(Sender: TObject);
procedure BMMAddOtherButtonClick(Sender: TObject);
procedure GridEditingDone(Sender: TObject); procedure GridEditingDone(Sender: TObject);
procedure GridGetCellHightlightColor(Sender: TObject; aCol, aRow: integer; procedure GridGetCellHightlightColor(Sender: TObject; aCol, aRow: integer;
var aColor: TColor); var aColor: TColor);
procedure GridSelection(Sender: TObject; {%H-}aCol, {%H-}aRow: Integer); procedure GridSelection(Sender: TObject; {%H-}aCol, {%H-}aRow: Integer);
procedure GridSetEditText(Sender: TObject; ACol, ARow: Integer; procedure GridSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: string);
const Value: string);
procedure GridShowHint(Sender: TObject; HintInfo: PHintInfo); procedure GridShowHint(Sender: TObject; HintInfo: PHintInfo);
procedure OnAddMacroMenuItemClick(Sender: TObject); procedure OnAddMacroMenuItemClick(Sender: TObject);
procedure OnAddLCLWidgetTypeClick(Sender: TObject);
private private
FErrorColor: TColor; FErrorColor: TColor;
FGrid: TGroupedMatrixControl; FGrid: TGroupedMatrixControl;
@ -95,7 +99,10 @@ type
fOldSessionOptions: TBuildMatrixOptions; fOldSessionOptions: TBuildMatrixOptions;
fCaptionPatternMacroName: string; fCaptionPatternMacroName: string;
fCaptionPatternMacroValue: string; fCaptionPatternMacroValue: string;
procedure AddLCLWidgetTypeValues(ParentMenu: TPopupMenu; Mcr: TLazBuildMacro);
procedure AddMacroValues(ParentMI: TMenuItem; Mcr: TLazBuildMacro);
procedure DoWriteSettings; procedure DoWriteSettings;
procedure FillMenus;
procedure MoveRow(Direction: integer); procedure MoveRow(Direction: integer);
procedure UpdateButtons; procedure UpdateButtons;
function AddTarget(StorageGroup: TGroupedMatrixGroup): TGroupedMatrixGroup; function AddTarget(StorageGroup: TGroupedMatrixGroup): TGroupedMatrixGroup;
@ -395,8 +402,8 @@ begin
UpdateButtons; UpdateButtons;
end; end;
procedure TCompOptModeMatrixFrame.GridSetEditText(Sender: TObject; ACol, procedure TCompOptModeMatrixFrame.GridSetEditText(Sender: TObject; ACol, ARow: Integer;
ARow: Integer; const Value: string); const Value: string);
var var
MatRow: TGroupedMatrixRow; MatRow: TGroupedMatrixRow;
ValueRow: TGroupedMatrixValue; ValueRow: TGroupedMatrixValue;
@ -476,12 +483,22 @@ begin
CreateNewOption(BuildMatrixOptionTypeCaption(bmotIDEMacro),MacroName+':='+Value); CreateNewOption(BuildMatrixOptionTypeCaption(bmotIDEMacro),MacroName+':='+Value);
end; end;
procedure TCompOptModeMatrixFrame.OnAddLCLWidgetTypeClick(Sender: TObject);
var
ValueMenuItem: TMenuItem;
Value: String;
begin
ValueMenuItem:=Sender as TMenuItem;
Value:=GetCaptionValue(ValueMenuItem.Caption,fCaptionPatternMacroValue);
CreateNewOption(BuildMatrixOptionTypeCaption(bmotIDEMacro),'LCLWidgetType:='+Value);
end;
procedure TCompOptModeMatrixFrame.BMMNewCustomOptionMenuItemClick(Sender: TObject); procedure TCompOptModeMatrixFrame.BMMNewCustomOptionMenuItemClick(Sender: TObject);
begin begin
CreateNewOption(BuildMatrixOptionTypeCaption(bmotCustom),BuildMatrixDefaultValue(bmotCustom)); CreateNewOption(BuildMatrixOptionTypeCaption(bmotCustom),BuildMatrixDefaultValue(bmotCustom));
end; end;
procedure TCompOptModeMatrixFrame.BMMUndoToolButtonClick(Sender: TObject); procedure TCompOptModeMatrixFrame.BMMUndoButtonClick(Sender: TObject);
begin begin
Grid.Undo; Grid.Undo;
UpdateGridStorageGroups; UpdateGridStorageGroups;
@ -493,12 +510,20 @@ begin
CreateNewTarget; CreateNewTarget;
end; end;
procedure TCompOptModeMatrixFrame.BMMAddToolButtonClick(Sender: TObject); procedure TCompOptModeMatrixFrame.BMMAddLclWidgetButtonClick(Sender: TObject);
var var
p: TPoint; p: TPoint;
begin begin
p:=BMMAddToolButton.ClientToScreen(Point(0,BMMAddToolButton.Height)); p:=BMMAddLclWidgetButton.ClientToScreen(Point(0,BMMAddLclWidgetButton.Height));
BMMAddPopupMenu.PopUp(p.x,p.y); BMMAddLclWidgetPopupMenu.PopUp(p.x,p.y);
end;
procedure TCompOptModeMatrixFrame.BMMAddOtherButtonClick(Sender: TObject);
var
p: TPoint;
begin
p:=BMMAddOtherButton.ClientToScreen(Point(0,BMMAddOtherButton.Height));
BMMAddOtherPopupMenu.PopUp(p.x,p.y);
end; end;
procedure TCompOptModeMatrixFrame.GridEditingDone(Sender: TObject); procedure TCompOptModeMatrixFrame.GridEditingDone(Sender: TObject);
@ -545,52 +570,84 @@ begin
UpdateButtons; UpdateButtons;
end; end;
procedure TCompOptModeMatrixFrame.BMMMoveUpToolButtonClick(Sender: TObject); procedure TCompOptModeMatrixFrame.BMMMoveUpButtonClick(Sender: TObject);
begin begin
MoveRow(-1); MoveRow(-1);
end; end;
procedure TCompOptModeMatrixFrame.BMMAddPopupMenuPopup(Sender: TObject); procedure TCompOptModeMatrixFrame.AddLCLWidgetTypeValues(ParentMenu: TPopupMenu; Mcr: TLazBuildMacro);
var var
i: Integer; i: Integer;
ValueMI: TMenuItem;
begin
if Mcr.Values<>nil then begin
for i:=0 to Mcr.Values.Count-1 do begin
if i=ParentMenu.Items.Count then
ParentMenu.Items.Add(TMenuItem.Create(Self));
ValueMI:=ParentMenu.Items[i];
ValueMI.Caption:=Format(fCaptionPatternMacroValue,[Mcr.Values[i]]);
ValueMI.OnClick:=@OnAddLCLWidgetTypeClick;
end;
end;
end;
procedure TCompOptModeMatrixFrame.AddMacroValues(ParentMI: TMenuItem; Mcr: TLazBuildMacro);
var
i: Integer;
ValueMI: TMenuItem;
begin
if Mcr.Values<>nil then begin
for i:=0 to Mcr.Values.Count-1 do begin
if i=ParentMI.Count then
ParentMI.Add(TMenuItem.Create(Self));
ValueMI:=ParentMI.Items[i];
ValueMI.Caption:=Format(fCaptionPatternMacroValue,[Mcr.Values[i]]);
ValueMI.OnClick:=@OnAddMacroMenuItemClick;
end;
end;
end;
procedure TCompOptModeMatrixFrame.FillMenus;
var
i, j: Integer;
Pkg: TLazPackage; Pkg: TLazPackage;
Macros: TLazBuildMacros; Macros: TLazBuildMacros;
j: Integer;
Macro: TLazBuildMacro; Macro: TLazBuildMacro;
LCLWidgetTypeMacro: TLazBuildMacro;
List: TStringList; List: TStringList;
MenuIndex: Integer; MenuIndex: Integer;
MacroMenuItem: TMenuItem; MacroMenuItem: TMenuItem;
ValueMenuItem: TMenuItem;
begin begin
LCLWidgetTypeMacro:=Nil;
List:=TStringList.Create; List:=TStringList.Create;
try try
// First collect all macros from all used packages to a sorted list.
for i:=0 to PackageGraph.Count-1 do begin for i:=0 to PackageGraph.Count-1 do begin
Pkg:=PackageGraph[i]; Pkg:=PackageGraph[i];
Macros:=Pkg.CompilerOptions.BuildMacros; Macros:=Pkg.CompilerOptions.BuildMacros;
for j:=0 to Macros.Count-1 do begin for j:=0 to Macros.Count-1 do begin
Macro:=Macros[j]; Macro:=Macros[j];
if not IsValidIdent(Macro.Identifier) then continue; if Macro.Identifier = 'LCLWidgetType' then
List.AddObject(Macro.Identifier,Macro); LCLWidgetTypeMacro:=Macro
else if IsValidIdent(Macro.Identifier) then
List.AddObject(Macro.Identifier,Macro);
end; end;
end; end;
List.Sort; List.Sort;
// LCLWidgetType gets its own button.
BMMAddLclWidgetButton.Visible:=Assigned(LCLWidgetTypeMacro);
if Assigned(LCLWidgetTypeMacro) then
AddLCLWidgetTypeValues(BMMAddLclWidgetPopupMenu, LCLWidgetTypeMacro);
// Place other macros to the popup menu opened from "Add" button.
MenuIndex:=BMMNewTargetMenuItem.MenuIndex; MenuIndex:=BMMNewTargetMenuItem.MenuIndex;
for i:=0 to List.Count-1 do begin for i:=0 to List.Count-1 do begin
inc(MenuIndex); inc(MenuIndex);
Macro:=TLazBuildMacro(List.Objects[i]); Macro:=TLazBuildMacro(List.Objects[i]);
if BMMAddPopupMenu.Items.Count=MenuIndex then if BMMAddOtherPopupMenu.Items.Count=MenuIndex then
BMMAddPopupMenu.Items.Add(TMenuItem.Create(Self)); BMMAddOtherPopupMenu.Items.Add(TMenuItem.Create(Self));
MacroMenuItem:=BMMAddPopupMenu.Items[MenuIndex]; MacroMenuItem:=BMMAddOtherPopupMenu.Items[MenuIndex];
MacroMenuItem.Caption:=Format(fCaptionPatternMacroName,[Macro.Identifier]); MacroMenuItem.Caption:=Format(fCaptionPatternMacroName,[Macro.Identifier]);
if Macro.Values<>nil then begin AddMacroValues(MacroMenuItem, Macro);
for j:=0 to Macro.Values.Count-1 do begin
if j=MacroMenuItem.Count then
MacroMenuItem.Add(TMenuItem.Create(Self));
ValueMenuItem:=MacroMenuItem.Items[j];
ValueMenuItem.Caption:=Format(fCaptionPatternMacroValue,[Macro.Values[j]]);
ValueMenuItem.OnClick:=@OnAddMacroMenuItemClick;
end;
end;
end; end;
finally finally
List.Free; List.Free;
@ -607,12 +664,12 @@ begin
CreateNewOption(BuildMatrixOptionTypeCaption(bmotOutDir),BuildMatrixDefaultValue(bmotOutDir)); CreateNewOption(BuildMatrixOptionTypeCaption(bmotOutDir),BuildMatrixDefaultValue(bmotOutDir));
end; end;
procedure TCompOptModeMatrixFrame.BMMMoveDownToolButtonClick(Sender: TObject); procedure TCompOptModeMatrixFrame.BMMMoveDownButtonClick(Sender: TObject);
begin begin
MoveRow(1); MoveRow(1);
end; end;
procedure TCompOptModeMatrixFrame.BMMDeleteToolButtonClick(Sender: TObject); procedure TCompOptModeMatrixFrame.BMMDeleteButtonClick(Sender: TObject);
var var
aRow: Integer; aRow: Integer;
MatRow: TGroupedMatrixRow; MatRow: TGroupedMatrixRow;
@ -640,15 +697,15 @@ begin
MatRow:=nil; MatRow:=nil;
// allow to delete targets and value rows // allow to delete targets and value rows
BMMDeleteToolButton.Enabled:=(MatRow<>nil) and (MatRow.Group<>nil); BMMDeleteButton.Enabled:=(MatRow<>nil) and (MatRow.Group<>nil);
// //
BMMUndoToolButton.Enabled:=Grid.CanUndo; BMMUndoButton.Enabled:=Grid.CanUndo;
BMMRedoToolButton.Enabled:=Grid.CanRedo; BMMRedoToolButton.Enabled:=Grid.CanRedo;
// move up/down // move up/down
BMMMoveUpToolButton.Enabled:=(MatRow<>nil) and (MatRow.Group<>nil) BMMMoveUpButton.Enabled:=(MatRow<>nil) and (MatRow.Group<>nil)
and ((MatRow.GetPreviousSibling<>nil) and ((MatRow.GetPreviousSibling<>nil)
or (MatRow.GetTopLvlItem.GetPreviousSibling<>nil)); or (MatRow.GetTopLvlItem.GetPreviousSibling<>nil));
BMMMoveDownToolButton.Enabled:=(MatRow<>nil) and (MatRow.Group<>nil) BMMMoveDownButton.Enabled:=(MatRow<>nil) and (MatRow.Group<>nil)
and (MatRow.GetNextSkipChildren<>nil); and (MatRow.GetNextSkipChildren<>nil);
end; end;
@ -1059,24 +1116,22 @@ begin
BMMatrixToolBar.Images:=IDEImages.Images_16; BMMatrixToolBar.Images:=IDEImages.Images_16;
BMMMoveUpToolButton.ShowCaption:=false; BMMMoveUpButton.ShowCaption:=false;
BMMMoveUpToolButton.ImageIndex:=IDEImages.LoadImage(16,'arrow_up'); BMMMoveUpButton.ImageIndex:=IDEImages.LoadImage(16,'arrow_up');
BMMMoveUpToolButton.Hint:=lisMMMoveSelectedItemUp; BMMMoveUpButton.Hint:=lisMMMoveSelectedItemUp;
BMMMoveDownToolButton.ShowCaption:=false; BMMMoveDownButton.ShowCaption:=false;
BMMMoveDownToolButton.ImageIndex:=IDEImages.LoadImage(16,'arrow_down'); BMMMoveDownButton.ImageIndex:=IDEImages.LoadImage(16,'arrow_down');
BMMMoveDownToolButton.Hint:=lisMMMoveSelectedItemDown; BMMMoveDownButton.Hint:=lisMMMoveSelectedItemDown;
BMMUndoToolButton.Caption:=lisUndo; BMMUndoButton.Caption:=lisUndo;
BMMUndoToolButton.Hint:=lisMMUndoLastChangeToThisGrid; BMMUndoButton.Hint:=lisMMUndoLastChangeToThisGrid;
BMMRedoToolButton.Caption:=lisRedo; BMMRedoToolButton.Caption:=lisRedo;
BMMRedoToolButton.Hint:=lisMMRedoLastUndoToThisGrid; BMMRedoToolButton.Hint:=lisMMRedoLastUndoToThisGrid;
BMMAddToolButton.Caption:=lisAdd; BMMDeleteButton.Caption:=lisDelete;
BMMDeleteButton.Hint:=lisMMDeleteTheSelectedTargetOrOption;
BMMDeleteToolButton.Caption:=lisDelete;
BMMDeleteToolButton.Hint:=lisMMDeleteTheSelectedTargetOrOption;
BMMNewTargetMenuItem.Caption:=lisMMNewTarget; BMMNewTargetMenuItem.Caption:=lisMMNewTarget;
BMMNewTargetMenuItem.Hint:=lisMMCreateANewGroupOfOptions; BMMNewTargetMenuItem.Hint:=lisMMCreateANewGroupOfOptions;
@ -1088,7 +1143,11 @@ begin
fCaptionPatternMacroName:=lisMMSetS; fCaptionPatternMacroName:=lisMMSetS;
fCaptionPatternMacroValue:=lisMMValueS; fCaptionPatternMacroValue:=lisMMValueS;
BMMAddLclWidgetButton.Caption:=Format(fCaptionPatternMacroName,['LCLWidgetType']);
BMMAddOtherButton.Caption:=lisAdd;
UpdateButtons; UpdateButtons;
FillMenus;
end; end;
destructor TCompOptModeMatrixFrame.Destroy; destructor TCompOptModeMatrixFrame.Destroy;