Fixed #3: Sort the function list in the button selection screen

This commit is contained in:
Mark van Renswoude 2017-06-11 08:53:14 +02:00
parent 71a65c91c9
commit c79e1d75ba
2 changed files with 27 additions and 2 deletions

View File

@ -255,13 +255,15 @@ object ButtonFunctionForm: TButtonFunctionForm
Header.Font.Height = -11
Header.Font.Name = 'Tahoma'
Header.Font.Style = []
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible, hoHeaderClickAutoSort]
Header.SortColumn = 0
IncrementalSearch = isAll
TabOrder = 1
TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoSort, toAutoTristateTracking, toAutoDeleteMovedNodes]
TreeOptions.MiscOptions = [toAcceptOLEDrop, toFullRepaintOnResize, toInitOnSave, toWheelPanning, toEditOnClick]
TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toShowTreeLines, toThemeAware, toUseBlendedImages]
TreeOptions.SelectionOptions = [toFullRowSelect]
OnCompareNodes = vstFunctionsCompareNodes
OnFocusChanged = vstFunctionsFocusChanged
OnFreeNode = vstFunctionsFreeNode
OnGetText = vstFunctionsGetText
@ -270,7 +272,7 @@ object ButtonFunctionForm: TButtonFunctionForm
Columns = <
item
Position = 0
Width = 257
Width = 253
WideText = 'Available functions'
end>
end

View File

@ -66,6 +66,7 @@ type
procedure vstFunctionsGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
procedure vstFunctionsIncrementalSearch(Sender: TBaseVirtualTree; Node: PVirtualNode; const SearchText: string; var Result: Integer);
procedure vstFunctionsPaintText(Sender: TBaseVirtualTree; const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType);
procedure vstFunctionsCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
private
FProfile: TProfile;
FButtonIndex: Integer;
@ -533,6 +534,28 @@ begin
end;
procedure TButtonFunctionForm.vstFunctionsCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
var
nodeData1: PFunctionNodeData;
nodeData2: PFunctionNodeData;
begin
nodeData1 := Sender.GetNodeData(Node1);
nodeData2 := Sender.GetNodeData(Node2);
if nodeData1^.NodeType <> nodeData2^.NodeType then
exit;
case nodeData1^.NodeType of
ntCategory:
Result := CompareText(nodeData1^.LEDFunction.GetCategoryName, nodeData2^.LEDFunction.GetCategoryName);
ntFunction:
Result := CompareText(nodeData1^.LEDFunction.GetDisplayName, nodeData2^.LEDFunction.GetDisplayName);
end;
end;
procedure TButtonFunctionForm.vstFunctionsFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
var
nodeData: PFunctionNodeData;