In un gestore di eventi TDbGrid.OnColumnMoved
, ho regolato alcuni colori delle intestazioni di colonna.Come scartare il clic del mouse in TDbGrid.OnColumnMoved
Uso anche l'evento della griglia OnTitleClicked
per visualizzare un menu (colonna di ordinamento).
Sfortunatamente, dopo che l'utente trascina una colonna e OnColumnMoved
è terminata, la VCL chiama OnTitleClicked
. Ciò significa che il mio pop-up di ordinamento appare dopo il trascinamento della colonna.
C'è un modo in OnColumnMoved
Posso cancellare la coda degli eventi del mouse in modo che non venga chiamato il numero OnTitleClicked
?
This thread ha questo codice, ma non ho un Msg
in OnTitleClicked
.
while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST,
PM_REMOVE or PM_NOYIELD) do;
(Se non c'è modo per fare questo, non è un grosso problema. Posso impostare un flag in OnColumnMoved
modo che OnTitleClick
ignora la chiamata accanto ad essa.)
Si sa che è possibile dichiarare la propria variabile 'Msg: tagMsg' (o' TMsg ') e utilizzarla nella chiamata a 'PeekMessage'? Non pensare che sia la risposta qui, ma solo FYI ... –
Hmmmm - non tutti gli eventi OnColumnMoved attivano anche un evento OnTitleClick per me (Delphi 10.1), quindi il flag non è affidabile. Potrei usare un timer, quindi se OnTitleClick si verifica entro (diciamo) 0,25 secondi di OnColumnMoved, viene ignorato. Ma è come usare un martello per uccidere una pulce. Qualche altra riflessione su questo? – DaveBoltman