Refresh sorting controls per timer when user presses the delete button of one sorting. Fixes issue #520

This commit is contained in:
Ansgar Becker
2024-02-03 18:51:48 +01:00
parent 95151d6a3e
commit 17f4cb2949

View File

@ -26,6 +26,9 @@ type
FColumnNames: TStringList;
FSortItems: TSortItems;
FOldOrderClause: String;
FDeleteTimer: TTimer;
FDeleteButtonPressed: TButton;
procedure DeleteTimerTimer(Sender: TObject);
procedure comboColumnsChange(Sender: TObject);
procedure btnOrderClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
@ -57,6 +60,11 @@ begin
FSortItems.Assign(MainForm.DataGridSortItems);
FOldOrderClause := FSortItems.ComposeOrderClause(MainForm.ActiveConnection);
FDeleteTimer := TTimer.Create(Self);
FDeleteTimer.Interval := 100;
FDeleteTimer.Enabled := False;
FDeleteTimer.OnTimer := DeleteTimerTimer;
// First creation of controls
DisplaySortingControls(Sender);
end;
@ -236,11 +244,16 @@ end;
Delete order column
}
procedure TfrmDataSorting.btnDeleteClick(Sender: TObject);
var
btn: TButton;
begin
btn := Sender as TButton;
FSortItems.Delete(btn.Tag-1);
FDeleteButtonPressed := Sender as TButton;
FDeleteTimer.Enabled := True;
end;
procedure TfrmDataSorting.DeleteTimerTimer(Sender: TObject);
begin
FDeleteTimer.Enabled := False;
FSortItems.Delete(FDeleteButtonPressed.Tag-1);
// Refresh controls
DisplaySortingControls(Self);
// Enables OK button