Trong trình xử lý sự kiện TDbGrid.OnColumnMoved
, tôi điều chỉnh một số màu tiêu đề cột.Cách loại bỏ nhấp chuột trong TDbGrid.OnColumnMoved
Tôi cũng sử dụng sự kiện OnTitleClicked
của lưới để bật menu (cột sắp xếp).
Thật không may, sau khi người dùng kéo một cột và OnColumnMoved
hoàn tất, VCL gọi OnTitleClicked
. Điều này có nghĩa là pop-up sắp xếp thứ tự xuất hiện sau khi kéo cột.
Có cách nào trong số OnColumnMoved
Tôi có thể xóa hàng đợi sự kiện chuột để OnTitleClicked
không được gọi?
This thread có mã này, nhưng tôi không có mã số Msg
trong OnTitleClicked
.
while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST,
PM_REMOVE or PM_NOYIELD) do;
(Nếu không có cách nào để làm điều này, nó không phải là vấn đề lớn. Tôi có thể thiết lập một lá cờ trong OnColumnMoved
để OnTitleClick
bỏ qua các cuộc gọi bên cạnh nó.)
Bạn biết mình có thể khai báo biến 'Msg: tagMsg' (hoặc' TMsg ') của riêng bạn và sử dụng nó trong lệnh gọi 'PeekMessage'? Đừng nghĩ rằng đó là câu trả lời ở đây, nhưng chỉ FYI ... –
Hmmmm - không phải mọi sự kiện OnColumnMoved cũng gây ra một sự kiện OnTitleClick cho tôi (Delphi 10.1), vì vậy cờ là không đáng tin cậy. Tôi có thể sử dụng một bộ đếm thời gian, vì vậy nếu OnTitleClick xảy ra trong vòng (nói) 0,25 giây của OnColumnMoved, nó bị bỏ qua. Nhưng điều đó giống như sử dụng búa tạ để giết bọ chét. Có thêm suy nghĩ nào về điều này không? – DaveBoltman