change sort structurelist to manage structurelist where you can also delete entries

This commit is contained in:
Dark Byte 2021-06-05 17:39:07 +02:00
parent 5a640122ba
commit c30051e20d
3 changed files with 56 additions and 26 deletions

View File

@ -135,7 +135,7 @@ object frmStructures2: TfrmStructures2
OnClick = miExportAllClick
end
object MenuItem8: TMenuItem
Caption = 'Rearrange structurelist'
Caption = 'Manage structurelist'
OnClick = MenuItem8Click
end
object MenuItem2: TMenuItem

View File

@ -1,16 +1,16 @@
object frmRearrangeStructureList: TfrmRearrangeStructureList
Left = 344
Left = 389
Height = 162
Top = 114
Top = 148
Width = 201
BorderIcons = [biSystemMenu]
Caption = 'Rearrange structure list'
Caption = 'Manage structure list'
ClientHeight = 162
ClientWidth = 201
OnClose = FormClose
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '1.6.4.0'
LCLVersion = '2.0.6.0'
object Panel4: TPanel
Left = 179
Height = 162
@ -33,7 +33,6 @@ object frmRearrangeStructureList: TfrmRearrangeStructureList
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 1
BorderSpacing.Bottom = 1
Enabled = False
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
@ -59,7 +58,6 @@ object frmRearrangeStructureList: TfrmRearrangeStructureList
Top = 106
Width = 21
Anchors = [akLeft, akBottom]
Enabled = False
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
@ -85,7 +83,16 @@ object frmRearrangeStructureList: TfrmRearrangeStructureList
Width = 179
Align = alClient
ItemHeight = 0
OnSelectionChange = lbStructlistSelectionChange
MultiSelect = True
PopupMenu = PopupMenu1
TabOrder = 1
end
object PopupMenu1: TPopupMenu
Left = 51
Top = 47
object MenuItem1: TMenuItem
Caption = 'Delete selected records'
OnClick = MenuItem1Click
end
end
end

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Buttons, StdCtrls, betterControls;
Buttons, StdCtrls, Menus, betterControls;
type
@ -14,12 +14,14 @@ type
TfrmRearrangeStructureList = class(TForm)
lbStructlist: TListBox;
MenuItem1: TMenuItem;
Panel4: TPanel;
PopupMenu1: TPopupMenu;
spbDown: TSpeedButton;
spbUp: TSpeedButton;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
procedure lbStructlistSelectionChange(Sender: TObject; User: boolean);
procedure MenuItem1Click(Sender: TObject);
procedure spbDownClick(Sender: TObject);
procedure spbUpClick(Sender: TObject);
private
@ -50,6 +52,24 @@ begin
updatelist;
end;
procedure TfrmRearrangeStructureList.MenuItem1Click(Sender: TObject);
var
s: TDissectedStruct;
i: integer;
begin
if MessageDlg('are you sure you wish to delete the selection?',mtConfirmation,[mbyes,mbno],0)=mryes then
begin
for i:=DissectedStructs.count-1 downto 0 do
if lbStructlist.Selected[i] then
begin
s:=TDissectedStruct(lbStructlist.Items.Objects[i]);
s.free;
end;
lbStructlist.DeleteSelected;
end;
end;
procedure TfrmRearrangeStructureList.FormClose(Sender: TObject;
var CloseAction: TCloseAction);
var i: integer;
@ -63,35 +83,38 @@ begin
TfrmStructures2(frmStructures2[i]).onStructListChange;
end;
procedure TfrmRearrangeStructureList.lbStructlistSelectionChange(
Sender: TObject; User: boolean);
var index: integer;
begin
index:=lbStructlist.itemindex;
spbDown.enabled:=(index>=0) and (index<lbStructlist.count-1);
spbUp.enabled:=(index>=1);
end;
procedure TfrmRearrangeStructureList.spbDownClick(Sender: TObject);
var i: integer;
begin
if (lbStructlist.itemindex>=0) and (lbStructlist.Count>lbStructlist.itemindex+1) then
for i:=lbStructlist.items.count-2 downto 0 do
begin
lbStructlist.Items.Exchange(lbStructlist.itemindex, lbStructlist.ItemIndex+1);
lbStructlist.itemindex:=lbStructlist.itemindex+1;
if lbStructlist.Selected[i] then
begin
lbStructlist.selected[i]:=false;
lbStructlist.Items.Exchange(i, i+1);
lbStructlist.selected[i+1]:=true;
end;
end;
lbStructlistSelectionChange(lbStructlist,false);
end;
procedure TfrmRearrangeStructureList.spbUpClick(Sender: TObject);
var i: integer;
begin
if lbStructlist.itemindex>=1 then
for i:=1 to lbStructlist.items.count-1 do
begin
lbStructlist.Items.Exchange(lbStructlist.itemindex, lbStructlist.ItemIndex-1);
lbStructlist.itemindex:=lbStructlist.itemindex-1;
if lbStructlist.Selected[i] then
begin
lbStructlist.selected[i]:=false;
lbStructlist.Items.Exchange(i, i-1);
lbStructlist.selected[i-1]:=true;
end;
end;
lbStructlistSelectionChange(lbStructlist,false);
end;
end.