

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