Ik probeer een TCustomEdit descendant te maken die aan de rechterkant een knopje weergeeft. Op internet zijn er al enkele controls die dat doen, maar ze hebben allemaal een probleem: op verschillende momenten worden de margins gereset, zodat het knopje weer wit wordt. Ik heb dit weten af te vangen, door in de volgende methoden/notifications de margins te forceren naar wat ik wilde:
• CreateWnd
• DoEnter
• DoExit
• MouseDown
• MouseMove
• CreateHandle
• WM_CAPTURECHANGED
• WM_SETFOCUS
• WM_MOUSEACTIVATE
• WM_SIZE
Zoals je ziet, dat zijn er nogal wat. Maar in al deze methoden/notifications kunnen de margins gereset worden, zodat ik ze weer opnieuw moet instellen. Dit heeft tot gevolg dat de control twee keer getekend wordt, en dat leidt weer tot een knipperend effect.
Weet iemand waardoor deze margins gereset worden? Is dit op een normale (en betrouwbare) manier op te vangen? Of zijn de margins op een andere manier in te stellen waardoor de control ze wel "onthoudt"?
Ohja, wat code nog. De code om de margins in te stellen is vrij eenvoudig:
• CreateWnd
• DoEnter
• DoExit
• MouseDown
• MouseMove
• CreateHandle
• WM_CAPTURECHANGED
• WM_SETFOCUS
• WM_MOUSEACTIVATE
• WM_SIZE
Zoals je ziet, dat zijn er nogal wat. Maar in al deze methoden/notifications kunnen de margins gereset worden, zodat ik ze weer opnieuw moet instellen. Dit heeft tot gevolg dat de control twee keer getekend wordt, en dat leidt weer tot een knipperend effect.
Weet iemand waardoor deze margins gereset worden? Is dit op een normale (en betrouwbare) manier op te vangen? Of zijn de margins op een andere manier in te stellen waardoor de control ze wel "onthoudt"?
Ohja, wat code nog. De code om de margins in te stellen is vrij eenvoudig:
Delphi:
1
2
| with ClientRect do Perform(EM_SETMARGINS, EC_RIGHTMARGIN, (Bottom - Top) shl 16); |
日本!🎌