2012-05-18 12 views
12

Sto lavorando con alcuni disegni in tempo reale su una forma considerevole. Quando l'utente ridimensiona il modulo, non voglio applicare la modifica della dimensione al rendering grafico finché l'utente non ha rilasciato il pulsante del mouse, quindi il ridimensionamento è terminato. Come posso rilevare questo e solo ridimensionare il mio rendering una volta che l'utente ha finito di ridimensionare il modulo? Perché in questo momento, se utilizzo l'evento OnResize del mio modulo, verrà costantemente eseguito il rendering di tutto il contenuto di ogni pixel spostato dal mouse.Come rilevare quando il ridimensionamento del modulo inizia e si interrompe?

Ho provato gli eventi mouse down/up e il tracciamento di questo, ma questi eventi non vengono chiamati quando il modulo viene ridimensionato.

risposta

20

Per rilevare lo spostamento o il dimensionamento avviato, intercettare il messaggio WM_ENTERSIZEMOVE. Viene inviato a una finestra quando l'utente fa clic sulla barra del titolo o sul bordo di ridimensionamento della finestra (ciò che fa entrare la finestra nel ciclo di spostamento o di ridimensionamento).

Per rilevare lo spostamento o il dimensionamento è terminato, prendere il messaggio WM_EXITSIZEMOVE. Viene inviato a una finestra dopo che l'utente ha rilasciato la barra del titolo della finestra o il bordo di ridimensionamento (ciò che fa uscire la finestra dal ciclo di spostamento o dimensionamento).

Si può prendere una di esse dichiarando (e attuare) li a livello di modulo:

procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE; 
procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE; 
+6

+1. Spero non ti sia importato un piccolo aiuto. :) –

+0

TLama: Esiste un modo equivalente per farlo in FMX? – RobertFrank

Problemi correlati