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

Veure el llistat del codi del programa, m2p2.

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


Càlcul d'una mitjana

Aquesta activitat consisteix a introduir una llista numèrica (alçades de persones) de forma que, una vegada introduïda, el programa dóna la mitjana dels valors introduïts. Un aspecte nou que apareix a l'activitat és la sentència While... que s'utilitza quan cal fer un número d'iteracions que depèn d'una condició que s'avalua. Aquest número d'iteracions no és fix. El formulari que heu de crear conté objectes ja tractats anteriorment i, a més, un objecte quadre de llista. Se semblarà finalment a:





Fase de disseny de la interfície d’usuari

Creeu un directori nou: C:\VBCurs\VBActivi\m2\p2 i un nou projecte, en aquest directori, que anomenareu m2p2. En ell, desareu tots els fitxers d'aquesta activitat. Establiu les propietats dels objectes que hi intervenen:

Objecte

Propietat

Valor

Formulari (1)

Caption

Gestió d'una llista

Quadre de llista (2)

(Nombre)

lstAlçades

Etiqueta1 (3)

Caption

Introdueix un valor

 

(Nombre)

lblInValor

Etiqueta 2 (4)

Caption

Lloc

 

(Nombre)

lblInLloc

Etiqueta 3 (5)

Caption

Número

 

(Nombre)

lblInNúmero

Caixa de text (6)

(Nombre)

txtValorIntroduït

 

Text

Caixa de text (7)

(Nombre)

txtMitjana

 

Enabled

False

 

Text

Caixa de text (8)

(Nombre)

txtNúmero

 

Enabled

False

 

Text

Caixa de text (9)

(Nombre)

txtLloc

 

Text

Botó de comd. (10)

Caption

&Inclou el valor a la llista

 

(Nombre)

cmdAfegeix

Botó de comd. (11)

Caption

E&sborra l'element senyalat

 

(Nombre)

cmdEsborraElement

Botó de comd (12)

Caption

&Esborra la llista

 

(Nombre)

cmdEsborraLlista

Botó de comd (13)

Caption

&Fi

 

(Nombre)

cmdFi

Botó de comd. (14)

Caption

&Calcula la mitjana

 

(Nombre)

cmdMitjana



L'objecte nou utilitzat en aquest projecte és el quadre de llista. Aquest objecte serveix per a emplenar-lo amb una llista de valors mitjançant els mètodes específics d'aquest objecte i que s'especifiquen més avall. En aquest programa la llista s'emplenarà amb els valors d'alçades de persones.

Tema: List Box Subtema: List Box Control


Fase de programació de respostes a events

Les propietats i mètodes que es modifiquen en la fase de programació són els següents:

Per a les propietats:

Propietat

Comentari

ListCount

ListIndex

 

List

lstAlçades.ListCount té el número d'elements de la llista lstAlçades.

Si teniu assenyalat a la llista un element, l'expressió lstAlçades.ListIndex té el valor de la posició d'aquest element a la llista. Comença aquesta posició pel lloc 0.

lstAlçades.List(4) té el valor entrat a la llista en el lloc cinquè car es comença a comptar pel 0.



També heu de fer ús de tres dels mètodes dels quals disposen els quadres de llista:

Mètode

Comentari

AddItem

RemoveItem

Clear

lstAlçades.AddItem "25" afegeix l'element 25 al final de la llista.

lstAlçades.RemoveItem 3: esborra l'element col·locat al lloc 3.

lstAlçades.Clear: esborra tota la llista. És una ordre molt expeditiva i heu de fer-ne ús amb cura.


Tema: Methods

Recordeu que un mètode és un procediment o funció que actua sobre un objecte en detectar-se un event per part del sistema o mitjançant una instrucció de programa.


Procediments associats a l'event Click

Botó AfegirElement

    Sub cmdAfegeix_Click () If txtValorIntroduït <> "" Then lstAlçades.AddItem txtValorIntroduït txtValorIntroduït.Text = "" End If End Sub

Botó EsborrarElement

    Sub cmdEsborraElement_Click () If lstAlçades.ListIndex >= 0 Then lstAlçades.RemoveItem lstAlçades.ListIndex End If End Sub

Botó EsborraLlista

    Sub cmdEsborraLlista _Click () Dim Contestació, RegDef As Integer Dim Missatge, Títol As String Missatge = "Voleu esborrar tots els elements de la llista?" RegDef = MB_ICONEXCLAMATION + MB_YESNO Títol = "Atenció" Contestació = MsgBox(Missatge, RegDef, Títol) If Contestació = IDYES Then lstAlçades.Clear End Sub

Botó Fi

    Sub cmdFi_Click () End End Sub


En aquests tres procediments d'event Click podeu observar que:

Per al botó AfegirElement, es fa servir el mètode AddItem. Anàlogament, per al botó EsborrarElement heu d'utilitzar el mètode RemoveItem.

El botó de comandament que esborra un element de la llista comprova també si n'hi ha algun element seleccionat en aquest moment comprovant que la propietat ListIndex és diferent de zero.

El codi associat al botó EsborrarLlista fa servir la funció MsgBox per demanar a l'usuari si realment vol esborrar tots els elements de la llista. En general, la funció MsgBox s'utilitza per presentar un missatge i demanar a l'usuari el seu acord, que realitza prement un botó.

Tema: MsgBox Subtema: MsgBox Functions, MsgBox Statement

Per al botó cmdMitjana:

El procediment que heu de crear i que serveix per calcular la mitjana dels valors introduïts a la llista és:

    Sub cmdMitjana_Click () Dim Total As Single Dim Actual As Integer total = 0 Actual = 0 Do While Actual < lstAlçades.ListCount total = total + Val(lstAlçades.List(Actual)) Actual = Actual + 1 Loop If lstAlçades.ListCount > 0 Then txtMitjana = Format(total / lstAlçades.ListCount, "0.00") End If End Sub

Aquest procediment incorpora la instrucció iterativa Do While que permet executar un nombre d'instruccions mentre es compleix una condició, especificada en el codi, o fins que es compleixi aquesta condició.

Tema: Do..Loop Subtema: Do..Loop Statement


Procediments associats a l'event KeyPress

Per tal d'aconseguir que també s'afegeixi una dada quan premeu RETORN podeu fer un procediment d'event KeyPress per a la caixa txtValorIntroduït. L'event KeyPress es dóna sempre que premeu una tecla i el valor del paràmetre KeyAscii que recull del sistema és el codi ASCII de la tecla premuda.

Caixa txtValorIntroduït

    Sub txtValorIntroduït_KeyPress (KeyAscii As Integer) If keyAscii = 13 Then cmdAfegeix_Click End Sub

Tema: KeyPress Subtema: KeyPress Event

Observeu la crida al procediment cmdAfegeix_Click

Procediments associats a l'event Change

Aquest event succeeix quan hi ha un canvi en el valor de l'objecte. Cada vegada que canvieu el valor de l'objecte txtLloc s'executarà el procediment següent:

Caixa txtLloc

    Sub txtLloc_Change () Dim Index As Integer Index = Val(txtLloc) If lstAlçades.ListCount > Index Then txtNúmero = lstAlçades.List(Val(txtLloc)) End If End Sub

Declaracions, procediments i funcions d'àmbit formulari

En aquest projecte només cal declarar, finalment, el valor de les constants MB_ICONEXCLAMATION, MB_YESNO, IDYES. Per això, cal que escriviu en la part general del formulari la instrucció:

    const MB_ICONEXCLAMATION=48,MB_YESNO=4, IDYES=6

Tema: MsgBox Subtema: MsgBox Function, MsgBox Statement

El Visual Basic incorpora el fitxer CONSTANTS.TXT que conté els noms i els valors de moltes de les constants que es poden utilitzar en els programes. Un exemple d'aquestes constants és el que heu observat en l'ajuda anterior.



Exercicis

Per enviar al professor tutor. (Directori C:\VBCurs\VBExerci\m2\p2 )

E1. En un formulari heu de crear un objecte del tipus quadre combinat i una caixa de text. El quadre combinat és una llista com la de l'activitat anterior però només es mostra un sol element de la llista. Afegeix "AddItem" a la llista els noms de vuit colors. Aquesta llista la inicialitzareu en obrir el formulari principal (event Load). Cada vegada que l'usuari tria un color ha d'aparèixer el nom a la caixa de text. Coneixerem el color triat a partir de la propietat text de l'objecte ComboBox.

La finestra principal del programa ha de quedar més o menys així:





Cal enviar els següents fitxers:
    Fitxer projecte m2p2e1.vbp
    Fitxer formulari m2p2e1.frm
    Fitxer executable m2p2e1.exe