[vb6] copiare un form in clipboard

di
Anonimizzato1284
il
4 risposte

[vb6] copiare un form in clipboard

Salve ragazzi, ciao moderatori,

qualcuno di voi sa come posso memorizzare un form non visibile su schermo (ciè non presente sullo schermo) nella clipboard?

grazie anticipatamente a tutti!

4 Risposte

  • Re: [vb6] copiare un form in clipboard

    Credo che non sia possibile, in quanto la hDC sarà vuota, ossia riflette esattamente il contenuto dello schermo sotto cui si 'nasconde'.

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: [vb6] copiare un form in clipboard

    Ciao y2ksw,
    quindi mi stai dicendo che non posso!
    Io dovrei risolvere qesta cosa:

    ho due form (form1 e form2). La form1 è visibile sullo schermo e contiene na serie di dati. La form2 è nascosta e contiene gli stessi dati (aggiornati) di form 1 con in meno qualche controllo e in più qualche altro dato (immagini e testo). La form2 è una pagina di prestampa.
    Da un pulsante nella form1 mando in stampa la form2: ora io vorrei fare riscalare la form2 alle dimensioni del foglio di stampa (es. A4 o A3). Ma non ci riesco.
    Ecco perchè avevo pensato di memorizzare la form2 nella clipboard come immagine (senza però farla vedere durante questa operazione) per poi riscalarla in fase di stampa della clipboard.

    Non so proprio come fare, a questo punto !!!
  • Re: [vb6] copiare un form in clipboard

    Ecco, il problema è diverso, e solvibile. Imposta la form2, che contiene le cose da stampare, AutoRedraw = True. A questo punto, il contenuto rimane 'attivo', anche se è invisibile. E' chiaro che devi stampare (Print, Line, PSet, PaintPicture) sulla form come se fosse una stampante. E' meglio usare però una picturebox, perché il formato A4 non c'entra nella form, e non puoi fare lo scorrimento, invece la picbox puoi spostare come ti pare (HScroll/VScroll bar).

    Rimane il problema della stampa in scala, dove ogni metodo ha i suoi comportamenti 'personali'. I più difficili sono i caratteri, che sono *sempre* in punti, indifferentemente dallo zoom (pic.scale) che imposti. Inoltre, se sono al di sotto di 8 punti, bisogna usare i caratteri sostituitivi 'SmallFont' del sistema, altrimenti potresti finire le memorie , e questi non si possono ridimensionare come si vuole. Per questo molti programmi professionali passano alla simulazione di caratteri < 8 punti.

    Per prendere spunto, ti consiglio di cercare sul google 'visual basic preview source', e molto probabilmente trovi ottimo sorgente che fa anche la 'giustificazione a destra', ultimo traguardo dei programmatori grafici, e questo è davvero molto difficile

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
  • Re: [vb6] copiare un form in clipboard

    Per quanto riguarda la stampa sto utilizzando questa tecnica:

    il form2 (quello invisibile) è una copia esatta, per controlli e picture, al form1 (visibile). Questo perchè i controlli (label, frame, picture, ecc.) sul form2 sono molti e quindi mi è più facile aggiornare il form2 copiando i control del form1.

    Non utilizzo la stampa con il metodo printer, ma con form2.printform (che è più comodo perché non devi stare a settare tutte le posizioni dei textbox, delle labels, dei frame e delle picturebox, non ti pare?!).

    Per quanto rihuarda il resize del form2 avevo pensato che con PaintPicture in fase di stampa si può riscalare l'immagine del form2 copiata in clipboard alle dimensioni del foglio (ma questo metodo mi pare di capire che on si può fare, ossia funziona ma solo se copio la form2 nella clipboard solo dopo averlo reso visibile, e questo non mi piace).

    Avevo pensato ad un'altra tecnica: rendere il form riscalabile con tutti i suoi controlli e poi ridimensionarlo al foglio di stampa. Ma ho ancora dei problemi: non riesco a riscalare correttamente al foglio. Per il resize del formavevo scaricato 'clResize' da qui:
    ------
    http://www.it-lang-vb.net/archivio.asp?pag=36&info=ye
    ------
    e questo funziona bene: è un modulo di classe (clsResize) che, quando si riscala 'manualmente' un form, modifica tutti i controlli presenti sullo stesso (eccetto i testi, probabilmente per il motivo che dici tu); con clResize avevo pensato di riscalare da programma il form e poi stamparlo: ma non riesco a fargli assumere le dimensioni del foglio che utilizzo per la stampa (mi si modificano le dimensioni in modo strano e non riesco ancora a gestirle, forse ci devo lavorare ancora un po' su!).
Devi accedere o registrarti per scrivere nel forum
4 risposte