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 OnClick = miExportAllClick
end end
object MenuItem8: TMenuItem object MenuItem8: TMenuItem
Caption = 'Rearrange structurelist' Caption = 'Manage structurelist'
OnClick = MenuItem8Click OnClick = MenuItem8Click
end end
object MenuItem2: TMenuItem object MenuItem2: TMenuItem

View File

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

View File

@ -6,7 +6,7 @@ interface
uses uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Buttons, StdCtrls, betterControls; Buttons, StdCtrls, Menus, betterControls;
type type
@ -14,12 +14,14 @@ type
TfrmRearrangeStructureList = class(TForm) TfrmRearrangeStructureList = class(TForm)
lbStructlist: TListBox; lbStructlist: TListBox;
MenuItem1: TMenuItem;
Panel4: TPanel; Panel4: TPanel;
PopupMenu1: TPopupMenu;
spbDown: TSpeedButton; spbDown: TSpeedButton;
spbUp: TSpeedButton; spbUp: TSpeedButton;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure lbStructlistSelectionChange(Sender: TObject; User: boolean); procedure MenuItem1Click(Sender: TObject);
procedure spbDownClick(Sender: TObject); procedure spbDownClick(Sender: TObject);
procedure spbUpClick(Sender: TObject); procedure spbUpClick(Sender: TObject);
private private
@ -50,6 +52,24 @@ begin
updatelist; updatelist;
end; 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; procedure TfrmRearrangeStructureList.FormClose(Sender: TObject;
var CloseAction: TCloseAction); var CloseAction: TCloseAction);
var i: integer; var i: integer;
@ -63,35 +83,38 @@ begin
TfrmStructures2(frmStructures2[i]).onStructListChange; TfrmStructures2(frmStructures2[i]).onStructListChange;
end; 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); procedure TfrmRearrangeStructureList.spbDownClick(Sender: TObject);
var i: integer;
begin begin
if (lbStructlist.itemindex>=0) and (lbStructlist.Count>lbStructlist.itemindex+1) then for i:=lbStructlist.items.count-2 downto 0 do
begin begin
lbStructlist.Items.Exchange(lbStructlist.itemindex, lbStructlist.ItemIndex+1); if lbStructlist.Selected[i] then
lbStructlist.itemindex:=lbStructlist.itemindex+1; begin
lbStructlist.selected[i]:=false;
lbStructlist.Items.Exchange(i, i+1);
lbStructlist.selected[i+1]:=true;
end;
end; end;
lbStructlistSelectionChange(lbStructlist,false);
end; end;
procedure TfrmRearrangeStructureList.spbUpClick(Sender: TObject); procedure TfrmRearrangeStructureList.spbUpClick(Sender: TObject);
var i: integer;
begin begin
if lbStructlist.itemindex>=1 then for i:=1 to lbStructlist.items.count-1 do
begin begin
lbStructlist.Items.Exchange(lbStructlist.itemindex, lbStructlist.ItemIndex-1); if lbStructlist.Selected[i] then
lbStructlist.itemindex:=lbStructlist.itemindex-1; begin
lbStructlist.selected[i]:=false;
lbStructlist.Items.Exchange(i, i-1);
lbStructlist.selected[i-1]:=true;
end;
end; end;
lbStructlistSelectionChange(lbStructlist,false);
end; end;
end. end.