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

Fitxer: m3p5.frm

Definició dels objectes. Interfície d'usuari

Recordeu que això no ho podeu editar directament. Per fer-ho incorporeu nous objectes de la paleta en el vostre formulari. I per canviar els valors seleccioneu l'objecte i escolliu la propietat a canviar en la finestra Properties.

VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form frmMàgic 
   Caption         =   "Quadrats màgics 3*3"
   ClientHeight    =   4020
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   5685
   LinkTopic       =   "Form1"
   ScaleHeight     =   4020
   ScaleWidth      =   5685
   StartUpPosition =   3  'Windows Default
   Begin VB.TextBox txtNúmero 
      Height          =   375
      Left            =   3840
      TabIndex        =   1
      Top             =   240
      Width           =   735
   End
   Begin MSFlexGridLib.MSFlexGrid grdMàgic 
      Height          =   1815
      Left            =   1200
      TabIndex        =   0
      Top             =   1440
      Width           =   3375
      _ExtentX        =   5953
      _ExtentY        =   3201
      _Version        =   393216
      Rows            =   3
      Cols            =   3
      FixedRows       =   0
      FixedCols       =   0
      FocusRect       =   2
      ScrollBars      =   0
   End
   Begin VB.Label lblSumaFila 
      Height          =   375
      Index           =   2
      Left            =   4680
      TabIndex        =   10
      Top             =   2640
      Width           =   615
   End
   Begin VB.Label lblSumaFila 
      Height          =   375
      Index           =   1
      Left            =   4680
      TabIndex        =   9
      Top             =   2040
      Width           =   615
   End
   Begin VB.Label lblSumaCol 
      Height          =   375
      Index           =   2
      Left            =   3600
      TabIndex        =   8
      Top             =   3360
      Width           =   735
   End
   Begin VB.Label lblSumaCol 
      Height          =   375
      Index           =   1
      Left            =   2520
      TabIndex        =   7
      Top             =   3360
      Width           =   735
   End
   Begin VB.Label lblSumaDiagonal 
      Height          =   375
      Index           =   1
      Left            =   360
      TabIndex        =   6
      Top             =   3360
      Width           =   735
   End
   Begin VB.Label lblSumaDiagonal 
      Height          =   375
      Index           =   0
      Left            =   480
      TabIndex        =   5
      Top             =   1080
      Width           =   735
   End
   Begin VB.Label lblSumaCol 
      Height          =   375
      Index           =   0
      Left            =   1440
      TabIndex        =   4
      Top             =   3360
      Width           =   735
   End
   Begin VB.Label lblSumaFila 
      Height          =   375
      Index           =   0
      Left            =   4680
      TabIndex        =   3
      Top             =   1440
      Width           =   615
   End
   Begin VB.Label Label1 
      Caption         =   "Prem la casella on vols escriure un número i després l'escrius aquí mateix:"
      Height          =   615
      Left            =   1080
      TabIndex        =   2
      Top             =   240
      Width           =   2535
   End
End


Codi del programa. Programació de respostes a events

Attribute VB_Name = "frmMàgic"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Option Explicit

Private Sub Form_Load()
    IniciaQuadrícula
End Sub

Private Sub grdMàgic_Click()
    txtNúmero.Text = grdMàgic.Text
    txtNúmero.SetFocus
End Sub

Private Sub txtNúmero_Change()
    grdMàgic.Text = txtNúmero.Text
    CalculaValors
End Sub

Sub IniciaQuadrícula()
    Dim i As Integer
    
    grdMàgic.Rows = 3
    grdMàgic.Cols = 3
    grdMàgic.Width = 0
    For i = 0 To grdMàgic.Cols - 1
      grdMàgic.ColWidth(i) = 900
      grdMàgic.Width = grdMàgic.Width + grdMàgic.ColWidth(i)
    Next i
    grdMàgic.Width = grdMàgic.Width + 50
    grdMàgic.Height = 0
    For i = 0 To grdMàgic.Rows - 1
      grdMàgic.RowHeight(i) = 450
      grdMàgic.Height = grdMàgic.Height + grdMàgic.RowHeight(i)
    Next i
    grdMàgic.Height = grdMàgic.Height + 50
    grdMàgic.FixedRows = 0
    grdMàgic.FixedCols = 0
    grdMàgic.ScrollBars = 0
End Sub

Sub CalculaValors()
    Dim i As Integer
    Dim Fila As Integer, Columna As Integer
    ReDim SumaCol(3) As Integer
    ReDim SumaFila(3) As Integer
    ReDim SumaDiagonal(2) As Integer
    
    For i = 0 To 2
      SumaCol(i) = 0
      SumaFila(i) = 0
    Next i
    
    SumaDiagonal(0) = 0
    SumaDiagonal(1) = 0
    
    For i = 0 To 2
      SumaDiagonal(0) = SumaDiagonal(0) + Val(grdMàgic.TextMatrix(i, i))
    Next i
    lblSumaDiagonal(0) = Str(SumaDiagonal(0))
    
    For i = 0 To 2
      SumaDiagonal(1) = SumaDiagonal(1) + Val(grdMàgic.TextMatrix(i, 2 - i))
    Next i
    lblSumaDiagonal(1) = Str(SumaDiagonal(1))
    
    For Fila = 0 To 2
      For Columna = 0 To 2
        SumaFila(Fila) = SumaFila(Fila) + Val(grdMàgic.TextMatrix(Fila, Columna))
      Next Columna
      lblSumaFila(Fila) = Str(SumaFila(Fila))
    Next Fila
    
    For Columna = 0 To 2
      For Fila = 0 To 2
        SumaCol(Columna) = SumaCol(Columna) + Val(grdMàgic.TextMatrix(Fila, Columna))
      Next Fila
      lblSumaCol(Columna) = Str(SumaCol(Columna))
    Next Columna
End Sub