diff --git a/source/loaddata.dfm b/source/loaddata.dfm index d0aaceaf..640f3624 100644 --- a/source/loaddata.dfm +++ b/source/loaddata.dfm @@ -355,7 +355,7 @@ object loaddataform: Tloaddataform Left = 245 Top = 91 Width = 23 - Height = 44 + Height = 66 Align = alNone Anchors = [akTop, akRight] AutoSize = True @@ -375,8 +375,16 @@ object loaddataform: Tloaddataform Top = 22 Caption = 'btnColDown' ImageIndex = 75 + Wrap = True OnClick = btnColMoveClick end + object btnCheckAll: TToolButton + Left = 0 + Top = 44 + Caption = 'Select / Deselect all' + ImageIndex = 128 + OnClick = btnCheckAllClick + end end end end diff --git a/source/loaddata.pas b/source/loaddata.pas index 8e618de4..ec73bad7 100644 --- a/source/loaddata.pas +++ b/source/loaddata.pas @@ -52,6 +52,7 @@ type chkLowPriority: TCheckBox; chkLocalNumbers: TCheckBox; chkTruncateTable: TCheckBox; + btnCheckAll: TToolButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure editFilenameChange(Sender: TObject); @@ -67,6 +68,7 @@ type procedure comboEncodingSelect(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure chklistColumnsClick(Sender: TObject); + procedure btnCheckAllClick(Sender: TObject); private { Private declarations } Encoding: TEncoding; @@ -616,11 +618,40 @@ end; procedure Tloaddataform.chklistColumnsClick(Sender: TObject); +var + i, CheckedNum: Integer; begin btnColDown.Enabled := (chklistColumns.ItemIndex > -1) and (chklistColumns.ItemIndex < chklistColumns.Count-1); btnColUp.Enabled := (chklistColumns.ItemIndex > -1) and (chklistColumns.ItemIndex > 0); + // Toggle icon when none is selected + CheckedNum := 0; + for i:=0 to chklistColumns.Items.Count-1 do begin + if chklistColumns.Checked[i] then + Inc(CheckedNum); + end; + if CheckedNum < chklistColumns.Items.Count then + btnCheckAll.ImageIndex := 128 + else + btnCheckAll.ImageIndex := 127; +end; + + +procedure Tloaddataform.btnCheckAllClick(Sender: TObject); +var + i, CheckedNum: Integer; +begin + CheckedNum := 0; + for i:=0 to chklistColumns.Items.Count-1 do begin + if chklistColumns.Checked[i] then + Inc(CheckedNum); + end; + if CheckedNum < chklistColumns.Items.Count then + chklistColumns.CheckAll(cbChecked) + else + chklistColumns.CheckAll(cbUnchecked); + chklistColumns.OnClick(Sender); end;