Autore Topic: stampare in gambas  (Letto 1751 volte)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
stampare in gambas
« il: 03 Febbraio 2008, 14:43:39 »
ciao a tutti ,


ho due proplemi con le stampe in gambas


l' ogetto printer che utilizzavo in gambas 1 ora in gambas 2 è presente solo nel componente gb.qt.ext quindi si può utilizzare una stampante solo se si utilizzano le librerie QT?
provando ad utilizzare le librerie GTK per la gui del mio programma  gambas non mi riconosce l' istruzione


 IF Printer.Setup() THEN RETURN
Draw.Begin(Printer)


2° problema:

con gambas1 il mio programma era perfettamente funzionante ora che lo portato in gambas2 quando stampo un immagine (con le librerie qt.ext) ottengo solo un  quadrato nero, il codice che ho usato è questo


a = form1.TextBox2.text & "logo2.bmp"
hImage = NEW Image(2000, 1100)
himage.Load(a)
himage.Resize(2000, 1100)
draw.Image(himage, x + dy, y + dy)


c'è qualcuno che mi può aiutare?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: stampare in gambas
« Risposta #1 il: 03 Febbraio 2008, 15:01:49 »
1)
sì, purtroppo devo confermarti che in Gambas 2 (come in Gambas 1.9.x) la stampa è attualmente disponibile solo usando le Qt per cui se per la GUI usi il componente gb.gtp o il componente gb.gui ottieni quell'errore. Anch'io ho lo stesso problema.

2)
Io modifico l'immagine con questo codice:
Codice: [Seleziona]

' Gambas class file

PRIVATE Pagine AS Integer
PRIVATE Immagine AS NEW Image
PRIVATE ImmagineMod AS NEW Image

PUBLIC SUB _new()
DIM imageWidth AS Integer
DIM imageHeight AS Integer

  Immagine = Image.Load(Application.Path & "/grafica/logo-bn.gif")
  imageWidth = ((Immagine.Width * Printer.Resolution) / Desktop.Resolution)
  imageHeight = ((Immagine.Height * Printer.Resolution) / Desktop.Resolution)
  ImmagineMod = Immagine.Stretch(imageWidth, imageHeight, TRUE)
 
END

PUBLIC FUNCTION Stampa(Video AS Boolean, OPTIONAL NumPagine AS Integer, OPTIONAL Mensile AS Boolean) AS Boolean
DIM Comodo, Comodo2 AS String
DIM Descrizioni AS String[6]
DIM Aiuto AS Integer
DIM hStampa AS Process
DIM Aiuto2, Stampe AS Integer
DIM PagineStampate AS Integer
DIM NomFile AS String

  IF NumPagine <> 0 THEN
    Stampe = NumPagine
  ELSE
    Stampe = 3
  END IF  


  Printer.Copies = 1
  Printer.Name = ""
  Printer.File = Application.Path & "/stampa.ps"  
  Draw.Begin(Printer)
  WAIT
 
  FOR PagineStampate = 1 TO Stampe

    draw.Foreground = Color.Black
    draw.Background = color.White
    draw.LineWidth = 4
    draw.Font.Size = 8
    'TESTATA
    draw.Rect(300, 300, 2200, 1000)
    draw.Image(ImmagineMod, 320, 340)
(...)


Non so se il tuo problema sia simile al mio ma io mi sono accorto che se prima non adatto l'immagine alla risoluzione della stampante non ottengo nulla.
Quindi nell'evento _new della mia classe di stampa fattura carico e strecho l'immagine e la assegno ad un nuovo oggeto Image, che  poi "do in pasto" alla proprietà Image dell'oggetto Draw.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: stampare in gambas
« Risposta #2 il: 03 Febbraio 2008, 16:23:10 »
grazie mille !!!!!!!!!!!!! :-D  :-D ora funziona benissimo!


tra l' altro ho notato che mi basta anche solo caricare l' immagine con

DIM himage AS new IMAGE



himage=image.load(percorso)

invece di

 himage.load(percorso)

perchè il tutto funzioni perfettamente!


ciao ciao e ancora grazie!