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".
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.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"
Un risultato, parziale, l'ho ottenuto unendo:
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).codice:SendMessage cboZoomHWnd, CB_SELECTSTRING, -1, ByVal "Adatta" SendMessage cboZoomHWnd, WM_LBUTTONDOWN, 7, vbNullString SendMessage cboZoomHWnd, WM_LBUTTONUP, 7, vbNullString
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 !!

Rispondi quotando