Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [VB6] PrintForm

  1. #1

    [VB6] PrintForm

    Salve forum...

    Ho un problema con la PrintForm.
    In pratica ho la necessità di stampare un form che è a tutto schermo, la cui risoluzione è 1280x1024 su un A4-orizzontale. Ora, mentre a risoluzione 1024x768 stampa tutto il form in un A4, con risoluzioni superiori taglia senza scrupolo alcuno il form.

    Ragazzi, ho tentato in tutti i modi di effettuare correttamente questa stampa, ma non c'è niente da fare... non riesco a trovare una soluzione.

    Mi sapete aiutare?...


    Vi ringrazio tutti per la collaborazione...



    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  2. #2
    potrsti fare un piccolo escamotage
    che va a leggere la risoluzione
    codice:
    Public Function CheckRez(pixelWidth As Long, pixelHeight As Long) As Boolean
        
        Dim lngTwipsX As Long
        Dim lngTwipsY As Long
        
        'converte i pixels in twips
        lngTwipsX = pixelWidth * 15
        lngTwipsY = pixelHeight * 15
        
        ' rileva la risoluzione corrente
        If lngTwipsX <> Screen.Width Then
            CheckRez = False
        Else
            If lngTwipsY <> Screen.Height Then
                CheckRez = False
            Else
                CheckRez = True
            End If
        End If
    End Function
    se non è quella che vuoi tu

    codice:
    Public Declare Function GetDesktopWindow Lib "user32" () As Long
    Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
    Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
    Public Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long
    Public Const LOGPIXELSX = 88
    Public Const LOGPIXELSY = 90
    'MODULO:
    Public Function IsScreenFontSmall() As Boolean
        Dim hWndDesk As Long
        Dim hDCDesk As Long
        Dim logPix As Long
        Dim r As Long
        hWndDesk = GetDesktopWindow()
        hDCDesk = GetDC(hWndDesk)
        logPix = GetDeviceCaps(hDCDesk, LOGPIXELSX)
        r = ReleaseDC(hWndDesk, hDCDesk)
        If logPix = 96 Then IsScreenFontSmall = True
        Exit Function
    End Function
    
    Sub ResizeControls(frmName As Form, winstate As Integer)
        On Error Resume Next
        Dim designwidth As Integer, designheight As Integer, designfontsize As Integer, currentfontsize As Integer
        Dim numofcontrols As Integer, a As Integer
        Dim movetype As String, moveamount As Integer
        designwidth = 1024
        designheight = 768
        designfontsize = 96
    ' qui al posto di rilegger la risoluzioni imposti tu le dimensioni dello screen
        GetResolutionX =  'esempio 1024
        GetResolutionY = ' esempio 768
        ratiox = GetResolutionX / designwidth
        ratioy = GetResolutionY / designheight
        'check to see what size of fonts are being used
        If IsScreenFontSmall Then
            currentfontsize = 96
        Else
            currentfontsize = 120
        End If
        'work out the ratio for the fontsize
        fontratio = designfontsize / currentfontsize
        If ratiox = 1 And ratioy = 1 And fontratio = 1 Then Exit Sub
        numofcontrols = frmName.Controls.Count - 1 'count the number of controls on the form
        If winstate = 0 Then 
        frmName.Height = frmName.Height * ratioy
        frmName.Width = frmName.Width * ratiox
        If frmName.Tag <> "" Then
            movetype = Left(frmName.Tag, 1)
            moveamount = Mid(frmName.Tag, 2, Len(frmName.Tag))
            Select Case movetype
                Case "L"
                    frmName.Left = frmName.Left + moveamount
                Case "T"
                    frmName.Top = frmName.Top + moveamount
                Case "H"
                    frmName.Height = frmName.Height + moveamount
                Case "W"
                    frmName.Width = frmName.Width + moveamount
            End Select
        End If
        
    ElseIf winstate = 2 Then 
        frmName.Width = Screen.Width
        frmName.Height = Screen.Height
        frmName.Top = 0
        frmName.Left = 0
    End If
    For a = 0 To numofcontrols 
        If frmName.Controls(a).Font.Size <= 8 And ratiox < 1 Then
            frmName.Controls(a).Font.Name = "Small Fonts"
            frmName.Controls(a).Font.Size = frmName.Controls(a).Font.Size - 0.5
        Else
            frmName.Controls(a).Font.Size = frmName.Controls(a).Font.Size * ratiox
        End If
        If TypeOf frmName.Controls(a) Is Line Then
            frmName.Controls(a).X1 = frmName.Controls(a).X1 * ratiox
            frmName.Controls(a).Y1 = frmName.Controls(a).Y1 * ratioy
            frmName.Controls(a).X2 = frmName.Controls(a).X2 * ratiox
            frmName.Controls(a).Y2 = frmName.Controls(a).Y2 * ratioy
        ElseIf TypeOf frmName.Controls(a) Is PictureBox Then
            frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
            frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
            frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
            frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
            frmName.Controls(a).ScaleHeight = frmName.Controls(a).ScaleHeight * ratioy
            frmName.Controls(a).ScaleWidth = frmName.Controls(a).ScaleWidth * ratiox
        ElseIf TypeOf frmName.Controls(a) Is Toolbar Then
            frmName.Controls(a).ButtonHeight = frmName.Controls(a).ButtonHeight * ratioy
            frmName.Controls(a).ButtonWidth = frmName.Controls(a).ButtonWidth * ratiox
            frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
            frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
            frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
            frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
        ElseIf TypeOf frmName.Controls(a) Is MSFlexGrid Then
            frmName.Controls(a).ColWidth = frmName.Controls(a).ColWidth * ratiox
            frmName.Controls(a).RowHeight = frmName.Controls(a).RowHeight * ratioy
            frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
            frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
            frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
            frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
        Else
            frmName.Controls(a).Width = frmName.Controls(a).Width * ratiox
            frmName.Controls(a).Height = frmName.Controls(a).Height * ratioy
            frmName.Controls(a).Top = frmName.Controls(a).Top * ratioy
            frmName.Controls(a).Left = frmName.Controls(a).Left * ratiox
        End If
        If frmName.Controls(a).Tag <> "" Then
            movetype = Left(frmName.Controls(a).Tag, 1)
            moveamount = Mid(frmName.Controls(a).Tag, 2, Len(frmName.Controls(a).Tag))
            Select Case movetype
                Case "L"
                    frmName.Controls(a).Left = frmName.Controls(a).Left + moveamount
                Case "T"
                    frmName.Controls(a).Top = frmName.Controls(a).Top + moveamount
                Case "H"
                    frmName.Controls(a).Height = frmName.Controls(a).Height + moveamount
                Case "W"
                    frmName.Controls(a).Width = frmName.Controls(a).Width + moveamount
            End Select
        End If
    poi stampi
    poi lo rimetti normale
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Originariamente inviato da xegallo
    potrsti fare un piccolo escamotage
    che va a leggere la risoluzione
    codice:
    Public Function CheckRez(pixelWidth As Long, pixelHeight As Long) As Boolean
        
        Dim lngTwipsX As Long
        Dim lngTwipsY As Long
        
        'converte i pixels in twips
        lngTwipsX = pixelWidth * 15
        lngTwipsY = pixelHeight * 15
        
        ' rileva la risoluzione corrente
        If lngTwipsX <> Screen.Width Then
            CheckRez = False
        Else
            If lngTwipsY <> Screen.Height Then
                CheckRez = False
            Else
                CheckRez = True
            End If
        End If
    End Function
    xegallo, grazie x l'aiuto...
    questa funzione, se ho capito bene, mi restituisce SI o NO a seconda se la larghezza e l'altezza del form sono o meno uguali alla risoluzione dello schermo, giusto?
    ma, io già so che le dimensioni del form sono quanto lo schermo... il problema me lo da la stampa proprio.
    e cmq, una volta che CheckRez mi restituisce True o False, che dovrei fare?...:master:

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  4. #4
    questa ti restituice si o no in base ad una risoluzione che voui controllare ad esmpio se la risoluzione è 1024 X 768 e tu passi alla funzione 600 X 400 risulta falsa risulta vera solo quando i valori che gli passi sono uguali alla risoluzione


    nel tuo caso prima di stampare controlla che la risoluzione sia pari a 1024 X 768

    se risulta false ridimensioni il form come per simulare quella risoluzione
    lanci la stampa
    e poi se vuoi lo ridimensioni normali
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Originariamente inviato da xegallo
    questa ti restituice si o no in base ad una risoluzione che voui controllare ad esmpio se la risoluzione è 1024 X 768 e tu passi alla funzione 600 X 400 risulta falsa risulta vera solo quando i valori che gli passi sono uguali alla risoluzione


    nel tuo caso prima di stampare controlla che la risoluzione sia pari a 1024 X 768

    se risulta false ridimensioni il form come per simulare quella risoluzione
    lanci la stampa
    e poi se vuoi lo ridimensioni normali
    intanto la mia risoluzione è 1280x1024, e poi io ho un form pieno zeppo di matrici di controlli e tu sai che mi ci vuole un'eternità a ridisegnarli e riposizionarli tutti. possibile che non si riesce a far andare d'accordo form e stampante senza fare troppo casino?...



    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  6. #6
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    ...magari non serve anulla, ma prova ad impostare la prop. AUTOREDRAW del form che devi stampare su TRUE...
    ...and I miss you...like the deserts miss the rain...

  7. #7
    Originariamente inviato da vonkranz
    ...magari non serve anulla, ma prova ad impostare la prop. AUTOREDRAW del form che devi stampare su TRUE...
    già fatto e rifatto... se ne strafrega...

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  8. #8
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    ...prova a fare una cosa:
    Modifica manualmente l'impostazione della stampante che utilizzi, anziche' farlo da programma.

    L'help dice:
    La stampante alla quale si riferisce PrintForm è determinata dalle impostazioni del Pannello di controllo del sistema operativo.
    ...and I miss you...like the deserts miss the rain...

  9. #9
    Originariamente inviato da vonkranz
    ...prova a fare una cosa:
    Modifica manualmente l'impostazione della stampante che utilizzi, anziche' farlo da programma.

    L'help dice:
    La stampante alla quale si riferisce PrintForm è determinata dalle impostazioni del Pannello di controllo del sistema operativo.
    e quindi che devo fare?...:master:...devo andare su pannello di controllo e poi...???...

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  10. #10
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Originariamente inviato da ladyBlu

    e quindi che devo fare?...:master:...devo andare su pannello di controllo e poi...???...
    ...modificare l'impostazione del foglio della stampante sulla dimensione che ti serve... ma da pannello di controllo.... e poi provare il PrintForm...

    ...ho la sensazione che questa funzione se ne sbatta ampiamente le OO delle impostazioni che dai alla stampante via codice.......
    ...and I miss you...like the deserts miss the rain...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.