PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 3ENRERA
PRÀCTICA 1 2 3 4 5
 
Executar el programa m3p5.exe per conèixer el seu comportament.

Veure el llistat del codi del programa, m3p5.

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


Exercici per fer quadrats màgics (Grid)

Un quadrat màgic és un quadrat format per números en el qual la suma de les files és igual a la suma de les columnes i igual a la suma de les diagonals. Fareu un programa que permeti a l'usuari introduir les dades en les cel·les del quadrat, i simultàniament, calcularà la suma de files, columnes i diagonals. El formulari serà semblant al següent:


La figura mostrada a continuació indica quins valors corresponen a les caselles principals del formulari anterior.



Per fer la quadrícula, s'ha de fer servir un control, MSFlexGrid, que no es trova en la caixa d'eines habitual. Per la qual cosa quant creeu el nou projecte, en lloc de de fer un EXE estándar, feu un Controles de VB Edición Profesional:



Veureu que la caixa d'eines té molts més de controls. En control que ens interessa per fer la quadrícula és l'assenyalat amb el cercle vermell.



Fase de disseny de la interfície d’usuari

Heu de fer un programa que tingui una quadrícula (MSFlexGrid) pel quadrat màgic i una caixa de text per a la introducció de dades. Si voleu introduir dades en la cel·la (1,1) ho indicareu amb el ratolí (Clicant en ella), i en aquest moment les dades que ja hi havia es passaran al quadre de text. Quan l'usuari faci qualsevol canvi en el quadre de text ho reflectireu a la cel·la indicada. També fareu les sumes adients i les posareu en el lloc adient.

Objecte

Propietat

Valor

Formulari (1)

(Nombre)

frmMàgic

 

Caption

Quadrats màgics 3*3

Quadre de text (2)

(Nombre)

txtNúmero

 

Text

Quadrícula (MSFlexGrid) (3)

(Nombre)

grdMàgic

Vector de 3 Etiquetes (4)

(Nombre)

lblSumaFila

 

Caption

Vector de 3 Etiquetes (5)

(Nombre)

lblSumaCol

 

Caption

Vector de 2 Etiquetes (6)

(Nombre)

lblSumaDiagonal

 

Caption

Etiqueta (7)

Caption

Prem la casella on vols escriure un número i després l'escrius aquí mateix:



Nota: en aquest quadre s'especifiquen les propietats de l'element inicial de cada un dels vectors objectes utilitzats. Recordeu que heu de crear els elements de cada un dels objectes mitjançant els processos de còpia a la carpeta i d'enganxar al formulari segons s'ha especificat en les activitats anteriors.

L'element 0 del vector lblSumaDiagonal serà la suma dels elements de la diagonal principal i l'element 1 serà la dels elements de la diagonal secundària.


Fase de programació de respostes a events

Procediments associats a l'event Load

En primer lloc, quan es carrega en memòria el formulari es dóna forma a la quadrícula mitjançant el procediment IniciaQuadrícula, d'àmbit el formulari, mostrat més avall i definit en l'apartat general del formulari:
    Sub Form_Load () IniciaQuadrícula End Sub

Procediments d'event Click

Les respostes als events Click a sobre de la quadrícula i Change dins del quadre de text són:
    Sub grdMàgic_Click () txtNúmero.Text = grdMàgic.Text txtNúmero.SetFocus End Sub

Procediments associats a l'event Change
    Sub txtNúmero_Change () grdMàgic.Text = txtNúmero.Text CalculaValors End Sub

Procediments d'àmbit general a tot el formulari

El procediment següent inicialitza l'objecte Grid, especificant quin serà el seu aspecte.
Recordeu que no cal que escriviu aquest codi. Llegiu-lo, per tal de saber per a què serveix i com ho fa. A continuació, el podeu copiar a la carpeta i enganxar-lo en la finestra d'edició de Visual Basic.
    Sub IniciaQuadrícula() Dim i As Integer 'Poseu el número de files i de columnes grdMàgic.Rows = 3 grdMàgic.Cols = 3 grdMàgic.Width = 0 For i = 0 To grdMàgic.Cols - 1 'Poseu l'amplada de cadascuna de les columnes a 900 twips grdMàgic.ColWidth(i) = 900 'Calculeu l'amplada de la quadrícula: 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 'Poseu l'alçada de cadascuna de les files a 450 twips grdMàgic.RowHeight(i) = 450 'Calculeu l'alçada de la quadrícula: grdMàgic.Height = grdMàgic.Height + grdMàgic.RowHeight(i) Next i grdMàgic.Height = grdMàgic.Height + 50 'Cap fila i columna fixa. grdMàgic.FixedRows = 0 grdMàgic.FixedCols = 0 grdMàgic.ScrollBars = 0 End Sub

Tema: Dim Subtema: Redim


El procediment següent, d'àmbit general, calcula les sumes:
    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

Quan acabeu de preparar el programa podeu fer el següent quadrat màgic:



Ha de quedar una cosa així:





Exercicis

No n'hi ha.