Autore Topic: Posseggo un modulo di classe in Visula Basic ........  (Letto 1758 volte)

Offline Diakrufus

  • Gamberetto
  • *
  • Post: 29
    • Mostra profilo
    • Diakrufus
Posseggo un modulo di classe in Visula Basic ........
« il: 22 Dicembre 2010, 21:21:27 »
Ciao come da oggetto posseggo un modulo di classe in vb precisamente una classe per la stampa l'ho usata sempre in vb è fa tante cose Linee, rettangoli cerchi ed altro, si potrebbe convertire in Gambas? Se si ve la passo. :P ???

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Posseggo un modulo di classe in Visula Basic ........
« Risposta #1 il: 22 Dicembre 2010, 23:41:58 »
Prima dai un'occhiata a PDF-Writer, la libreria scritta dal nostro mod MD....
E' un porting di questa libreria in php:
http://www.fpdf.org/

Fa parecchie cose tipo, Linee, Grafici, 3D, BarCode, TextRotate, ecc. Dai un'occhiata agli esempi!

Se nella tua classe c'è qualche elemento di particolare interesse che manca in PDF Writer lo possiamo aggiungere!  ;)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Posseggo un modulo di classe in Visula Basic ........
« Risposta #2 il: 23 Dicembre 2010, 01:12:24 »
si che si può convertire.
io ho convertito un'intero programma da visualbasic.
basta conoscere le differenze fra i due linguaggi.

il problema è, che come ti ha detto perseo, per gambas c'è già una mega classe (PdfWriter) che fa di tutto e di più.

In Visualbasic per la Stampa ci si affidava a programmi esterni come Cristal report o Active Report, e dubito che avendo questi programmi già pronti si sviluppasse allo stesso tempo classi complete per la stampa.

cmq posta l'esempio che diamo un'occhiata. 

Offline Diakrufus

  • Gamberetto
  • *
  • Post: 29
    • Mostra profilo
    • Diakrufus
Re: Posseggo un modulo di classe in Visula Basic ........
« Risposta #3 il: 23 Dicembre 2010, 09:16:36 »
si che si può convertire.
io ho convertito un'intero programma da visualbasic.
basta conoscere le differenze fra i due linguaggi.

il problema è, che come ti ha detto perseo, per gambas c'è già una mega classe (PdfWriter) che fa di tutto e di più.

In Visualbasic per la Stampa ci si affidava a programmi esterni come Cristal report o Active Report, e dubito che avendo questi programmi già pronti si sviluppasse allo stesso tempo classi complete per la stampa.

cmq posta l'esempio che diamo un'occhiata. 

Passo alcune cose delle classe e le proprietà:
Codice: [Seleziona]
Option Explicit



Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _

                         ByVal nIndex As Long) As Long

 

 'zona non stampabile

 Dim OffsetX  As Single

 Dim OffsetY  As Single



'Sono dichiarati solo i formati più usati. E' possibile personalizzare

'la lista aggiungendo qualunque altro formato.

Enum Dimensioni_Foglio

    A3 = vbPRPSA3                              ' A3, 297 x 420 mm

    A4 = vbPRPSA4                              ' A4, 210 x 297 mm

    A5 = vbPRPSA5                              ' A5, 148 x 210 mm

    B4 = vbPRPSB4                              ' B4, 250 x 354 mm

    B5 = vbPRPSB5                              ' B5, 182 x 257 mm

    Letter = vbPRPSLetter                      ' Letter 8.5 x 11 in.

    Tabloid = vbPRPSTabloid                  ' Tabloid, 11 x 17 in.

    Legal = vbPRPSLegal                       ' Legal, 8.5 x 14 in.

    Quarto = vbPRPSQuarto                   ' Quarto, 215 x 275 mm

    User = vbPRPSUser                         ' Definito dall 'utente.

End Enum

'Nota: Se si imposta la proprietà Height o Width per una stampante,

'PaperSize viene automaticamente impostata su vbPRPSUser.



Enum QualitàDiStampa

   Bozza = vbPRPQDraft                        '-1

   BassaRisoluzione = vbPRPQLow        '-2

   MediaRisoluzione = vbPRPQMedium   '-3

   AltaRisoluzione = vbPRPQHigh           '-4

End Enum

'Nota: su determinate stampanti, è possibile che alcune o tutte

'le impostazioni producano lo stesso risultato.



Enum TipoStampa

   Monocromatico = vbPRCMMonochrome  '1

   Colori = vbPRCMColor '2

End Enum



Enum OrientamentoDelFoglio

   Verticale = vbPRORPortrait           '1

   Orizzontale = vbPRORLandscape  '2

End Enum



Enum StileLinea

    Continua = vbSolid                           '(0)

    Lineetta = vbDash                            '(1)

    punto = vbDot                                  '(2)

    LineettaPunto = vbDashDot               '(3)

    LineettaPuntoPunto = vbDashDotDot '(4)

    'Invisibile = vbInvisible                        '(5)

    'Continua interna = vbInsideSolid        '(6)

End Enum

'Nota: se l'impostazione della proprietà DrawWidth è

'maggiore di 1, le impostazioni della proprietà DrawStyle

'da 1 a 4 produrranno sempre e solo una linea continua





Dim SpaziaturaLinee   As Single 'interlinea

Const m_DefaultSpaziatura = 1  ' mm

Const PI = 3.14159265 'pi greco


' proprietà della classe '



'Imposta l'interlinea (spaziatura fra una riga e la l'altra)

'(proprietà usata solo nelle stampe "multilinea", ovvero

'con stringhe che contengono almeno un'accapo (vbCr)

Property Let SpaziaturaLinea(Spaziatura As Single)

    If Spaziatura >= 0 Then

        SpaziaturaLinee = Spaziatura

    Else

        SpaziaturaLinee = m_DefaultSpaziatura '1mm

    End If

End Property

'Legge il valore dell'interlinea

Property Get SpaziaturaLinea() As Single

    SpaziaturaLinea = SpaziaturaLinee

End Property

' Imposta le dimensioni del font

Public Property Let FontSize(lFontSize As Integer)

    Printer.FontSize = lFontSize

End Property

'legge le dimensioni del font

Public Property Get FontSize() As Integer

    FontSize = Printer.FontSize

End Property

' Imposta il nome del font da usare

Public Property Let FontName(sFontName As String)

On Error GoTo FontError

    Printer.FontName = sFontName

   Exit Property

FontError:

End Property

' Legge il nome del font impostato

Public Property Get FontName() As String

    FontName = Printer.FontName

End Property

'Imposta la proprietà Bold per il font in uso

Public Property Let FontBold(bFontBold As Boolean)

    Printer.FontBold = bFontBold

End Property

'legge la proprietà Bold del font in uso

Public Property Get FontBold() As Boolean

    FontBold = Printer.FontBold

End Property

'Imposta la proprietà Italic per il font in uso

Public Property Let FontItalic(bFontItalic As Boolean)

    Printer.FontItalic = bFontItalic

End Property

'legge la proprietà Italic del font in uso

Public Property Get FontItalic() As Boolean

    FontItalic = Printer.FontItalic

End Property

'Imposta la proprietà Sottolinato per il font in uso

Public Property Let FontUnderline(bFontUnderline As Boolean)

    Printer.FontUnderline = bFontUnderline

End Property

'legge la proprietà Sottolinato del font in uso

Public Property Get FontUnderline() As Boolean

    FontUnderline = Printer.FontUnderline

End Property

'imposta il colore di primo piano

Public Property Let ForeColor(Color As Long)

 On Error GoTo ColorError

    Printer.ForeColor = Color

Exit Property

ColorError:

   Printer.ForeColor = vbBlack

End Property

'legge il il colore di primo piano

Public Property Get ForeColor() As Long

    ForeColor = Printer.ForeColor

End Property

'imposta le dimensioni del foglio

Public Property Let PaperSize(lPapersize As Dimensioni_Foglio)

    Printer.PaperSize = lPapersize

End Property

'legge le dimensioni del foglio impostate

Property Get PaperSize() As Dimensioni_Foglio

    PaperSize = Printer.PaperSize

End Property

'imposta il numero di copie

Public Property Let Copies(lCopies As Integer)

    Printer.Copies = lCopies

End Property

'legge il numero di copie

Public Property Get Copies() As Integer

    Copies = Printer.Copies

End Property

'legge la qualità di stampa impostata

Public Property Let PrintQuality(Quality As QualitàDiStampa)

    Printer.PrintQuality = Quality

End Property

'imposta la modalità di stampa impostata (colore o B&W)

Public Property Let ColorMode(Output As TipoStampa)

    Printer.ColorMode = Output

End Property

'imposta l'orientamento del foglio impostato (verticale o orizzontale)

Public Property Let Orientation(x As OrientamentoDelFoglio)

    Printer.Orientation = x

End Property

'imposta la proprietà della linea (continua, punto, punto-linea etc.)

Public Property Let DrawStyle(Style As StileLinea)

    Printer.DrawStyle = Style

End Property

'imposta lo spessore della linea impostato

Public Property Let DrawWidth(Width As Integer)

   Printer.DrawWidth = Width

End Property

'Legge la posizione corrente di stampa X (orizzontale)

Property Get CurrentX() As Single

    CurrentX = Printer.CurrentX - OffsetX

End Property

'Imposta la posizione di stampa X (orizzontale)

Property Let CurrentX(sCurrentX As Single)

    Printer.CurrentX = sCurrentX + OffsetX

End Property

'Imposta la posizione di stampa Y (verticale)

Property Let CurrentY(sCurrentY As Single)

    Printer.CurrentY = sCurrentY + OffsetY

End Property

'Legge la posizione corrente di stampa Y (verticale)

Property Get CurrentY() As Single

    CurrentY = Printer.CurrentY - OffsetY

End Property

'Legge il numero di font disponibili per la stampante

Public Property Get FontCount() As Integer

    FontCount = Printer.FontCount

End Property

'legge, tra i font disponibili, il nome del font in base all'indice

Public Property Get Fonts(iFont As Integer) As String

    Fonts = Printer.Fonts(iFont)

End Property

'legge le dimensioni (disponibili per la stampa) verticali della pagina

Property Get PageHeight() As Single

    PageHeight = Printer.ScaleHeight - (OffsetY * 2)

End Property

'legge le dimensioni (disponibili per la stampa) orizzontali della pagina

Property Get PageWidth() As Single

    PageWidth = Printer.ScaleWidth - (OffsetX * 2)

End Property

'legge il numero di pagina corrente

Property Get Page() As Integer

    Page = Printer.Page

End Property


« Ultima modifica: 23 Dicembre 2010, 13:41:55 da Ceskho »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Posseggo un modulo di classe in Visula Basic ........
« Risposta #4 il: 23 Dicembre 2010, 13:43:13 »
Quando scrivete codice molto lungo usate l'apposito tag CODE che è applicabile cliccando sul tastino con il cancelletto # altrimenti è difficile leggere i papiri.

La divina Comedia ha avuto successo una volta...credo sia una fortuna unica.... ;D