PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMŇDUL 6ENRERA
PRŔCTICA 1 2 (prŕctica optativa) 3 (prŕctica optativa) 4 5 6 7 8
 
Executar el programa m6p7.exe per cončixer el seu comportament.

Veure el llistat del codi del programa, m6p7.

Executar Visual Basic per editar el projecte (acabat): m6p7.vbp.


Imprimir

Podeu fer ús de la impressora de les dues formes esmentades a continuació:

a) Imprimir un formulari fent un bolcat de pantalla

Els formularis tenen un mčtode PrintForm que imprimeix el formulari igual que el veieu a la pantalla. Així, en el projecte Eixos de coordenades de l'activitat 2 podeu afegir un nou botó de comandament que tingui el títol d'imprimir amb el següent codi:
    Sub Imprimir_Click()
      Dim Contestació as Integer
    
      Contestació = MsgBox("Segur que vols imprimir el formulari ?",MB_YESNO)
      If Contestació = IDYES Then frmEixos.PrintForm
    End Sub

Definiu també la variable global al formulari:
    Const IDYES=6

aquest valor de la variable és el que retorna la funció MsgBox quan es prem el botó d'acceptació.

Heu de tenir cura de demanar confirmació abans d'imprimir el formulari.

Aquesta forma d'imprimir fa un bolcat de mapa de bits del formulari cap a la impressora.


b) Imprimir en l'objecte Printer

A efectes de dibuixar, l'objecte Printer és molt semblant als objectes formulari i quadre de dibuix, de manera que té quasi bé els mateixos mčtodes i propietats que aquests.

A més disposa dels mčtodes propis EndDoc i NewPage.

Com que dibuixar en un formulari és igual que fer el dibuix en l'objecte printer, és convenient fer primer el dibuix a sobre d'un formulari, i fer les proves necessŕries fins que el programa funcioni bé. Després el podeu posar dins de l'objecte Printer afegint les instruccions adients de EndDoc i NewPage.

Tema: Printer Subtema: Printer Object

Fareu un programa amb dues opcions de menú, que faran el mateix dibuix en el formulari i en l'objecte printer. El formulari esmentat se semblarŕ al mostrat a sota.



Fase de disseny de la interfície d’usuari

Creeu un formulari nou al qual li afegireu un menú, anomenat Dibuix i amb dues opcions: Per pantalla i Per impressora. El projecte el desareu amb el nom m6p7 i en el directori C:\VBCurs\VBActivi\m6\p7. Les propietats dels objectes són:


Objecte

Propietat

Valor

Formulari

(Nombre)

frmGràfic

 

Caption

Dibuix a la impressora

Menú Dibuix

(Nombre)

mnuDibuix

 

Caption

Dibuix

Opció Pantalla

(Nombre)

mnuPantalla

 

Caption

Per pantalla

Opció Impressora

(Nombre)

mnuImpressora

 

Caption

Per impressora




Fase de programació de respostes a events

Mčtodes associats a l'event Click

Recordeu que no cal que escriviu aquest codi. El podeu copiar a la carpeta i enganxar-lo en la finestra d'edició de Visual Basic.

Per a l'opció de menú Per pantalla:
    Sub mnuPantalla_Click ()
      Dim LLargPaper As Single, AltPaper as single
      Dim VčrtexAX As Integer, VčrtexAY As Integer
      Dim VčrtexBX As Integer, VčrtexBY As Integer
      Dim i As Integer
    
      'Mida del paper Din A4 menys els marges
      LLargPaper = 210
      AltPaper = 297
      'Posa el sistema de coordenades amb origen en el 
      'centre del paper i mides exactes del DIN A4
      frmGrŕfic.ScaleMode = 6
      VčrtexAX = -(LLargPaper / 2)
      VčrtexAY = (AltPaper / 2)
      VčrtexBX = (LLargPaper / 2)
      VčrtexBY = -(AltPaper / 2)
      frmGrŕfic.Scale (VčrtexAX, VčrtexAY)-(VčrtexBX, VčrtexBY)
      'Dibuixa el cercle gros
      frmGrŕfic.FillStyle = 1 'Transparent
      frmGrŕfic.Circle (0, 0), 90
      'Dibuixa els cercles
      frmGrŕfic.FillStyle = 0 'Sňlid
      For i = 4 To 1 Step -1
        frmGrŕfic.FillColor = QBColor(i)
        frmGrŕfic.Circle (0, 0), i * 10
      Next
    
      'Dibuixa els rectangles sobre els cercles
      For i = 50 To 80 Step 10
        frmGrŕfic.Line (-20, i + 10)-(20, i), QBColor(i / 10), BF
      Next
      'Dibuixa els rectangles sota els cercles
      For i = -50 To -80 Step -10
        frmGrŕfic.Line (-20, i - 10)-(20, i), QBColor(-i / 10), BF
      Next
    
      'Fa la línia de cercles final
      For i = -90 To 90 Step 5
        frmGrŕfic.Circle (i, -100), 1
      Next
        
      'Fa les línies rectes
      frmGrŕfic.Line (90, 100)-(-90, -100)
      frmGrŕfic.Line -(0, 130)
      frmGrŕfic.Line -(90, -100)
      frmGrŕfic.Line -(90, 100)
    End Sub

Per tal de fer el grŕfic creareu un sistema de coordenades en el qual les unitats del formulari siguin mil·límetres i amb la mida del paper Din A4, és a dir, 210´297 cm.

Per a l'opció de menú Per impressora:

Per tal de fer el procediment corresponent a l'objecte Printer (Sub mnuImpressora_Click) heu d'escriure el mateix que en Sub mnuPantalla_Click (el procediment anterior) tot i reemplaçant la paraula frmGrŕfic per la paraula Printer. Heu d'afegir-hi la darrera instrucció printer.EndDoc que li dóna a la impressora l'ordre de final de document, i fa que surti el paper.


    Sub mnuImpressora_Click ()
      Dim LLargPaper As Single, AltPaper As Single
      Dim VčrtexAX As Integer, VčrtexAY As Integer
      Dim VčrtexBX As Integer, VčrtexBY As Integer
      Dim i As Integer
    
      'Mida del paper Din A4 menys els marges
      LLargPaper = 210
      AltPaper = 297
      'Posa el sistema de coordenades amb origen en el
      'centre del paper i mides exactes del DIN A4
      Printer.ScaleMode = 6
      VčrtexAX = -(LLargPaper / 2)
      VčrtexAY = (AltPaper / 2)
      VčrtexBX = (LLargPaper / 2)
      VčrtexBY = -(AltPaper / 2)
      Printer.Scale (VčrtexAX, VčrtexAY)-(VčrtexBX, VčrtexBY)
      'Dibuixa el cercle gros
      Printer.FillStyle = 1 'Transparent
      Printer.Circle (0, 0), 90
      'Dibuixa els cercles
      Printer.FillStyle = 0 'Sňlid
      For i = 4 To 1 Step -1
        Printer.FillColor = QBColor(i)
        Printer.Circle (0, 0), i * 10
      Next
    
      'Dibuixa els rectangles sobre els cercles
      For i = 50 To 80 Step 10
        Printer.Line (-20, i + 10)-(20, i), QBColor(i / 10), BF
      Next
      'Dibuixa els rectangles sota els cercles
      For i = -50 To -80 Step -10
        Printer.Line (-20, i - 10)-(20, i), QBColor(-i / 10), BF
      Next
    
      'Fa la línia de cercles final
      For i = -90 To 90 Step 5
        Printer.Circle (i, -100), 1
      Next
        
      'Fa les línies rectes
      Printer.Line (90, 100)-(-90, -100)
      Printer.Line -(0, 130)
      Printer.Line -(90, -100)
      Printer.Line -(90, 100)
      Printer.EndDoc
    End Sub


Exercicis

No n'hi ha