Non riesco a completare una fase di stampa del DataReport.
In particolare vorrei che l'anteprima di stampa si posizionasse sulla proprietà "Adatta"; per fare ciò ho eseguito il subclassing per determinare l' handle della Toolbar del DR, per nascondere l'icona "Esporta" e per posizionare lo Zoom sul predetto valore "Adatta".
In particolare ho usato le API GetWindow, ShowWindow e SendMessage; quest'ultima funzione per posizionare lo zoom su "Adatta".
codice:
'Recupera l'indirizzo della TOOLBAR - Funzione nel Modulo Tools:
DRHwnd = DRValAtCap.hwnd
DRHwnd = GetWindow(DRHwnd, GW_CHILD)
DRHwnd = GetWindow(DRHwnd, GW_CHILD)
DRHwnd = GetWindow(DRHwnd, GW_CHILD)
btnPrintHWnd = GetWindow(DRHwnd, GW_CHILD)
btnExportHwnd = GetWindow(btnPrintHWnd, GW_HWNDNEXT)
LblHWnd = GetWindow(btnExportHwnd, GW_HWNDNEXT)
cboZoomHWnd = GetWindow(LblHWnd, GW_HWNDNEXT)
' Nasconde il bottone di export:
ShowWindow btnExportHwnd, False
'Posiziona lo ZOOM
SendMessage cboZoomHWnd, CB_SELECTSTRING, -1, ByVal "Adatta"
In questo modo Infatti la ComboBox espone il valore "Adatta" ma non esegue il valore; per ottenere il ridimensionamento dell'immagine si deve fare click sul valore esposto.
Un risultato, parziale, l'ho ottenuto unendo:
codice:
SendMessage cboZoomHWnd, CB_SELECTSTRING, -1, ByVal "Adatta"
SendMessage cboZoomHWnd, WM_LBUTTONDOWN, 7, vbNullString
SendMessage cboZoomHWnd, WM_LBUTTONUP, 7, vbNullString
Solo in questo caso si ottiene la voce selezionata (ombreggiata in bleu) e la tendina della combo aperta, ma senza l'effetto click sulla voce (l'immagine non viene modificata).
Dalle molteplici prove che ho fatto ho tratto la convinzione che l'handle ottenuto (cboZoomHWnd) sia riferito al pulsante della ComboBox e non all'area della List del controllo.
Vi chiedo se stò sbagliando tutto o se, viceversa, è possibile ottenere il predetto riferimento in modo da inviare un messaggio che simuli il click del mouse sul valore "Adatta" che risulta già selezionato.
Grazie !!