mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Fix various selection bugs in column selection panel
This commit is contained in:
@ -94,16 +94,17 @@ end;
|
|||||||
}
|
}
|
||||||
procedure TColumnSelectionForm.btnOKClick(Sender: TObject);
|
procedure TColumnSelectionForm.btnOKClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i : Integer;
|
i: Integer;
|
||||||
|
Col: String;
|
||||||
begin
|
begin
|
||||||
// Prepare string for storing in registry.
|
// Prepare string for storing in registry.
|
||||||
// Use quote-character as separator to ensure columnnames can
|
// Use quote-character as separator to ensure columnnames can
|
||||||
// be extracted safely later
|
// be extracted safely later
|
||||||
Mainform.DataGridHiddenColumns.Clear;
|
Mainform.DataGridHiddenColumns.Clear;
|
||||||
for i := 0 to chklistColumns.Items.Count - 1 do
|
for i:=0 to Mainform.SelectedTableColumns.Count-1 do begin
|
||||||
begin
|
Col := Mainform.SelectedTableColumns[i].Name;
|
||||||
if not chklistColumns.Checked[i] then
|
if FCheckedColumns.IndexOf(Col) = -1 then
|
||||||
Mainform.DataGridHiddenColumns.Add(chklistColumns.Items[i]);
|
Mainform.DataGridHiddenColumns.Add(Col);
|
||||||
end;
|
end;
|
||||||
InvalidateVT(Mainform.DataGrid, VTREE_NOTLOADED_PURGECACHE, False);
|
InvalidateVT(Mainform.DataGrid, VTREE_NOTLOADED_PURGECACHE, False);
|
||||||
btnCancel.OnClick(Sender);
|
btnCancel.OnClick(Sender);
|
||||||
@ -116,11 +117,19 @@ end;
|
|||||||
procedure TColumnSelectionForm.chkSelectAllClick(Sender: TObject);
|
procedure TColumnSelectionForm.chkSelectAllClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
cb: TCheckBox;
|
cb: TCheckBox;
|
||||||
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
// Avoid executing when checkbox was toggled by code (see proc below)
|
// Avoid executing when checkbox was toggled by code (see proc below)
|
||||||
cb := Sender as TCheckBox;
|
cb := Sender as TCheckBox;
|
||||||
if cb.Focused then
|
if cb.Focused then begin
|
||||||
chklistColumns.CheckAll(cb.State);
|
chklistColumns.CheckAll(cb.State);
|
||||||
|
for i:=0 to chklistColumns.Items.Count-1 do begin
|
||||||
|
if (FCheckedColumns.IndexOf(chklistColumns.Items[i]) = -1) and (cb.State = cbChecked) then
|
||||||
|
FCheckedColumns.Add(chklistColumns.Items[i]);
|
||||||
|
if (FCheckedColumns.IndexOf(chklistColumns.Items[i]) > -1) and (cb.State = cbUnchecked) then
|
||||||
|
FCheckedColumns.Delete(FCheckedColumns.IndexOf(chklistColumns.Items[i]));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -145,6 +154,14 @@ var
|
|||||||
i : Integer;
|
i : Integer;
|
||||||
AllSelected, NoneSelected : Boolean;
|
AllSelected, NoneSelected : Boolean;
|
||||||
begin
|
begin
|
||||||
|
// Add or remove clicked item from list
|
||||||
|
if chklistColumns.ItemIndex > -1 then begin
|
||||||
|
if chklistColumns.Checked[chklistColumns.ItemIndex] then
|
||||||
|
FCheckedColumns.Add(chklistColumns.Items[chklistColumns.ItemIndex])
|
||||||
|
else
|
||||||
|
FCheckedColumns.Delete(FCheckedColumns.IndexOf(chklistColumns.Items[chklistColumns.ItemIndex]));
|
||||||
|
end;
|
||||||
|
|
||||||
Allselected := True;
|
Allselected := True;
|
||||||
NoneSelected := True;
|
NoneSelected := True;
|
||||||
for i:=0 to chklistColumns.Items.Count-1 do begin
|
for i:=0 to chklistColumns.Items.Count-1 do begin
|
||||||
@ -170,12 +187,6 @@ var
|
|||||||
i: Integer;
|
i: Integer;
|
||||||
Col: String;
|
Col: String;
|
||||||
begin
|
begin
|
||||||
// Remember currently selected items
|
|
||||||
FCheckedColumns.Clear;
|
|
||||||
for i:=0 to chklistColumns.Items.Count-1 do begin
|
|
||||||
if chklistColumns.Checked[i] then
|
|
||||||
FCheckedColumns.Add(chklistColumns.Items[i]);
|
|
||||||
end;
|
|
||||||
// Setting Sorted to false doesn't resort anything in the list.
|
// Setting Sorted to false doesn't resort anything in the list.
|
||||||
// So we have to add all items again in original order
|
// So we have to add all items again in original order
|
||||||
chklistColumns.Sorted := chkSort.Checked;
|
chklistColumns.Sorted := chkSort.Checked;
|
||||||
|
Reference in New Issue
Block a user