Autore Topic: Stampare contenuto form con g3  (Letto 956 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Stampare contenuto form con g3
« il: 22 Dicembre 2012, 15:21:36 »
Come da titolo è possibile stampare il contenuto di un form esattamente come lo si vede?
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.277
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #1 il: 22 Dicembre 2012, 17:27:18 »
Avevo posto anch'io sostanzialmente questo medesimo argomento, ti passo la pagina:
http://www.gambas-it.org/smf/index.php?topic=1970.0

Lì ci sono pure degli esempi allegati.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #2 il: 23 Dicembre 2012, 14:49:41 »
ok
ho un paio di domande
continuiamo lì oppure va bene quì?
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.277
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #3 il: 23 Dicembre 2012, 16:21:10 »
continuiamo lì oppure va bene quì?

Può andare bene anche qua.... Ceskho permettendo !  ;D

Speriamo  :'( che intervengano anche gli altri ben più preparati di me ! Magari proprio Fsurfing e milio che erano interventuti già in quella discussione.
« Ultima modifica: 23 Dicembre 2012, 19:46:01 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #4 il: 24 Dicembre 2012, 10:46:51 »
Ci provo
mi par di capire che gli oggetti presenti nel form (ho provato con form al posto di panel e funziona) vengono ridisegnati per essere stampati
corretto?
"e il naufragar m'è dolce in questo mar"

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #5 il: 24 Dicembre 2012, 11:32:21 »
correttissimo

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #6 il: 24 Dicembre 2012, 11:36:14 »
ok
appena ho tempo devo fare un po di esperimenti con form contenenti delle gridview

"e il naufragar m'è dolce in questo mar"

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #7 il: 24 Dicembre 2012, 11:44:52 »
be credo che per delle gridwiew il tutto non funzioni , se devi stampare solo il contenuto di una gridwiew io utilizzo questo codice:

Codice: [Seleziona]
' Gambas class file

Private griglia As TableView
Private titolo As String
Private size As Integer


Private $i As Integer

Private th As New Integer[]
Private tw As New Integer[]
Private pagine As Integer
Private pagina As Integer
Private wt As Integer

Public Sub tabella(tab As TableView, $titolo As String, $size As Integer, $Orientation As Integer)
    
    griglia = tab
   titolo = $titolo
   size = $size
   'Orientation = $Orientation

    If Ptabella.Configure() Then Return
    Ptabella.orientation = $Orientation
   $i = 0
   wt = 0
   th.Clear
   tw.Clear
    pagine = 1
    pagina = 1
    Ptabella.Print

End




Public Sub Ptabella_Begin()
    
  Dim i, w, i1, cx, bx, by, cy, ht, h As Integer
  'Dim th, tw As New Integer[]
    
    Print paint.w
    bx = paint.w / 20
    by = paint.h / 50
    cx = bx / 10
    cy = bx / 50

inizio:    
    tw.Clear
    th.Clear
    
    Paint.Font.Size = size
    'calcolo larghezza area stampata
    
    For i = 0 To griglia.columns.Max
        w = Paint.Font.TextWidth(griglia.Columns[i].Text)
        For i1 = 0 To griglia.Rows.Max
          If w < Paint.Font.TextWidth(griglia[i1, i].text) Then
            w = Paint.Font.TextWidth(griglia[i1, i].text)
          Endif
        Next
        tw.Add(w + cx * 2)
    Next
    
    'larghezza totale
    w = 0
    For i = 0 To tw.Max
      w += tw[i]
    Next
    
    If w > Paint.w - bx * 2 Then
      Dec size
      If size > 3 Then
        Goto inizio
      Endif
    Endif
    
    wt = w
    Print "SIZE ", size
    
    'calcoli altezza
    ht = by
    'calcolo altezza logo
        
    'If opzioni.cerca("stampa_logo_tabella", False) = True Then
        'HT += opzioni.cerca("altezza_logo_tabella")
    'Endif
    'altezza titolo
    'ht += Paint.Font.TextHeight(titolo) + cy * 2
    
    'altezza intest tabella
    ht += Paint.Font.TextHeight("H") + cy * 2
    
    'altezza celle
    For i = 0 To griglia.Rows.Max
      h = 0
      For i1 = 0 To griglia.Columns.Max
        If h < paint.Font.TextHeight(griglia[i, i1].text) Then
          h = paint.Font.TextHeight(griglia[i, i1].text)
        Endif
      Next
        ht += h + cy * 2
        th.Add(h)
        'controllo pagina
        If ht >= paint.h - by * 2 Then
          Inc pagine
          ht = by
        Endif
    
    Next

Ptabella.Count = pagine

Print "pagine ", pagine
End

Public Sub Ptabella_Draw()

  Dim i, i1, cx, bx, by, cy, y, x, y1 As Integer
  'Dim th, tw As New Integer[]
    
    bx = paint.w / 20
    by = paint.h / 50
    cx = bx / 10
    cy = bx / 50

    
    Paint.Font.Size = size
    paint.Brush = paint.Color(Color.Black)
    
    If pagina = 1 Then
          y = by
          x = bx
          
        'stampo il logo
          'If opzioni.cerca("stampa_logo_tabella", False) = True Then
            'paint.DrawImage(Image.Load(User.Home & "/gesthotel2/loghi/tabella.jpg"), x, y)
            'y += opzioni.cerca("altezza_logo_tabella")
          'Endif
        
        'stampo titolo
          paint.DrawText(titolo, x, y, paint.w, paint.Font.TextHeight(titolo) + cy * 2, 3)
          y += paint.Font.TextHeight(titolo) + cy * 2
          paint.Fill
          
          'intestazione tabella
          paint.MoveTo(x, y)
          paint.LineTo(x, y + paint.Font.TextHeight("H") + cy * 2)
          paint.MoveTo(x, y)
          paint.LineTo(x + wt, y)
          paint.Stroke
          For i = 0 To griglia.columns.Max
            
             paint.DrawText(griglia.Columns[i].text, x, y, tw[i], paint.Font.TextHeight("H") + cy * 2, 3)
             x += tw[i]
             paint.Fill
             paint.MoveTo(x, y)
             paint.LineTo(x, y + paint.Font.TextHeight("H") + cy * 2)
             paint.Stroke
          Next
              x = bx
              y += paint.Font.TextHeight("H") + cy * 2
              paint.MoveTo(x, y)
              paint.LineTo(x + wt, y)
              paint.Stroke
      Else
        x = bx
        y = by
      Endif
      
      ' paint.MoveTo(x, y)
      ' paint.LineTo(x + wt, y)
      ' paint.Stroke
        
      'stampo tabella
      y1 = y
      
      For i = $i To griglia.Rows.Max
          For i1 = 0 To griglia.Columns.Max
            paint.DrawText(griglia[i, i1].Text, x, y, tw[i1], paint.Font.TextHeight(griglia[i, i1].Text) + cy * 2, griglia[i, i1].Alignment)
            
            x += tw[i1]
            
          Next
          paint.Fill
          x = bx
          'y += paint.Font.TextHeight(griglia[i, i1].Text) + cy * 2
          y += th[i]
          paint.MoveTo(x, y)
          paint.LineTo(x + wt, y)
          paint.Stroke
          If y >= paint.h - by * 2 Then
            $i = i + 1
            Break
          Endif
      Next
    
    
      'disegno linee verticali
            paint.MoveTo(x, y1)
            paint.LineTo(x, y)
            For i1 = 0 To griglia.Columns.Max
              x += tw[i1]
              paint.MoveTo(x, y1)
              paint.LineTo(x, y)              
            Next
            paint.Stroke
    
    
    
    
    
    
    
    Inc pagina
    
End

il codice si occupa di dimensionare le celle in base al testo e di creare quante pagine servono per stampare tutta la tabella , il tutto lo inserisci in un form apposito e lo lanci con la funzione tabella() , in cui come parametri passi l' oggetto gridview da stampare , il titolo , la dimensione del font è l'a llineamento della pagina.

ps: può esserci qualche linea di codice che fa riferimento al programma in cui la utilizzo.
ps2: l' oggetto printer si chiama Ptabella
« Ultima modifica: 24 Dicembre 2012, 11:56:18 da fsurfing »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #8 il: 24 Dicembre 2012, 11:50:31 »
benissimo
appena ho un po di tempo provo
grazie mille :ok:
"e il naufragar m'è dolce in questo mar"

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #9 il: 24 Dicembre 2012, 11:57:16 »
ho modificato il codice per eliminare alcune righe per te inutili,
possono esserci ancora qualche linea di codice che fa riferimento al programma in cui la utilizzo.
l' oggetto printer si chiama Ptabella

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #10 il: 24 Dicembre 2012, 12:16:34 »
ok
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.277
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Stampare contenuto form con g3
« Risposta #11 il: 24 Dicembre 2012, 16:05:05 »
ok

L'avevo detto che qua ci voleva fsurfing !   :coder:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »