PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 6

Fitxer: m6p8.frm

Definició dels objectes. Interfície d'usuari.

Recordeu que això no ho podeu editar directament. Per editar-ho es fa incorporant nous objectes de la paleta en el vostre formulari. I per canviar els valors ho feu sel.leccionant l'objecte i escolliu la propietat a canviar en la finestra Properties.

VERSION 5.00
Begin VB.Form frmGràfic 
   Appearance      =   0  'Flat
   BackColor       =   &H80000005&
   Caption         =   "Dibuix d'un gràfic de barres a la impressora"
   ClientHeight    =   3645
   ClientLeft      =   2430
   ClientTop       =   2565
   ClientWidth     =   3780
   BeginProperty Font 
      Name            =   "MS Sans Serif"
      Size            =   8.25
      Charset         =   0
      Weight          =   700
      Underline       =   0   'False
      Italic          =   0   'False
      Strikethrough   =   0   'False
   EndProperty
   ForeColor       =   &H80000008&
   LinkTopic       =   "Form1"
   PaletteMode     =   1  'UseZOrder
   ScaleHeight     =   3645
   ScaleWidth      =   3780
   Begin VB.Menu mnuDibuix 
      Caption         =   "Dibuix"
      Begin VB.Menu mnuPantalla 
         Caption         =   "Per pantalla"
      End
      Begin VB.Menu mnuImpressora 
         Caption         =   "Per impressora"
      End
   End
End


Codi del programa. Programació de respostes a events.

Attribute VB_Name = "frmGràfic"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Private Sub mnuImpressora_Click()
    Static FrecuenciaAbsoluta(1 To 10)
    Dim LLargPaper As Single, AltPaper
    Dim MidaDibuixX As Integer
    Dim MidaDibuixY As Integer
    Dim x1 As Integer, y1 As Integer
    Dim x2 As Integer, y2 As Integer
    Dim i As Integer
    Dim TotalAmpleBarra As Integer
    
    'Mida del paper Din A4 menys els marges
    LLargPaper = 210
    AltPaper = 297

    'Freqüències absolutes de les notes d'un nivell
    FrecuenciaAbsoluta(1) = 2
    FrecuenciaAbsoluta(2) = 5
    FrecuenciaAbsoluta(3) = 10
    FrecuenciaAbsoluta(4) = 15
    FrecuenciaAbsoluta(5) = 45
    FrecuenciaAbsoluta(6) = 48
    FrecuenciaAbsoluta(7) = 23
    FrecuenciaAbsoluta(8) = 15
    FrecuenciaAbsoluta(9) = 12
    FrecuenciaAbsoluta(10) = 4
    'Mides del dibuix que voleu fer
    MidaDibuixX = 150
    MidaDibuixY = 90

    'Establiu el sistema de coordenades i l'escala adient
    Printer.ScaleMode = 6
    x1 = -(LLargPaper / 2) + (MidaDibuixX / 2)
    y1 = (AltPaper / 2) + (MidaDibuixY / 2)
    x2 = (LLargPaper / 2) + (MidaDibuixX / 2)
    y2 = -(AltPaper / 2) + (MidaDibuixY / 2)
    Printer.Scale (x1, y1)-(x2, y2)


    'Dibuixa el quadre exterior
    Printer.FillStyle = 1 'Transparent
    Printer.Line (0, 0)-(MidaDibuixX, MidaDibuixY), , B

    'Dibuix de les barres i els números de l'eix x
    TotalAmpleBarra = MidaDibuixX / 10
    Printer.FillStyle = 7
    For i = 1 To 10
      x1 = 2 + (i - 1) * TotalAmpleBarra
      y1 = 0
      x2 = 12 + (i - 1) * TotalAmpleBarra
      y2 = FrecuenciaAbsoluta(i) * MidaDibuixY / 50
      Printer.Line (x1, y1)-(x2, y2), , B
      Printer.CurrentX = 2 + (i - 1) * 15
      Printer.CurrentY = -5
      Printer.Print i
    Next i
    'Dibuix de les línies de separació de l'eix Y
     For y1 = 10 To 40 Step 10
        Printer.Line (-2, y1 * MidaDibuixY / 50)-(2, y1 * MidaDibuixY / 50)
        Printer.CurrentX = -20
        Printer.CurrentY = y1 * MidaDibuixY / 50
        Printer.Print y1
     Next y1
     Printer.EndDoc
End Sub

Private Sub mnuPantalla_Click()
    Static FrecuenciaAbsoluta(1 To 10)
    Dim LLargPaper As Single, AltPaper
    Dim MidaDibuixX As Integer
    Dim MidaDibuixY As Integer
    Dim x1 As Integer, y1 As Integer
    Dim x2 As Integer, y2 As Integer
    Dim i As Integer
    Dim TotalAmpleBarra As Integer

    
    'Mida del paper Din A4 menys els marges
    LLargPaper = 210
    AltPaper = 297

    'Freqüències absolutes de les notes d'un nivell
    FrecuenciaAbsoluta(1) = 2
    FrecuenciaAbsoluta(2) = 5
    FrecuenciaAbsoluta(3) = 10
    FrecuenciaAbsoluta(4) = 15
    FrecuenciaAbsoluta(5) = 45
    FrecuenciaAbsoluta(6) = 48
    FrecuenciaAbsoluta(7) = 23
    FrecuenciaAbsoluta(8) = 15
    FrecuenciaAbsoluta(9) = 12
    FrecuenciaAbsoluta(10) = 4
    'Mides del dibuix que voleu fer
    MidaDibuixX = 150
    MidaDibuixY = 90

    'Establiu el sistema de coordenades i l'escala adient
    ScaleMode = 6
    x1 = -(LLargPaper / 2) + (MidaDibuixX / 2)
    y1 = (AltPaper / 2) + (MidaDibuixY / 2)
    x2 = (LLargPaper / 2) + (MidaDibuixX / 2)
    y2 = -(AltPaper / 2) + (MidaDibuixY / 2)
    Scale (x1, y1)-(x2, y2)


    'Dibuixa el quadre exterior
    FillStyle = 1 'Transparent
    Line (0, 0)-(MidaDibuixX, MidaDibuixY), , B

    'Dibuix de les barres i els números de l'eix x
    TotalAmpleBarra = MidaDibuixX / 10
    FillStyle = 7
    For i = 1 To 10
      x1 = 2 + (i - 1) * TotalAmpleBarra
      y1 = 0
      x2 = 12 + (i - 1) * TotalAmpleBarra
      y2 = FrecuenciaAbsoluta(i) * MidaDibuixY / 50
      Line (x1, y1)-(x2, y2), , B
      CurrentX = 2 + (i - 1) * 15
      CurrentY = -5
      Print i
    Next i
    'Dibuix de les línies de separació de l'eix Y
     For y1 = 10 To 40 Step 10
        Line (-2, y1 * MidaDibuixY / 50)-(2, y1 * MidaDibuixY / 50)
        CurrentX = -20
        CurrentY = y1 * MidaDibuixY / 50
        Print y1
     Next y1
End Sub