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
     
    'Mes curt
    Private Sub cmdEsborraLlista_Click()
        Dim Contestació As Integer
        Contestació = MsgBox("Voleu esborrar tots els elements de la llista?", vbExclamation + vbYesNo, "Atenció")
        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
 
Hosted by www.Geocities.ws

1