Você está na página 1de 55

Captulo Primero

EntornodeTrabajodeVisualBasic

VisualBasicesunentornodedesarrollodiseadoparalacreacindeaplicacionesparalosentornosdetrabajo
MicrosoftWindows95,98yNT.
Estelenguajeaunalasposibilidadesdeunlenguajedealtonivelconlasherramientasdediseogrfico,locualnosd
accesoatodaslasfuncionesdelossistemasanteriormentecitados.
LoselementosdelentronodedesarrolodeVisualBasicson:

1. BarradeHerramientas:

Permiteunaccesorpidoaloscomandomsutilizados.

2. Diseadordeformularios:

Eslaventanaenlaquesediserlainterfazdelaaplicacin,enellasepuedenagregarcontrolesgrficoseimgenes.
Cadaformulariodeunaaplicacinaparecerensupropiaventana.

3. CuadrodeHerramientas:

Enelcuadrodeherramientaspodemosencontrarunconjuntodeherramientasquepermiteninsertarlosobjetoso
controlesenelformularioduranteentiempodediseo,losobjetosmscomunessonbotones(command),etiqueta
(label),cuadrosdeimagen(Picture),imgenes(Image),etc...
Sihacemosdobleclickconelratnsobrealgunodeellosseinsertarautomticamenteenlaventanadelformulario.

4. VentanadePropiedades:

Losobjetostieneasociadosunaspropiedadesquedescribensusatributos,valores,comportamientoyaparienciadel
objeto.
Lasopcionesdeestaventanason:
Listadesplegabledeobjetos:Dondepodremosvisualizarelnombredelosobjetosdelaaplicacin.

Listadepropiedadesdelobjetoseleccionado:Alseleccionarunobjetoconlalistadesplegable
anteriormentemencionadanosaparecernlaspropiedadesdelmismo(name,visible,appearence,borderstyle,
etc...).Enlalistadepropiedadessepuedenmodificarlaspropiedadesdelobjeto.Sepuedevisualizardedos
formar,porcategoraoalfabticamente.

5. VentanadeProyectos:

Contienelalistadelosarchivosqueformanpartedelaaplicacin:
Lostiposdearchivosquesepuedenincluirenunproyectoson:
ArchivodeProyecto:Eselquerealizaelseguimientodetodoslosficherosqueformanpartedelaaplicacin.Se
guardaenunficheroconlaextensin.VBP
ArchivodeRecursos:Aquseguardancadenasdetexto,mapasdebits,ydemsdatosquepuedanmodificarsesin
tenerquevolveramodificarelcdigo.Seguardanconunaextensin.RES
MdulodeFormulario:Contienecontrolesycdigo,slohayunoporformulario.SeguardanconextensinFRM
MdulodeClase:Sonsimilaresalosmdulosdeformulario.Seguardanconlaextensin.CLS
MduloEstndar:Slopuedencontenercdigo.Tienenunaextensin.BAS
ControlesActiveX:Controlesquesepuedenaadiralcuadrodeherramientaseincluirlosenunformulario.

6. VentanaEditordeCdigo:

Enestaventanaesdondeseincluyeelcdigodelaapliacin.Secrearunaventanadecdigoparacadaformularioo
mdulodelaaplicacin.
Parateneraccesoalaventanadeedici,laformamssencillaeshacerdobleclicksobreelformularioosobreel
objetoalcualquieraincluircdigo.

Captulo Segundo
ProgramacinenVisualBasic

1. EstructurasdeCdigo:
ElcdigoqueescribaenunproyectodeVisualBasicaparecersiempreenunmdulo.
Unmduloesunarchivodeproyecto,pudiendoserunmdulodeformulario,declaseodecaracter
generalcomovimosenelcaptuloanterior.
Encadamdulo,elcdigosedivideendossecciones:declaracionesyprocedimientos.
Losprocedimientossonunidadesdecdigocomopequeosprogramas,escritospararealizarfunciones
determinadas,conunpropsitobiendefinido.
Encualquiermdulo,elprogramadordisponedeunaseccinespecialllamadageneralenlasquese
sitanlasdeclaracionesyenlaquesepuedeincluirotrosprocedimientoscreadosporelprogramador.
Enelapartadodeclaracionessepuedeintroducirlasconstantes,variablesytiposdedatosquenecesiteen
suaplicacin.(Todosestosconceptosserntratadosalolargodelcurso).
Losprocedimientospuedentenerparmetros,especificadosentrepartentesisquelepermiten
comunicaralprocedimientoalgunainformacinquenecesiteoqueseaelpropioprocedimientoquien
devuelvaalgnvalor.
Enunmdulodeformularioelcdigoquesesitaserefieretantoadichoformulariocomoalrestode
objetosqueestndibujadosenl.Enestetipodemduloscabedestacarlosprocedimientosdeevento
queseencargandedarunarespuestaprogramadaaloseventosqueocurrenenlaaplicacin.
Sihasescritocdigoparaalgnprocedimientodeevento,steapareceennegritaenlalistade
procedimientodelaventanadecdigo.
Elcdigodecarctergeneraloquepuedecompartirenmsdeunproyecto,sesitaenunmdulo
general.Elcdigoqueapareceenestetipodemdulosnoserelacionaconunobjetodeterminado,sino
quetienecarctergeneral.Enlosmdulosgeneralesnosepuedenincluirprocedimientosdeeventocomo
enelcasodelosmdulosdeformulario.
Esconvenienteaadircomentariosalaslneasdecdigoqueescribas,deestaformapodrsentender
losprogramasaunquehagatiempoquelosescribistes.Paraaadiruncomentarioenunalneaseutilizael

carcter'(apstrofe).

2. ObjetosenVisualBasic:
UnobjetoenVisualBasicsecaracterizaportrescomponentes:propiedades,mtodosyeventos.
Laspropiedadessonaquellascaractersticasoatributosquepermitenestablecerelaspectodeunobjeto
comoelcolor,tamao,posicin,etc...Oelestadodelmismo:activo,maximizado,ect...Existen
propiedadesquesloestndisponiblesentiempodediseoyotrasquesloestndisponiblesentiempo
deejecucin.
Losmtodossonpequeosprogramasqueactansobreundeterminadoobjetoyqueestablecensu
comportamiento.Asunobjetopuedemoverse,ocultarse,etc...Puedesutilizarcualquiermtodoque
formepartedelobjeto.
Loseventossonlassituacionesqueseproducenyquenosinteresanidentificarparaestableceralgntipo
dederespuestaporpartedelobjeto.As,puedeshacerclicksobreundeterminadoobjeto,creandode
estaformauneventoreconocibleporelobjeto.Quesucedaalgoonocomorespuestaaesteevento
dependerdequehayasprogramadoalgunaaccinenelcorrespondienteprocedimientodeevento.

3. Establecerpropiedades:
Cuandoinsertasobjetosenunformulariotienesqueestableceralgunaspropiedadesquepresenta.Las
propiedadessonaquellascaracterticaspropiasdelobjetoquehacenquesedistingandeotroobjeto.
EnunaaplicacinWindowspodemosdistinguirdiversostiposdeventanas,aunquelonormalesidentificar
unaventanainicialquesepuedemaximizarominimizaryunoomscuadrosdedilogocuyotamao
sueleserfijo.Sinembargo,debesdartecuentaquelasbarrasdeherramientastambinsonventanasde
unaaplicacin.
Normalmentelaventanainicialodearranqueserlaquepresenteelmenprincipal,formadopormens
desplegablesenunoomsdeunnivel.Elrestodeventanasnodeberancontenermensdesplegables,
aunquepuededarseelcaso.
Algunaspropiedadesdelosformulariosquesepuedenestablecerentiempodediseoson:
BorderSytle:Estableceelestilodelbordedelformulario.
Caption:Estableceeltextoqueapareceenlabarradettulodelformulario.
ControlBox:PermitemostraronoelmendecontroldelasventanasdeWindows.
Enabled:Establecesielformulariopuederesponderonoaloseventosquegeneres.
Font:Establecelascaractersticasdelosobjetosdetextoquesesitenenelformulario.
Icon:Cambiaeliconoquerepresentaelformulario.
Left,Top,Height,Width:Establecenlaposicindelformularioenlapantallaascomolasdimensiones.
MaxButtonyMinButton:Establecesisepodrmaximizarominimizarelformulario.
MousePointer:Modificarelpunterodelratn.
Visible:Establecesielformulariosemostrarvisibleentiempodeejecucin.
WindowState:Estableceelmodoenquesecargainicialmenteelformulario,normal,maximizadoo
minimizado.

Todasestapropiedasestndisponiblesentiempodediseoatravsdelaventanadepropiedades.
Entiempodeejecucinsepuedecambiaroconsultarelvalordealgunaspropiedadesqueslotienen
sentidoeneltiempodedesarrollo.
NombreObjeto.NombrePropiedad.

4. Convenci&oacutenparanombrarobjetosdeVisualBasic:

OBJETO

OBJETOESPAOL

PREFIJO

Form

Formulario

frm

CheckBox

Casilladeverificacin

chk

ComboBox

Cuadrocombinado

cbo

Databoundcombobox Cuadrocombinadoenlazadoadatos

dbc

CommandButton

Botndecomando

cmd

Data

Controldedatos

dat

Directorylistbox

Cuadrolistadedirectorios

dir

DriveListBox

Cuadrolistadeunidades

drv

FileListBox

Cuadrolistadearchivos

fil

Frame

Marco

frm

Grid

Rejilla

grd

Databoundgrid

Rejillaenlazadaadatos

dbg

Horizontalscrollbar

Barradedesplazamientohorizontal

hsb

Image

Imagen

img

Label

Etiqueta

lbl

Line

Linea

lin

OLEContainer

ContenedorOLE

ole

PictureBox

Cuadrodeimagen

pic

Shape

Forma

shp

TextBox

Cuadrodetexto

txt

Timer

Temporizador

tmr

Verticalscrollbar

Barradedesplazamientovertical

vsb

5. UtilizarMtodos:

Unavezsehaestablecidolaparteestructuraldelformulario,sepasaaprogramarelcomportamiento
quedebeseguir,deformaquecumplaconelobjetivoparaelquedeseescrearlo,utilizandolosmtodos.
Unmtodoesuncomponentemsdedelobjeto,quepuedeserutilizadodirectamente.Paraellodebes
llamaralmtodoeindicarlesobrequobjetodeseasaplicarlo,quedeberadmitirlo.
Lasntaxisenestecasodebeser:NombreObjeto.NombreM&eacutetodo[par1,...,parn],dondela
listadeparmetros[par1...,parn]esopcionaldecadamtodo.
Unejemploes:
SiquieresmostrarunformulariollamadofrmPrimerolasntaxisser:frmPrimero.Show1
Elvalor1nosindicaqueaparecerdeformamodalysielvalores0aparecerdeformanomodal.

6. EntenderlosEventos:
ElconjuntodeeventosestpredefinidoenVisualBasicporlocualnopuedescrearnumevoeventospara
losobjetos.
Elconjuntodeeventoreconociblesporunobjetoestligadoconlosprocedimientosdeevento.Estos
procedimientossonunidadesdecdigoquelepermitenespecificarlarespuestaquedebedarunobjeto
antelaocurrenciadeuneventoquepuedereconocer.
Ladefinicindelprocedimientodeenventotienelasiguienteforma:
PrivateSubNombreObjeto_NombreEvento([Listadepar&aacutemetros])
instrucciones
EndSub.

Captulo Tercero
TrabajarconMens

1. Eleditordemens:
Alusarmensseevitaocuparmuchoespacioenlasventanas,yaqueestossloaparecencuandose
desplieganexplcitamente.Adems,sepuedencrearhastacinconivelesdemens,porloqueelnmero
decomandosyposibilidadesessuficientementeamplio.
EnVisualBasicsetrabajoconeleditordemensparacrear,establecerpropiedadesymodificarlos
menes.Paraaccederalbastaconpulsarelsiguientebotnenlabarradeherramientas:

Estebotnsloestaractivocuandoestabiertoelformulario,yaqueelmensiempreestasociadocon
undeterminadoformulario.
Eleditordemenspresentalassiguientespropiedadesquesepuedenaplicarsobrelosmens:
Caption:Representaestextoqueaparecerenelmen.
Name:Eselnombredelcontrol.Sepuedeanteponerelprefijomnumseltextodelttulodelmen.
Checked:Establecesidebeaparecerunamarcadeverificacinalaizquierdadeltextodelobjetodel
men.Lamarcalapuedesutilizarcuandodeseasinformardelaopcinqueestactivadaenunmomento
determinado.
Enabled:Indicasielobjetopodrrecibireventosdelusuario.SitieneelvalorFalseelelemento
apareceratenuadoenelmen.
Visible:Indicasielobjetodebemostrarseono,siseestableceestevaloraFalse,loselementossituados
aladerechaocupanellugardelelementonovisible.
WindowsList:Estableceelvalorquedeterminasiunobjetodemenmantieneunalistadelasventanas
MDIsecundariasdelformularioactual.

2. ElementosdelMen:

Utilizandolosbotonesdesangrasepuededeterminarelniveldelobjetomenquequierasseleccionar.
As,losttulosdemensesitanenelnivelsuperior,mostrndoseenlalistainferiordeleditordemens,
lomsalaizquierdaposible.
Enmuchasaplicacionessepuedenverunasbarrashorizontalesenlosmensdesplegablesquerealizanla
funcindedividirenseccionesdichosmens.Esteelementoesconocidocomounseparador,ysirve
parasepararaquelloscomandosdelmenquetenganunmotivoencomn.
Paracrearunseparador,bastaconintroducirunguin()enlapropiedadCaption.Nosepuedecrearun
elementoenunnivelinferiorinmediatamentedespusdeunseparador,esdecir,nopuedestenercomo
ttulodemenunseparador.

3. TeclasdeMtodoAbreviado:
Alintroducirelcarcter&elmenestcreandounatecladeaccesoadichoobjeto.Estateclase
representasubrayadaeneltextodemenyrespresentalatecladeltecladoqueelusuariopuedepulsar
paraejecutarlaaccin.Dichateclasecorrespondeconlaletraquesiguealcaracter&enlapropiedad
Captiondelobjetomen.
Sisetratadeunttulodementienesqueusarlatecladeaccesoencombinacinconlatelca[Alt.].Una
vezabiertounttulodemenydesplegadosuselementos,paraaccederrpidamenteaunodeellos,

puedesusarlatecladeaccesodirectamente.
Tienesquetenercuidadoennoutilizarlasmismasteclasdeaccesoparaelementosdeunmismonivelde
menyaqueentoncesnofuncionarn.
Eleditordementambinadmitelaincorporacindeteclasdemtodoabreviado.Lasabreviaturasdel
mensoncombinacionesdeteclasquesepuedenutilizarenlugardeelegirelelementodelmen
correspondiente.
ParacrearunateclademtodoabreviadotienesqueutilizarlapropiedadShortcut,alaquepuedes
accederalcrearelmendesdeeleditordemens.

4. EventosdelMen
Cuandoentiempodediseoseleccionamoslaopcindemendeunformularioqueestamoscreando,
VisualBasicmuestraelprocedimientodeeventoclickdedichoelementodelmen.
Enelcasodelttulodelmen,elprocedimientoclicktienecomoaccinpredeterminadalademostrarlos
elementosdemendelnivelinferior,porloquenosernecesariotenerqueprogramarestaaccin.Esto
tambinsepuedeaplicaraloselementosdeunmenquesonasuvezttulosdesubmens.
Emcasitodosloscasostienesqueutilizarunaopcindelmenparadescargarelformularioopara
finalizarlaaplicacin.Laopcindetextosalirsueleserelmsapropiado.
LainstruccinUnloaddescargadememoriaelformularioqueseespecifique.Sepuedeusardevarias
formas,porejemplosiestamosdentrodeunFormllamadofrmconsultapodremossalirdeldedos
formas:UnaesUnloadMeoUnloadfrmconsulta.

5. MensContextuales
Estosmensaparecencuandohacemosclickconelbotnsecundariodelratn,ysuelepresentar
opcionesquesecorrespondenconlasaccionesmsusualesdelaaplicacin.
Estemenpuedeaparecerencualquierventanadelaaplicacinadiferenciadelosmensanteriores.
Unmencontextualnoseasociaconundeterminadoobjetosituadoenelformulario,alserigualqueun
mendesplegableestasociadoaunformulario.
ParamostrarunmencontextualtienesqueusarelmtodoPopupMenudelformulariodondeloests
creando.Lasntaxiseslasiguiente:
[objeto].PopupMenuNombreMen[,indicadores[,x[,y[,boldcommand]]]]
dondeloscorchetesespecificanparmetrosopcionales.Sinoseespecificaelobjetosobreelquese
aplicaelmtodo,VisualBasicentenderqueessobreelformularioactual.

6. Opcionesdelmencontextual
Elhechodetenersiempreasociadounmencontextualconundeterminadoformulario,noimpidequeel

mencontextualaparezcacuandosepulsasobreunodeloscontrolessituadosenelformulario.Adems
puedesindicarlasubicacinexactadelmencontextual.
EnelejemploanteriordellamadaalPopuMenu,losindicadoresseencargandedefinirlaubicacin
respectoalascoordenadasXeYtambinintroducidasyelcomportamientodelmencontextual.
Losvaloresquepuedetomaresteparmetrorespectoalaposicindelmenson:
vbPopupMenuLeft.Align(valor0):valorpredeterminadoquenosindicaqueelladoizquierdodel
menvienedadoporelvalorX.
vbPopupMenuCenter.Align(valor4):EnestecasoelmencontextualsecentrarespectoaX.
vbPopupMenuRight.Align(valor8):ElladoderechodelmensesitaenX.
Losvaloresquepuedetomarrespectoalcomportamientoaseguirson:
vbPopupMenuLeftButton(valor0):Loselementosdelmencontextualsloreaccionanalosclickdel
ratncuandoseuseelbotnprimariodelratn.Esteeselvalorpredeterminado.
vbPopupMenuRightButton(valor2):Loselementosdelmencontextualreaccionanalosclickdel
ratncuandoseuseelbotnprimarioosecundario.

Captulo Cuarto
CuadrosdeDilogo

1. Introduccin
LamayoradelasaplicacionesWindowshacenusodeloscuadrosdedilogoparaestablecerlas
opcionesointroducirinformacinquenecesitanpararealizarunaaccinindicadaporelusuario.
Otrousoposibledeloscuadrosdedilogoespresentarinformacinalusuario.Loscuadrosdedilogo
secaracterizanporsermodalesynopermitirpodercambiareltamaodelaventana,ademsnodebern
tenerunabarrademensdesplegables.
EnVisualBasicpodemoscreartrestiposdecuadrosdedilogos:personalizados,predefinidosy
dilogocomn.

2. CuadrosPredefinidos
LasntaxiscompletadelafuncinMsgBoxes:
MsgBox(mensaje[,botones][,t&iacutetulo][,archivoAyuda,contexto])
Losvaloresquepuedentomarelparmetrobotonesson:

Constante

Valor

Descipcin

vbOKOnly

Muestrasloelbotnaceptar

vbOKCancel

Botonesaceptarycancelar

vbAbortRetryIgnore

Botonesanular,reintentareignorar

vbYesNoCancel

Botonessi,noycancelar

vbYesNo

Botonessiyno

vbRetryCancel

Botonesreintentarycancelar

vbCritical

16

Muestraeliconodemensajecrtico

vbQuestion

32

Iconodeinterrogacin

vbExclamation

48

Iconodeexclamacin

vbInformation

64

Iconodemensajedeinformacin

vbAplicationModal

Cuadrodedilogomodaldelaaplicacin

vbSystemModal

4096 Cuadrodedilogomodaldelsistema

Elparmetrobotonesesdevalornumrico,yademsdelosbotonesqueaparecenenlecuadrode
dilogo,tambinpuedeindicareliconoqueacompaealmensajeyeltipodedilogomodalquees.
Cuandouncuadrodedilogoesmodaldeaplicacientienesquecerrarloparainteractuarconotra
ventanadelamismaaplicacin.Cuandoesuncuadrodedilogomodaldelsistema,todaslas
aplicacionesqueestnejecutndosesesuspendenhastaqueelusuariorespondaalcuadrodedilogo.
ElcuadroInputBoxseconsigueatravsdelafuncinInputBox.Seutilizacuandosenecesitaqueel
usuariointroduzcaalgunainformacin.
Lasntaxiscorrectaes:
InputBox(mensaje[,t&iacutetulo][,est&aacutendar][,posx][,posy][,archivoAyuda,contexto])

3. ControlDi&aacutelogoComn
EnelobjetodilogocomnlopodemosencontrarenlabarradeherramientasdeVisualBasic:

Nospermitemostrarcincocuadrosdedilogoestndarenlasaplicaciones.Estoscuadrosdedilogo
son:
Abrir
GuardarComo
Imprimir
Fuente
Color
TambinpodemoshacerusodelcontroldilogoparallamaralmotordeAyudadeWindowsdeforma
quepuedapresentarelarchivodeayudaenlneadelaaplicacin.
Alcrearunobjetodilogocomn,sesitaenunaposicinyuntamaoestndar.
EnelcasodequereutilizarelcuadrodedilogocomnGuardarcomo:

DialogTitle:Eseltextoquedebeaparecerenlabarradettulodelcuadrodedilogo.
DefaultExt:Eslaextensinconlaqueseguardarelarchivo.
Filter:Indicalaextensindelosarchivosquedebenmostrarseenelcuadrodedilogo.
EnelcasodelapropiedadFiltersepuedeindicarquemuestremsdeuntipodearchivos.Paraestose
utilizalasntaxis:
ArchivosdeTexto|*.txt|Basededatos|*.mdb
Conelejemploanteriornosaparecerntodoslosarchivosdetexto(*.txt)ylosdebasededatos(*.mdb).

Losmtodosdisponiblesparaloscuadrosdedilogoson:
ShowOpen:Abrir.
ShowSave:Guardarcomo.
ShowColor:Cuadrodedilogocolor.
ShowFont:Tipodefuente.
ShowPrinter:Imprimir.
ShowHelp:LlamadaalaayudadeWindows
EjemplodellamadaalmotordeayudadeWindows:
WithCommonDialog1
.HelpFile="C:\Vb\vb.hlp"
.HelpCommand=cdlHelpContents
.ShowHelp
EndWith

Captulo Quinto

ControlesBsicos

1. Introduccin

AldisearunaaplicacinconVisualBasicloprimeroquedeberemoshaceresplanearlainterfaz,que
estconstituidaporelconjuntodeformulariosqueaparecenalolargodelaejecucindelaaplicacin.
Loscontrolessonloselementosgrficosqueaparecenenlosformulariosyquesirvenparaobtenerdatos
ypresentarlasalidaqueproducelaaplicacin.
EntrelosnumerososcontrolesquepresentaVisuaBasiccabendestacarlosbsicos,queaparecenen
casitodaslasaplicacionesdeVisualBasiccomoetiquetas,cuadrosdetexto,botonesdecomando,etc...
CadaunodeestoscontrolessontratadoscomobojetosenVisualBasic,porloquenotienesqueolvidar
quetienensupropioconjuntodepropiedades,mtodosyeventos.

2. EntradadeDatos


Doscontrolesmuyrelacionadosyqueseutilizanenlafuncindeentradadedatossonlasetiquetasylos
cuadrosdetexto.
Lasetiquetassoncontrolesquenospermitenmostrartextoenlosformulariosyquetienenla
particularidaddequeelusuarionopuedemodificar
Elcontroldeetiquetaes:

LoscuadrodetextosonelcontrolestndardeentradadedatosenVisualBasic.Permitenalusuariodela
aplicacinintroducirinformacin.
Elcontroldelcuadrodetextoes:

Algunaspropiedadesdelcontroletiquetason:

Propiedad

Definicin

Alignment Establecelaalineacindeltextodelaetiqueta
Autosize

SisuvaloresTrue,eltamaodelaetiquetaseadapta
automticamenteasucontenido

Caption

Textoquesevisualizaenlaetiqueta

Enabled

Permiteonointeractuarconlaetiqueta

Font

Establecelafuente,tamaoyaspectodeltexto

Loscuadrosdetextosonsemejantesalasetiquetas,peroconladiferenciaqueelusuariopuedemodificar
sucontenido.Eltextoqueseintroducepuedesertantonumricocomoalfanumrico(nmerosyletras).
Adiferenciadelaetiqueta,eltamaodeltextoesfijoalnopermitirlapropiedadautosize.
Algunaspropiedadesdelobjetocuadrodetextoson:

Propiedad

Definicin

Alignment

Alineaci&oacutendelainformacinintroducida.

Enabled

Permiteonoquesepuedanrealizaraccionessobreelcuadro
detexto

Font

Igualqueenelcasodelasetiquetas

Multiline

Permiteintroducirmsdeunalneadetextoenelcuadro

PasswordChar

Estableelcaracterquesemuestraalrealizarunaentradaen
elobjeto.Slosemostrardichocaracter

ScrollBars

Muestrabarrasdedesplazamiento

TabIndex

Estableceelordendetabulacinfijadoparaelobjeto

TabStop

Indicasialutilizareltabuladorsepuededesplazarentrelos
controlesdelformulario

Text

Textoquesevisualizaenelcontrol

3. Etiqueta+CuadrodeTexto

Enlasventanasdeentradadedatosesmuycomntenerlacombinacindeetiquetaycuadrodetexto,ya
queloscuadrosdetextonotienenlapropiedadCaptionquepermitecrearteclasdeacceso.
Cuandoquieraspermitirunaccesorpidoaciertocuadodetexto,elusodeunaetiquetaasociadaesla
formamssencilladehacerlo.Utilizaelcaracter&enlapropiedadCaptiondelaetiquetaasociadayse
crearlatecladeaccesoparaelcuadrodetexto.

4. ControlMarco

Seutilizaparaestructurarelformularioenvariassecciones,agrupandoenstasloscontrolesparaquela
lecturaseamssencilla.ElcontrolquetienesqueutilizarparaestoelelcontrolMarco(Frame):

LanicapropiedadinteresantedeuncontrolmarcoeslapropiedadCaption,queserefierealtextoque
sepresentaenlapartesuperiorizquierdadelcontrol.
Elcontrolmarcoactacomocontenedordeotroscontroles,asquelaspropiedasLeft,RightyTopdeun
objetocontenidoenunmarcoseestablecenenrelacinalobjetocontenedor.
Almoverunmarcotambinsemueveloscontrolesquecontenga,paraellodeberemoscrearprimeroel
marcoydespuesloscontrolesquequeremosquecontenga.

5. BotonesdeComando

Elbotndecomando(CommandButton),esmuysencillo,porloquenotienesqueestablecermuchas
propiedades.ConlapropiedadCaptionestablecemoseltextoqueaparecerenelbotn.Tambinse
puedencrearteclasdeaccesoalbotn.

Elusoprincipaldelosbotonesdecomandoesrealizaraccionesenlaaplicacin.Parapoderllevaracabo
lasaccionessobreunbotnpulsandonIntro,tienesquedejarsupropiedadDefaultaTrue.

6. BloquearlosControles

Cuandoestnsituadosloscontrolesenelformulariosepuedenbloquearparaquenopuedanmoversede
formaaccidental.
Paraestodeberemospulsarenlabarradeherramientas:

Cuandoactivesestebotnymientrasnodesbloquesloscontrolesutilizandolamismaopcinnose
podrnmoverningunodeloscontrolesdelformularioactivo.
Sinembargoensiabresotroformularioquenotengaloscontrolesbloqueadossisepodrnmover.Si
aadesmscontrolesaunformulariobloqueadoestosquedanbloqueadosautomticamente.

Captulo Sexto
ControlesBsicos(II)

1. Casillasdeverificacin
Nosdnlaoportunidaddepoderelegirentredistintasopciones.
Lascasillasdeverificacin(CheckBox),permitenestableceropcionesquenosonexcluyentesentres,es
decir,puedesseleccionarunaomsdeuna.

Unacasilladeverificacinpuedeestaractivada(cheked),odesactivada(unchecked).Ademslacasilla
puedeestaratenuada(grayed),quenosindicaqueelobjetonoestdisponible.Lapropiedadquetiene
estosvaloresesValue.
Eleventomsutilizadoenestetipodeobjetoseselmomentoenelquesepulsaenlacasilla.Enesta
situacinelusuarioquiereindicarquedeseaactivarodesactivarlacasilla,dependiendodelvalorque
tengaenesemomento.

2. BotonesdeOpcin
Losbotonesdeopcin(OptionButton),tambinpermitenpresentaropcionesalusuario,peroconla
particularidadqueslopuedesseleccionarunadecihasopcionesalmismotiempo.

Siquieresqueenunmismoformulariosepuedaseleccionarmsdeunbotndeopcin,tienesquecrear
distintosconjuntosdebotonesdeopcin.
ElbotndeopcinslopuedetenerdosvaloresenlapropiedadValue(TrueyFalse),truesiest

activadoyfalsesiestdesactivado.
Esimportanteutilizarlosbotonesdeopcinslocuandocuandoelnmerodeopcionesposiblesseafijo
alolargodelavidadelaaplicacin.Encasocontrario,lainclusindeunaopcinomodificacinde
algunadelasexixtentespodraimplicarlamodificacindepartesdelaaplicacinquetrabajencondichas
opciones,loqueresultapocodeseable.

3. CuadrodeLista
Otraformadepresentarlasopcionesesatravsdeunalistadondesesitandichasopciones.
Deformapredeterminada,lasopcionesquecontieneuncuadrodelista(ListBox),sepresentan
verticalmenteenunacolumna,aunquetambinpuedeestablecersemsdeunacolumna.

Entrelaspropiedadesdelcuadrodelistacabendestacar:
ListIndex:Indicaelndicedeelementosseleccionado.Elprimerelementodelalistatienequetenervalor
0.
ListCount:Indicaelnmerodeelementosexistentesenlalistaentodomomento.
Todasestaspropiedadessonutilizadasentiempodeejecucincuandoseinteractaconlalista.Para
indicarquelalistaestordenadaseutilizalapropiedadSorted,conelvalortrue.
Alahoradeagregarelementosalalistaesnecesarioutilizarunmtetododesta.ElmtodoAdItemse
encargadeesto.
ParaborrarelementosdelalistautilizaremoselmtodoRemoveItem.

Captulo Sptimo
FundamentosdeProgramacin
1. Variables
Unavariableesunaubiacintemporaldememoriadondesealmacenandatosqueinteresanretener
durantelaejecucindelaaplicacin.
Lasvariablespuedencontenertexto,valoresnumricos,fechasopropiedadesdeciertoobjeto.Esuna
formadedarnombreaunaporcindedatosconlaquedeseamostrabajarennuestroprograma.
Lasvariablessecaracterizanporunnombrequelasidentificayporuntipodedatos,queestableceel
conjuntodevaloresposiblesquepuedenconteneryoperacionesenlasquepuedeparticipar.Elvalorde
unavariablepuedecambiaralolargodelavidaddesta.
Esnecesariodeclararlasvariablesparapoderutilizarlasenelprograma.EnVisualBasicnoesobligatorio
perosirecomendable.
Aldeclararunavariablesereservamemoriaparaellayseindicaquvalorespuedeconteneratravsde
sutipodedatos.
Paraestablecerladeclaracindeunavariableantesdeserutilizadaenelcdigo,puedeshacerloenla
fichaentornodelcuadrodedilogoopciones.
AlactivarlacasillaDeclaracindelasvariablesrequerida,VisualBasicintroducelainstruccin
OptionExplicitenlaseccindedeclaracionesdecadamdulonuevoquesecree,nodelosya
existentesdondetienesqueintroducirlosmanualmente.Estainstruccinobligaadeclararlasvariables
antesdeutilizarlas,loqueesmuyrecomendable.
Elusodelasvariablespuedehacerquelaaplicacinseamsrpida,porejemplo,siusasmuchasveces
undeterminadovalor,esaconsejableguardarloenunavariableyutilizarlacuandosenecesitequetener
quevolveraescribircdigocadavezquequierasllamarla.Esmsrpidoelaccesoalasvariablesquea
unapropiedaddeunobjeto,porloquetambinesaconsejableguardarelvalordeunapropiedadenuna
variable.
Veamosunejemplo:
DimVariable

Variable=txtEntrada.Text
txtSalida.Text=Variable
LaformadedeclaraunavariableesatravsdelainstruccinDim.Enlalneasedeclaralavariablede
nombreVariableyalmismotiempoVisualBasicguardaespacioenmemoriaparapoderutilizarla.
Enlasegundalneayaseutilizalavariable.Enestecasosirveparaguardarelvalorqueexisteenun
cuadrodetextollamadotxtEntrada(representadoporlapropiedadText).
Enlaterceralneasehacejustolocontario,seutilizalavariableVariableparaestablecerelvalordela
propiedadTextdelcuadodetextotxtSalida.
Siaadimoslassiguienteslneasdecdigo:
Variable=125
txtN&uacutemero.Text=Variable
Hemosestablecidounavariabledevalornumrico.Sinembargoenlasanterioreslneassehaba
establecidounvalordetextoyaquelapropiedadTextesdeesetipodedatos.
EnlaltimalneasevuelveautilizarlavariablecomoorigendelapropiedadTextdelcuadrodetexto
txtNmero.

2. Tiposdedatos
Eltipodedatosdeunavariableestableceelnmerodevaloresquestapuedetener,ascomoel
conjuntodeoperacionesenlasquepuedetomarpartecomooperando.
EnVisualBasicdichotipodedatosseespecificaaldeclararlavariabledeformaqueseguardaespacio
enmemoriaparapoderalamacenarlosvaloresdedichotipodedatos.
Esimportanteindicareltipodedatosyaquenotodostienenlamismarepresentacinenmemoria,
ocupandodistintoespaciofsico.
VisualBasicdeformapredeterminada,anoserqueseindiqueeltipodedatos,estableceeltipoVariant
paratodaslasvariables.As,alutilizarunaintruccincomoDimNombreVarialbe,seespecifica
implcitamenteeltipoVariantparadichavariable.
EltipoVariantesuntipoespecialdedatosquepuedecontenercualquierclasededatosexceptocadenas
delongitudfijaytiposdefinidosporelusuario.Alutilizarvariablesdeestetipo,nohayquepreocuparse
deefectuarconversionesentretiposparautilizarlasendistintoscontextos.
LasvariablesdetipoVariantsonmuyflexibles,peroocupanmuchamemoriaydisminucindela
velocidad.
Vamosaverlossiguientestiposdevariables:

Tipodedatos

Tamao

Entero(Integer)

2bytes

EnteroLargo(Long)

4bytes

Simple(Single)

4bytes

Doble(Double)

8bytes

Moneda(Currency)

8bytes

Cadenadecaracteres(String)

1byteporcaracter

Byte

1byte

Boleano(Boolean)

2bytes

Fecha(Date)

8bytes

Objecto(Object)

4bytes

Variant

16bytes+1byteporcadacaracter

Paradeclararlasvariablesdebesdeusarsunombreeningls.

3. Constantes
Cuandounvalorserepitefrecuentementeesinteresanteguardarloenunavariable.
Lasconstantessonsemejantesalasvariables,perosuvalornopuedecambiaralolargodelaaplicacin.
Parautilizarunaconstantehayquedeclararlapreviamente.Laformadedeclararlaesatravsdedela
instruccin:ConstNombreConstante=Expresin,dondelaexpresinserunvalorliteraloun
conjuntodepalabrasqueseevalenaunvalorvlido.

4. OperadoresdeVisualBasic
EnVisualBasicexisteungrannmerodeoperadoresquesepuedenutilizarparacrearfrmulas.
LosoperadoresmsutilizadosenunaaplicacindeVisualBasicsonlossiguientes:

Operador

Operacinquerealiza

Suma/Concatenacindecadenasdecaracteres

Resta

Multiplicacin

Divisin

Divisinentera

Mod

Restodeladivisinentera

Exponenciacin

&

Concatenacindecadenadecaracteres

Captulo Octavo
FundamentosdeProgramacinII
1. FundamentosdeProgramacin(II)
VisualBasicincorporaestructurasdecontrolquepermitencontrolarelflujodelaejecucindeun
programa.
Sinoexistenestaestructureselcdigoseejecutardearribahaciaabajoydederechaaizquierdasegn
lohayasescrito.
Entrelasestructurasdecontrolcabecitarlasestructurasdedecisinylasestructurasderepeticin.
LainstruccinIfThenElse,eslaestructuraclsicadedecisinypresentalasiguientesntaxis:
Ifcondici&oacuten1Then
[instrucciones]
[ElseIfcondicin2Then
[instrucciones]]
...
[Else
[instruccionesN]
EndIf
Dondeloscorchetesrepresentanpartesopcionalesdelaintruccin.Ademsesposiblequeexistanms
deunaclusulaElseIfenlamismainstruccinIfThenElse,porellolospuntossuspensivos.
Silacondicin1secumple,entoncesseejecutarelbloquedeinstrucciones1,encasocontrariose
ejecutarelbloquedeinstrucciones(2...N1)delaprimeraclusulaElseIfcondicinsecumpla.Si
finalmentenosecumpleningunadelascondicionesseejecutaraelbloquedeinstruccionesN
correspondientealaclusulaElse.
Lacondicinesunaexpresin,esdecir,unconjuntodepalabrasqueseevalanaverdaderoofalsosin
posibilidaddepodertenerotrovalor.Sedicequeunacondicinsecumplecuandoseevalaaverdadero
yquefracasaencasocontrario.Lascondicionestambinseconocencomoexpresioneslgicas.

Vamosaverunejemplo:

Elcdigosera:
Dimmoneda
moneda=lstMoneda.ListIndex
Ifmoneda=0Then
MsgBox"Peseta"
ElseIfmoneda=1Then
MsgBox"D&oacutelar"
ElseIfmoneda=2Then
MsgBox"Franco"
EndIf
Seutilizaunavariableparaestablecerelvalordeunapropiedadqueindicaquelaopcindelcuadrode
listalstMonedaestseleccionado.
Unavezconocidalaopcinseleccionada,deberemossacarelmensajeadecuado,paraellonecesitamos
unaestructuradedecisin.
LaintruccindelaclusulaElse,sloseejecutacuandoelrestodecondicioneshanfracasado.
Cualquieradelosbloquesdeinstruccinpuedecontenerunnmeroarbitrariodeinstrucciones,incluidala
posibilidaddequeexistanotrasinstruccionesIfThenElse.
Cuandoexisteungrannmerodeinstruccionesaevaluaresaconsejableutilizarotraestructurade
decisin,comopuedeserlasinstruccinSelectCase.
Estainstruccinnodmspotenciaallenguaje,perohacequeelcdigoseamslegibleyeficiente.La
sntaxisdelainstruccinSelectCasees:
SelectCaseexpresi&oacutenDeComparaci&oacuten
[CaselistaExpresiones]
[intrucciones]
...
CaseElse
[intruccionesN]
EndSelect

VolvamosalejemploanteriorperoconlainstruccinSelectCase:
SelectCasemoneda
Case0
MsgBox"Pesetas"
Case1
MsgBox"D&oacutelar"
Case2
MsgBox"Franco"
EndSelect
Adems,lalistadeexpresionesdecadaclusulaCasepuedesermuchomscomplicada,refirindosea
msdeunvalororangodevalores:
Case1To9valoresdesdeel1hasta3l9
Case1,2,3valores1,2y3
Case1,2,5To12valores1,2ydesdeel5hastael12

2. ExpresionesLgicas
VisualBasicincorporaunaseriedeoperadoresdecomparacinquenossontilesalahorade
establecercondiciones.
=......Iguala
<>....Distintoa
<.....Menorque
>.....Mayorque
<=....Menoroigualque
>=....Mayoroigualque
Ademsexistenlosllamadosoperadoreslgicos,quenospermitenestablecercondicionesque
dependadandemsdeuncriteriodeseleccin.
Todoslosoperadoreshacenquelaexpresinenlaqueseencuentrenseevalaaverdaderoofalso,sin
posibilidaddecualquierotrovalor.
Estasexpresionesson:
And:exp1Andexp2,dondeseevalaaverdaderos&oacuteloenelcasoqueelexp1comoexp2se
evalenaverdadero.Encualquierotrocasoseevalaafalso.
Or:exp1Orexp2,dondeseevalaaverdaderocuandoalgunadelasexpresionesexp1oexp2seevala
averdadero.
Not:Notexp1.aquseevalaaverdaderosiexp1esfalsoyseevalaafalsosiexp1esverdadero.
Xor:exp1Xorexp2,seevalaaverdaderosloenelcasodequeunayslounadelasexpresiones
exp1oexp2seevalaaverdadero.
3. MatizdeControles

Unarrayomatrizdecontrolesesungrupodecontrolesquecompartenelmismonombre,tipoy
conjuntodeprocedimientosdeevento.
Elnmerodecontrolesquepuedecontenerunarrayesindeterminadoydependedelosrecursosy
memoria.
Lamatrizdecontrolessecreaentiempodediseoaunqueentiempodeejecucinsepuedenagregar
mscontrolesalamatriz.
Paracrearunamatrizdecontroles,tienesquecreardoscontrolesdelmismonombre,VisualBasic
reconoceestsituacinypreguntarsiquierescrearunamatrizdecontroles.
Cuandosecreaunamatrizdecontrolespuedesseguirtrabajandoconcadaunodeloscontrolesdeforma
individual.ParareferirteauncontrolenparticulartienesqueutilizarlapropiedadIndexdedichocontrol.
Lapropiedadseestablececonelvalor0paraelprimercontrolysevaincrementandoamedidaquese
vancreandolosnuevoscontroles.
SiquierescrearnuevoscontrolesentiempodeejecucintienesqueutilizarlainstruccinLoad.La
sntaxisserlasiguiente:
Loadobjeto(ndice)
Dondeelobjetoserefierealnombredelcontroloriginalquediopasoalcontroldelamatrizendiceesel
lugarqueocuparenlamatriz.
Delamismaformasepuedeeliminaruncontrolentiempodeejecucin,peroestavezusandola
instruccinUnlaod.
4. EstructurasdeRepeticin

Otrotipodeestructurasquepuedenmodificarlaejecucindeunprogramasonlasestructurasde
repeticinobucles.Estasestructurassirvenpararepetirunayotravezunconjuntodeinstrucciones.
Existirndostiposdeestructurasderepeticin:aquellasenlasqueseconoceelnmeroderepeticionesy
aquellasenquedichonmeroseestablecedurantelaejecucin.
LaestructuraderepeticinFor...Nextesadecuadacuandoconocemoselnmerodevecesquedebe
repetirseunconjuntodeinstruccionesydeseamosreducirlacantidaddecdigoescrito.
Lasntaxiseslasiguiente:
Forcontador=principioTofin[Strepincremento]
[instrucciones]
[ExitFor]
[Instrucciones]
Next[contador]
Dondeelcontadoreselnombredeunavariablequesirvecomocontadordelasvecesquesetieneque
ejecutarelbucle.Adichavariableseleasignaunvalorincialyunvalorfinalenelqueunavezsuperadoel
buclenovuelvearepetirse.
Enelcuerpodelbucleestarnlasinstruccionesquedebenejecutarseexistiendolaposibilidadde

introducirExitForparasalirdelbucle.
OtraestructuraderepeticinesDo...Loop.Estaestructuraseutilizacuandodesconocemoscuntas
vecessehadeejecutarelbucle.
Lasntaxises:
Do[While|Until]condicin
[instrucciones]
[ExitDo]
[intrucciones]
Loop
SiutilizamosWhileelbucleserepitemientraslacondicinsecumplaysiutilizamosUntilelbuclese
repetirhastaquelacondicindvalorverdadero.
ConWhile,lacondicinescomprobadaalprincipiodelbucle,porloquesinosecumplealiniciarse,el
cuerpodelbuclenoseejecutar.ConUntilsecompruebaalasalidadelbucle,porloqueporlomenos,
unavezseejecutarelbucle.

Captulo Noveno
FundamentosdeProgramacinIII
1. TiposdeProcedimientos

EnVisualBasicexistentrestiposdeprocedimientos:Sub,FunctionyProperty
LosprocedimientosFunctionsedistinguendelosSubporquesiempredevuelvenunvalorasociadoal
nombredelprocedimiento.Estevalorpuedeserusadoporelcdigoquelohallamado.
LosprocedimientosPropertyseivenparacrearymanipularpropiedadespersonalizadasdelosobjetos.
2. CrearprocedimientosSub

Paracrearunprocedimientotienesdosalternativas,unautilizarlaopcinProcedimientodelmenInsertar
oescribirlocompletamenteenlaventanadecdigo.
EnladefinicindeunprocedimientoSubpuedesdiferenciardospartes:lacabecerauelcuerpodel
procedimiento.
Lacabeceradelprocedimientoseindicaelmbito(siespblicooprivado)delmismo,sutipo(mediante
lapalabraSub),sunombreylalistadeparmetros(entreparntesis).
Lalistadeparmetrossirveparapodercomunicarelprocedimientoconelrestodecdigodela
aplicacin.Paraelloseutilizaunparmetroqueindiquedealgunaformadichacircunstancia.Un
parmetrosecomportacomounavariableenelcuerpodelprocedimiento,pudiendosimplementeutilizar
suvaloroinlcusomodificarlo.
Cuandounprocedimientoquierecomunicaralgndatoalaaplicacin,tienequeutilizarunparmetropara
ello,esdecir,puedeservirbienparacomunicarunvaloralprocedimientoobienparaquestelo
comuniquealaaplicacin.
3. LlamaralprocedimientoSub

Parallamaraunprocedimientosublopodemoshacerdedosformas:
CallNombreSub(parmetros)
Otambin:
NombreSubparmetros
Losargumentosdebencoincidirenlallamadaennmeroytipoconladefinicindelprocedimiento.Tanto
siseespecificaenlallamadaunnmerodistintodeargumentoscomosialgunodestosnopueden
convertirsealtipodeclaradoenladefinicindelprocedimiento,secrearunerrordecompilacin.
Lallamadaalprocedimientosercomounainstruccinmsdellenguaje,dondeseespecificaelnombre
delprocedimientoseguidosinparntesis,deunalneadeargumentosquedebercoincidirennmeroy
tipoconlosparmetrosdeladefinicinyquedarnvaloralosparmetrosparaqueseejecuteelcuerpo
delprocedimiento.
UnavezsellegaalainstruccinEndSubdelprocedimientoelfujodeejecucinvuelvealalneasiguiente
alaqueocasionlallamada.
4. CrearprocedimientosFunction

ElconceptodeprocedimientoesvlidoparaunprocedimientoFunction,peroladiferenciaconlos
procedimientosSubsiempretienequedevolverunvalorasociadoalnombredelmismo.
Enelcuerpodelprocedimientoaparecerunaasignacindelvaloradevolverconelnombredel
procedimiento.ElusodelosprocedimientosFunctionsueleestarmsrestringidoqueeldelos
procedimientosSub.
UnprocedimientoFunctionesutilizadocuandonecesitamosobtenerunnicovalor,resultadodeun
clculoopocesoarealizar.Unprocedimientodeestetiponodeberarealizarmsdeloqueselepide,ni
mostrarmensajes,nidevolvermsvaloresenlosparmetros,etc.
LadiferenciaenladefinicindeunprocedimientoSubyunFunctioncomienzaenlacabecera.El
procedimientoFunctiontambinpuedecontenerunalistadeparmetros,nodebeaparecerningunoque
servaparadevolverelvalorquesecalcula,yaquedichovalortienequeasociarseconelmismonombre
delprocedimientoFunction.
Adems,altenerquedevolverunvalorasociadoalnombredelprocedimientoFunction,elprocedimiento
tienequeteneruntipodedatos.EstoseespecificaindicanolaclusulaASTipoalfinaldelacabeceradel
procedimientos,unavezindicadalalistadeparmetros.Sinoseespecificaningntipodedatos,seaplica
lamismareglaqueconlasvariables,esdecir,tendreltipoVariant.
5. LlamaralprocedimientoFunction

AscomolallamadaalprocedimientoSubescomounainstruccinmsdellenguaje,lallamadaal
procedimientoFunctionsueleestarsituadacomopartedeunaexpresinynocomounalnea
independientedesucdigo.
YaqueelprocedimientoFunctiondevuelveunvalorasociadoasunombre,estevalorsueleasignarsea

algunavariableparapoderutilizarloenelcdigoqueharealizadolallamada.
Lasntaxisserlasiguiente:
NombreVarialbe=NombreFunction(ListaParmetros)
SiquieresutilizarelvalorquedevuelveelprocedimientoFunction,tienesqueencerrarlalistade
argumentos,enlallamada,conparntesis.EstonoeraasenelcasodelprocedimientoSub.
VisualBasicincorporaungrannmerodefuncionesquepuedesutilizarentusaplicaciones,entreellas
cabedestacarMsgBox,InputBox,Date...
6. PasodeParmetros

AlahoradeescribirladefinicindeunprocedimientoSuboFunctionpuedesespecificarcmosepasan
losparmetrosdesulistadeparmetros:porvaloroporreferencia
Cuandoelpasoesporvalor,seutilizalapalabraclaveByValantecediendoalnombredelparmetroen
ladefinicindelprocedimiento.Enestecasoelprocedimientorecibeunacopiadelargumentoutilizadoen
lallamadaynoelmismoargumento.Sirealizascambiosensuvalor,estoscambiospodrnserutilizados
enelinteriordelprocedimiento,peronoafectarparanadaalavariablequeactacomoargumentoenla
llamada.
Enelpasoporreferencianosenecesitaespecificarningunapalabraclave,aunquetambinpuedeshacerlo
conlapalabraByRef.
Enelpasoporreferencia,elprocedimientoestarmanejandolospropiosargumentosutilizadosenla
llamada,yaquerecibeladirecinynoelvalordeestos.Enestecasocualquiermodificacinenelvalor
queserealiceenelinteriordelprocedimientosersufridoporlapropiavariablequeactecomo
argumentodellamada.
7. AmbitodeAccin

Cuandounproyectoestconstituidopordistintosmdulos,yaseandeformulario,claseomdulos
generalesdeVisualBasic,esimportantedelimitardndesepuedenutilizarydndeno,los
procedimientos,variablesyconstantesquetengasdefinidosodeclaradas.
Elniveldeocultacinesestablecidoporelprogramadoraldeclararlasvariablesyconstantesoaldefinir
procedimientosutilizandolaspalabrasPulbicyPrivate.
UnadeclaracindevariablesdetipoPublicNombreVariableAsTipo,indicaquedichavariablepuede
serutilizadatantoenelmdulodondeserealizacomoenelrestodemdulosdelaaplicacin.
SiladeclaracinfueradeltipoPrivateNombreVariableAsTipo,dichavariableslopodrser
conocidayportantoutilizada,enelmismomdulodondesedeclara.
ElusodePublicyPrivatetambinseaplicaaladeclaracindeprocedimientos.
Uncasoespecialescuandosedeclaraunavariabledentrodeunprocedimiento,enestoscasos,dichas
variablesslopuedenserconocidasporelpropioprocedimiento,porloquenoesvlidaladeclaracin
Publicdeestas.
Adems,siexisteconflictodenombre,alhaberdeclaradodosvariablesconelmismonombre,unaanivel
demduloyotraaniveldeprocedimiento,siempretienepreferencialamslocal,esdecir,ladeclaradaa

niveldeprocedimiento.
AlutilizarDimenladeclaracindelasvariables,enlugardePrivateoPublic,lavisibilidaddedichas
variableseslaquedebantenerpordefecto:aniveldemduloestvisibleparatodoslosprocedimientos
yaniveldeprocedimientosloparaste.

Captulo Dcimo
EfectosGrficos
1. ControlLine

Laincorporacindeelementosgrficosalasaplicacioneshacenquetengaunainterfazmsamigablepara
elusuario.
VisualBasicincorporaunaseriedecontrolesgrficosquepermitenlaincorporacindeelementosdeeste
tipoatusformularios.
ParaagregarlneasalosformulariosutilizaremoselcontrolLine:

Estecontroltienepocaspropiedades,sepuedeestablecerelgrosor,mediantelapropiedadBorderWidth
oelcolormedianteBorderColor.Tambinsepuedecambiarelestilodelalneaconlapropiedad
BorderStyle.
2. ControlShape

ConelcontrolShape(Forma),podemosdibujardistintasfigurascomocrculos,rectgulos,valos...
ParaagregarfigurasalosformulariosutilizaremoselcontrolShape:

LaaparienciainicialdeunobjetoShapeessiempreunrectgulo.Dichacaractersticaseestablecea
travsdelapropiedadShape.
Otrapropiedadinteresantedeestecontroleselrellenodelasfigurasqueestableceremosconla
propiedadFillStyle.

Tambin,mediantelapropiedadFillColorpodrsestablecerelcolordedichorelleno,elcolordelos
bordesconBorderColor.
3. Arrastrarconelratn

VisualBasicpermitequeelprogramadorindiquecundoycmouncontrolpuedeserarrastradoconel
ratnporlaventanaenlaqueseencuentra.
Loscontrolessituadosenlaventanapodrndarsecuentaqueundeterminadocontrolpuedeestsiendo
arrastradoporencimadeellos,permitindolesresponderdelaformaadecuada.
Siquierespermitirqueelusuariodelaaplicacinpuedaarrastraruncontrolentiempodeejecucin
puedeshacerlodedosformas:realizarunarrastreautomticoocontrolarcundodebeempezardicho
arrastre.EstosecontrolamediantelapropiedadDragModedelobjetoquequieresarrastrar.
Estapropiedadtienedosvalores:manualyautomtico.Enelprimercasotienesquecontrolarcundo
debepermitirsearrastrarelcontrol.Normalmenteestodependedealgunacircunstanciaqueser
comprobadacuandosepulseendichocontrol,esdecir,eneleventoMouseDown.
SiDragModeseestableceaautomticoelusuarioprodrarrastrarelcontrolsinnecesidaddequehaya
queprogramarnadams.Enestecasosepierdeelcontrolsobreelarrastre,peroesmuchomssencillo
deprogramar.
Otracircunstanciaquehayquetenerencuentaalahoradearrastrarunobjetoeselaspectoquetendrel
punterodelratncuandolohaga.SinoseespecificanadaenlapropiedadDragIcon,VisualBasic
muestrauniconocomopunterodelratn,queeselcontornodelobjetoarrastrado.Normalmentete
interesarmostraruniconodistintoindicandolaaccindearrastrarelobjeto.
DragModeyDragIconsonlasdospropiedadesquetienesquetenerencuentaalahoradepermitirel
arrastredeobjetosenlaaplicacin.TambinhayquetenerencuentaeleventoDragOver,sucedecuando
elusuarioarrastraunobjetoporencimadeotro,enesteltimo,esdecireldestino,elquereconoceel
evetoDragOver.ElprocedimientodeeventoDragOvertrabajaconcuatroparmetros:SourceX,Yy
State.ElparmetroSourcerepresentaelcontrolqueestsiendoarrastrado,siendoXeYlaposicin
exactaenlaqueseencuentra.
ElparmetroStateindicasielmovimientodelratn,alrealizarelarrastre,esparaentrarenelobjeto
destinooparasalirdelmismo.Todosestoparmetrosestnsituadosenlacabeceradelprocedimiento
DragOver.
SiStatetieneunvalor0,entonceselmovimientodelobjetoqueestsiendoarrastradoesparaentraren
elobjetoquereconoceelDragOver.EnelcasodequeStateseaiguala1,elmovimientodearrastrees
haciaafuera,esdecir,saliendo.Utilizandoelvalordesteparmetropodrsdecidirqudebeocurrir.
4. Colocarconelratn

Cuandoelusuariodeunaaplicacinpulsaconelratnenunobjetoylomueve,esthaciendounarrastre
odragdelobjeto.
Cuandodecidesoltarelbotndelratnsedicequeestcolocandoelobjetooqueesthaciendoun
drop.Cuandoestosucede,eleventoDragDropesgeneradoyreconocidoporelobjetosobreelquese
hasoltado.
Existelaposibilidaddequeelusuariosuelteelratnsobreotroobjetooquelohagaenunazonadel

formulariovaca,enestecasoeselformularioelquereconoceeleventoDragDropoelobjetosobreel
quesehasoltado.
ElprocedimientoDragDropposeeensucabeceratresparmetrosquetienenelmismosignificadoqueen
elcasoDragOver:Source,XeY.
Debesdecidirqusucedecuandoelususarioarrastraunobjetoylosueltasobreotro.Elhechode
soltarloenunaposicindistintaalaqueseencontrabanoimplicaabsolutamentenada,esdecir,elobjeto
nocambiardeposicinsinoloindicasexpresamenteatravsdelaprogramacin.
VamosaverunejemplodeprocedimientoeventoDragDropenelqueseindicaqudebeocurrircuando
soltamoselobjetoidentificadoporlacadena"Disquete"ensupropiedadTag:
PrivateSubimgDestino_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
IfSource.Tag="Disquete"Then
imgDestino.Width=imgDestino.Width+150
imgDestino.Height=imgDestino.Height+150
Source.Visible=False
EndIf
EndSub
EnestecasoaumentarseltamaodelcontroldestinohacindoloatravsdesuspropiedadesHeihgty
Width.

Captulo Decimoprimero
ElAdministradordeDatos
1. Introduccin
VisualBasicpuedeaccederadistintostiposdebasesdedatos.Elaccesomssencilloesaunabasede
datoscreadaconelMotorJetqueincorporaVisualBasicyqueescompartidoporAccess,esdecir,si
quierescrearunabasededatosconAccessoenelAdministradodedatosdeVisualBasicelaccesoala
mismaserinmediato.
OtrotipodebasesdedatosconlasquesepuedeaccederconVisualBasicsonlasllamadasbasesde
datosISAM(MtodoSecuencialIndexado),entrelasqueseincluyenBtrive,dBASE,Foxproy
Paradox.
ElotrotipodeaccesoesaunabasededatoscompatibleconODCB(Conectividadabiertadebasesde
datos),enlasqueesnecesariouncontroladorODCBparaeltipoespecficodebasededatos.Sitienes
dichocontroladorelaccesotambinserinmediato.
2. Disearlabasedadatos

ElMotorJetdeVisualBasicesuncompletosistemagestordebasesdedatosconelquesepuedecreary
manipularunabasededatos.
Lacreacindeunabasededatosesunprocesoenelcualpodemosdiferenciardospartes:Elanlisisy
eldiseo
Serealizaelanlisisdelabasededatoscuandosepiensaenqusenecesitaalamacenarparatenerlo
disponibleencualquiermomento.
Eldiseoeselprocesodependientedeltipodebasededatosquevayamosautilizar,quecasicontoda
seguridadserrelacional.Alcrearunabasededatosrelacionaltienesquetrabajarcontablas,registros,
campos,ndices,etc.
3. ConocerelAdministrador

VisualBasicincorporaelAdministradordedatosconelquepuedescrearyestablecerlaspropiedades
delastablasqueconformenlabasededatos.
Sinembargo,sitienesMicrosofrAccessesrecomendableutilizarloenlugardelAdministradordeDatos,
yaquegeneraelmismotipodebasededatosperoconunafacilidadyflexibilidadmuchomayor.
ParaaccederalAdministradordeDatosloharemosmediantelaopcindemismonombreenelmen
Complementos.

Eladministradordedatosnospermitemodificarunabasededatosyacreadaocrearunanueva.Una
basededatoscreadaconelMotorJetestcompuestaporunnicoarchivoconextensin*.MDB.Una
basededatosMDBsecomponedeunconjuntodetablasydeQueryDef.Lastablassonlaestructura
fundamentaldelasbasesdedatos,formadaspordistintoscamposysusvaloresenlosregistros
introducidos.LasQueryDefsoninstruccionesSQL,quehansidoguardadasconunnombrealtener
intersenutilizarlasenfuturasocasiones.
SQLesunlenguajequenospermiteentreotrascosasextraerresultadosdeunabasededatos.
4. Crearunabasededatos

Loprimeroquetienesquehacerparacrearunabasededatosesindicardndeseguardarelarchivoy
darleunnombrevlido.
Unavezhayascreadoelarchivodelabasededatos,eselmomentodeirconstruyendolastablasque
formarnlasmisma.
Tienesqueintroducirelnombredelanuevatabla,loscamposquequieresqueaparezcanenlaaplicacin.
Puedesutilazarmsdeunatablaparalosnombresdeloscampos.

Debersseleccionareloloscamposquequierasincluirypasarlosacamposseleccionados.

Captulo Decimosegundo
Accesoabasesdedatos
1. ElcontrolDATA

ConelcontrolData,podemosaccederaunabasededatos,mostrarsuinformacin,introducirnuevos
registros,etc,ytodosinprogramarniunaslalneadecdigo.

LospasosaseguirparautilizarunabasededatosenVisualBasicson:
a.Dibujarelcontroldatayestablecerlaconexinalabasededatosapropiada.
b.Utilizarotroscontrolesparamanejarlainformacin.Estoscontrolessonconocidoscomocontroles
enlazados,aldependerdelcontroldatacomoorigendelosdatosquemuestran.
Elcontroldataposeevarioscontrolesalestilodeunreproductordevdeoparaaccederalosregistros
anterior,posterior,primeroyltimo.
Laspropiedadesdelcontroldataquetienesqueestablecerpararealizarlaconexinconlabasededatos
son:
Connect:Indicaeltipodebasededatosalaquevamosaacceder.PoromisinesAccess.
DatabaseName:Indicaelarchivodebasededatosalaquesequiereaccederindicandolaubicacin
exactadelarchivo.
RecordSource:Permiteindicarelconjuntodedatosespecficodelabasededatosindicadaenla
anteriorpropiedad.NormalmenteserelnombredeunatabladelabasededatosounainstruccinSQL.
Estableciendoadecuadamenteelvalordeestastrespropiedadestendremoslaconexinconlabasede
datosquequeramos.
Siconoceslabasededatosyelconjuntodedatosalosquequieresteneraccesoentiempodediseo
puedesutilizarlaventanadepropiedadesparaestablecerestaspropiedades,encasocontrariolopuedes

hacerconcdigoescrito.
2. ControlesEnlazados

Unavezestablecidalaconexinalabasededatoseindicandoelconjuntodedatosalosquevamosa
teneraccesomedianteelcontroldata,esnecesarioutilizarotroscontrolesparamostrarointroducirdicha
informacin.
Estoscontrolessonconocidoscomocontrolesenlazados,yaqueelorigendelainformacinque
muestranest&aligadoaundeterminadocontroldata.
Normalmenteseutilizancuadrodetexto,cuadrosdelistaeinclusocontrolesimagenparamostrarel
contenidodelabasededatosalaquequieresacceder.Todosestoscontrolespuedenactuarcomo
controlesenlazados.
Exitendospropiedadesquetienesquemodificarparaenlazarloscontrolesconelcontroldata:
DataSource:Indicaremoselcontroldataqueactuarcomoorigendelosdatos.
DataField:Campoespecficoalqueseenlazaelcontrol.
Porejemplo:
txtNombre.DataSource=datEmpleados
txtNombre.DataField="Nombre"
AquseindicaqueseligueelcontroltxtNombrealcampoNombredelatablaEmpleadosqueseaccede
medianteelcontroldata(datEmpleados).Estecontroldebertenercorrectamenteestablecidaslastres
propiedadesanteriormentecitadas.
3. RecordSets

Alutilizaruncontroldatayestablecerlaconexinconlabasededatos,estsindicandoelconjuntode
datossobrelosquequieresteneracceso.EnVisualBasicadichoconjuntodedatosselesdenomina
RecordSet,siendounapropiedaddelcontroldata.
ExistentrestiposdeRecordset:Table,DynasetySnapsoht.Dichotiposeestablecemediantela
propiedadRecordsetTypedelcontroldata,quepredeterminadamentetieneelvalorDynaset.
UnRecordsettipoDynasetesunconjuntodinmicoderegistrosquerepresentanunadeterminadatablao
elresultadodeunaconsulta,segnsehayaestablecidolapropiedadRecordSourcedelcontroldata.
Puedesagregarnuevosregistros,modificarloscamposexistenteseinclusoeliminarregistrosytodosestos
cambiossereflejanenlabasededatosafectada.
UnRecordsetdetipoTablerepresentaunadeterminadatabladebasededatos.AlcrearunRecordset
deestetipoestarsrepresentandodichatabla,cargndoseenmemoriaunsoloregistroquese
correspondeconelregistroactual.Todamodificacinqueserealiceseverreflejadaenlatabla.
FinalmenteeltipoSnapshotcreaunacopiaestticadelconjuntodedatosalqueseaccedemedianteel
controldata.Enestecasonopuedesactualizarlabasededatos,slopuedesvisualizarlosdatos
obtenidos.

4. Modificarlabasededatos

SicrearunRecordsetdetipoTableoDynaset,podrsmodificarlabasededatossubyacentesintener
queprogramarniunaslalneadecdigo.
Alejecutarlaaplicacin,puedesdesplazarteatravsdelosregistrosutilizandoelcontroldata,cualquier
modificacinquerealicesseverreflejadaenlabasededatosalaccederalnuevoregistro.
MediantelapropiedadDataChangeddeuncontrolenlazado,sielvalormostradopordichocontrolha
sufridomodificacionesrespectoalvalororiginal.Encasoafirmativodichapropiedadentrarenvalor
True.
5. Aadirregistros

Sepuedenagregarnuevosregistrosalabasededatossintenerqueprogramarparaello.Enestecaso
tienesquesituarteenelltimoregistroymovertealsiguiente.
SiestablecescorrectamentelapropiedadEOFActionalrealizardichaaccinsecrearunnuevoregistro
alqueselepuedeintroducirnuevainformacin.
LapropiedadEOFActionpuedetenertresvaloresynosindicaloquedebeocurrircuandosellegaalfinal
deunRecordsetdelcontroldata:
SiEOFActiontieneunvalorMoveLast,mantieneelltimoregistrocomoregistroactualsindesplazarse
alsiguienteregistro,quenoexiste,aunquepulsemoselbotndelcontroldataparadesplazarnosal
prximoregistro.
SielvalorEOFActiondejaelregistroactualinvalidado(yaquedichoregistrotodavanoexiste),y
desactivaselbotnquenospermitedesplazarnosalsiguientetienesquecontrolarestasituacinmediante
cdigoyaquecualquierintentodeaccederalainformacindelregistroactualproducirunerroralnoser
unregistrovlido.
SiEOFActionposeeelvalorAddNew,esntoncescuandotedesplacesmsalldelltimoregistro,Visual
Basiccrearunregistronuevoenlabasededatos,dondepuedesintroducirlanuevainformacin.
ElvalorAddNeweselquenospermiteaadirnuevosregistrosalabasededatossintenerque
programarparaello.Paracrearunnuevoregistrotienesquesobrepasarelltimoregistroquetengasen
esosmomentos,entoncesVisualBasiclimpiarelvalordeloscontrolesenlazadospermitindote
introducirlainformacindelnuevoregistro.Cuandotemuevasaotroregistroseaadiralabasede
datos.
Aligualquesepuedeindicarquedebeocurrircuandoselleguealfinaldeunrecordset,tambinpodrs
hacerlocuandosellegaalprincipomediantelapropiedaBOFActiondelcontroldatadelamismaforma
queEOFAction.

Captulo Decimocuarto
Opcionesavanzadasbasededatos
1. Cuadrculaenlazadaadatos

Enalgunasocasionesdesearsmostrarmsdeunregistroalavez,consuscorrespondientescampos.
ParaelloVisualBasicincorporaunnuevocontrolllamadoCuadrcula,quesepresentaendosversiones:
enlazadaynoenlazada
Lasdospermitenmostrarinformacindeformatabular,esdecir,conunconjuntodefilasycolumnas.
Laversinenlazada(DBGrid),esmsapropiadacuandodeseamosmostrarinformacinprovenientede
unadeterminadabasededatos.
Alutilizardichocontrolpuedesmostrarencadaunadesuscolumnasuncampoyencadaunadelasfilas
unregistrodelrecordsetdelquehayasidoenlazado.
ElcontrolCuadrculaenlazadaadatosnoapareceenlacajadeherramientasestndaryaqueesun
controlpersonalizadoconelsiguienteaspecto:

Debersagregarlomanualmentealacajadeherramientas,sunombreesDataBoundGrid.
Elcontrolcuadrculaenlazadaadatosapareceinicialmentecondosfilasydoscolumnas.Sepuede
modificarentiempodediseoesperarqueentiempodeejecucin,cuandoseenlaceconundeterminado
recordsetseajustealmismo.
Elprimerconjuntodepropiedadesinteresantesdeestecontroleselqueestablecesucomportamientoen
tiempodeejecucin.LaspropiedadesAllowAddNes,AllowDeleteyAllowUpdatenosindicansien
tiempodeejecucinsevaapermitiraadir,eliminaroactualizarrespectivamenteelregistrodela
cuadrcula.
Lapropiedadqueestableceelenlaceconelcorrespondientecontroldataes,aligualqueenelrestode
controlesenlazadosDataSource.Sinembargo,nopresentalapropiedadDataFieldyaquecuando
utilicesunacuadrculaesparamostrarunconjuntoderegistros,queseguramentetendrnmsdeun
campo.

2. ConsultasenSQL

Cuandoquierasmostrarinformacinqueprovengademsdeunatabla,notienesmsremedioque
utilizarellenguajeSQLparaestablecerlacorrespondienteconsultaenlapropiedadRecordSourcedeun
controldata.
SQLesunlenguajequepretendeserestndarenelaccesoabasesdedatosrelacionales,deformaque
independientementedelorigendelainformacin,puedasaccederaellaatravsdeinstruccionesSQL.
PuedesestablecerlapropiedadRecordSourcedelcontroldataentiempodeejecucinydarleelvalorde
unadeterminadainstruccinSQL,deestaformaelusuariopuedeespecificarloquequiereextraerdela
basededatos.
UnavezestablecidalapropiedadRecordSource,tienesqueutilizarelmtodoRefreshdelcontroldata
paracrearelobjetorecordset,alhabercambiadolapropiedaddelrecordsource.
LainstruccinqueseutilizaparacrearconsultasdeseleccinSQLesSELECT.Lasntaxisdeesta
instruccineslasiguiente:
SELECTcolumnas
FORMtablas
[WHEREcondiciones]
[ORDERBYcolumnas]
LainstruccinSELECTcomienzacondichapalabrayunconjuntodecolumnas,esdecir,elconjuntode
camposquequeremosquemuestrelaconsultacomoresultadodelamisma.
SeguidamenteaparecerelaclusulaFORM,queidentificalastablassobrelasqueserealizalaconsulta.
LoscamposespecificadosenlaclusulaSELECTdebenperteneceralastablasespecificadasenFORM.
Seguidamentenosencontramoscondosclusulasopcionalescomonosindicanlapresenciadecochetes.
LaclusulaWHEREespecificaelcriterioquedebecumplirparaqueundeterminadoregistroaparezcaen
elresultadodelaconsulta.
NormalmentesernexpresionesdecomparacindeltipoNombreCampo=Valorousandociertas
funcionesdeSQL.
LaclusulaORDERBYespecificaenquordenaparecernlosresultadosdeunaconsulta.Tienesque
especificarelcampooconjuntodecamposporlosqueseordenanlosregistrosdelaconsulta.Tambin
puedesindicarsielordenesascendenteodescendente.
Vamosaverunejemplo:
SELECTNombre
FORMEmpleados
SeespecificaquesemuestreelcampoNombredelosregistrosquepertenecenalatablaEmpleados.
Siquieresquesemuestramsdeuncampo,hayquesepararlosporcomas,ysiquieresquesemuestren
todosloscamposdeunatablasepuedeutilzarelcarter*.As,laconsultadevolvertodosloscampos
delatablaEmpleados.
SELECTEmpleados.Nombre,Empleados.[fechaalta]

FORMEmpleados,TiempoAlta
WHEREEmpleados.Puesto=TiempoAlta.Puesto
EnestacasoseestpidiendoquesemuestrenloscamposNombreyTiempoAltadelosregistros
situadosenlatablaEmpleadosycuyoPuestoexistaenalgnregistrodelatablaPuesto.
Siseutilizanmsdeunatabladeconsultasesconvenienteindicarelnombredelatablaenlaclusula
SELECTjuntoalnombredelcampoquequieresmostrar,porquelasdostablaspodrantenerelmismo
nombreparaunoomscampos.
Sielnombredeuncampoestcompuestopormsdeunapalabra,tienesqueutilizarcorchetespara
delimitarlo.
TodaslastablasimplicadasaparecenenlaclusulaFORMseparadasporcomas.
LaclusulaWHEREpresentaelcriteriodecomparacin.
3. ValidarelcontrolData

Cuandoseintereactuaconelcontroldataenunformulariopodemosutilizaralgunodesuseventospara
establecernivelesdevalidacindelosdatosquesehanintroducidoomodificado.
Eleventomsutilizadoesvalidate.Sucedesiempreantesdequeelregistroactualcambie.
Veamosunejemplo:
PrivateSubdatEmpleados_Validate(ActionAsInteger,SaveAsInteger)
DimrespuestaAsInteger
IfSave=TrueThen
respuesta=MsgBox("Quieresguardarloscambios",vbYesNo)
Ifrespuesta=vbNoThen
Save=False
EndIf
EndIf
EndSub
ElprocedimientodeeventoValidatecontienedosparmetros:Actionqueindicaporquseha
producidoeleventoySavequeindicasesedebeonomodificarlabasededatos.
AselcdigoutilizaelparmetroSaveypermiteconfirmar,porpartedelusuario,queselleveacabola
modificacinqueseharealizado.SeserespondeNo,loscambiosnotienenefectoalestablecerelvalor
FalsedelparmetroSave.
Tambinsepuedencrearreglasdevalidacinalcrearunatabla.Aspuedesintroducirreglasde
validacinjuntoalmensejaquedebeaparecersiseinfringen,reglasdeintegridadreferencial,etc...

TrabajarconArchivos
1. ControlesEspecializados

VisualBasicproporcionaunaseriedecontrolesespecializadosenelaccesoalsistemadearchivosde
windows.
EstoscontrolessonelCuadrodelistadeunidades,elCuadrodelistadedirectoriosyelCuadrode
listadearchivos.Cadaunodeestoscontrolespermiteaccederaloscorrespondienteselementosdel
sistemadearchivos.

Alcuadrodelistadeunidades(figurasuperior),tienesquedarleuntamaoadecuadoparaquesepueda
mostrarcualquierunidadquetengasentuordenador.Entiempodediseosemuestralaetiquetadela
unidaddeldiscodurodeformaquepuedasajustarelcontrolaltamaodelamisma.
Estecontrolincluyelasunidadesdediscoduro,discoflexibleyCdRom,etc...

Elcuadrodelistadedirectoriosnospermitemostrarlosdirectoriosdelsistemadearchivosdel
ordenador.
Esconvenientequeestecontrolmuestretresocuatrocarpetasodirectorios.Entiempodediseo
muestralacarpetaenlaqueseinicialaapliacinyenlaquepordefectoseguardaelproyecto.

Elcuadrodelistadearchivosnosmuestralosarchivosdeundeterminadodirectorioocarpeta.Su
propiedadmsinteresanteesPatternquenospermiteespecificarqutipodearchivossonmostradosen
dichocontrol.Parautilizarestapropiedadsepuedenutilizarloscomodines*y?alestablecerla
propiedad.EstoscaracterestienenelmismosignificadoqueenMSDosoWindowsparaespecificarlos
nombresdelosarchivos.
SiestableceslapropiedadPatternconlacadena*.txt,estsindicandoquesemuestrenslolosarchivos
quetenganestaextensin.Sepuedenmostrarmsdeuntipodearchivosseparndoloscon.

2. Conectarloscontroles

Entiempodediseo,aldibujarlosdistintoscontrolesdelsistemadearchivos,estosmuestranlaunidady
eldirectorioenlaquesecreaelproyectocomohecomentadoanteriormente.Entiempodeejecucinel
usuariopuedecambiarlaunidadyeldirectorioocarpetayestasituacinnoseverreflejadasinose
escribecdigo.
Paraqueloscontrolesestnsincronizadosesnecesarioconectarlos.
EleventopredeterminadodelcontrolcuadrodelistadeunidadesesChange.Esteeventosucedecuando
elusuariodespliegalalistadeunidadesyseleccionaunaunidaddistintaalaactual,porloqueeselevento
adecuadoparaactualizarlalistadedirectoriosdelasiguienteforma:
PrivateSubDir1_Change()
Dir1.Parh=Drive1.Drive
EndSub
Paraelcontrolcuadrodelistadedirectoriosdeberemoshaceralgoparecido,elcdigoserelsiguiente:
PrivateSubDir1_Change()
File1.Path=Dir1.Path
EndSub
Deestaformatenemosconectadoslostrescontrolesdeaccesoalsistemadearchivos.
3. Manejandoloserrores

Cuandoseescribecdigoentiempodediseo,VisualBasicpuededetectarerroresyavisardeellos.
Posteriormentesepuedendetectarmserroresentiempodecompilacin,estoserroressondecarcter
semntico.LoserroresentiempodeejecucinsonsucesosinesperadosqueVisualBasicnopuede
controlarporsmismo.

Anteestetipodeerroresexistelaposibilidaddeincorporarunmanejadorocontroladordeerrores,
quesonunconjuntodelneasdecdigoquesloseejecutancuandoseproduceunerrorquees
interceptadoporVisualBasic.
Sedebendeescribirmanejadoresdeerroressiemprequesepuedapreveerlaocurrenciadeunerroren
tiempodeejecucin.Algunadeestassituacionesson:
Problemasconlasunidadesdediscoflexible.
Desbordamientos.
Faltadememoria.
Problemasconlared.
Perifricos.
Erroreslgicos(nombredearchivomalescrito...)
LainstruccinquenospermitedetectarerroresentiempodeejecucinesOnError.Susntaxises:On
ErrorGotoEtiqueta,dondelaetiquetarepresentaelnombredelmanejadordeerror,quetieneque
estarsituadoenelmismoprocedimientoquelainstruccinOnError.Cuandoseproduceunerrorenel
procedimientodondesecolocaOnError,VisualBasicdarelcontrolalmanejadordeerroresescritoen
dichoprocedimiento.
Elcdigopuedeser:
ManejadorError:
IfErr.Number=68Then
resp=MsgBox("Eldispositivonoestpreperado",vbAbortRetryIgnore)
Resume
ElseIfresp=vbAbortThen
Drive1.Drive=Dir1.Ptah
ResumeNext
EndIf
EndIf
Laprimeralneaeslaetiquetaquerepresenaelnombredelmanejador.
AlproducirseunerrorentiempodeejecucinsecreaunobjetoErrqueinterceptadichoerror.Este
objetoposeelapropiedadNumberqueeselnmerodeerrorinterceptado.
Elcdigopreguntasidichoerroresel68yenesecasopresentauncuadrodedilogoenelqueseindica
queeldispositivonoestpreparado,dandotresopciones:reintenter,cancelaroignorar.
Unavezinterceptadoelerroryejecutadoelcdigoasociadoalmanejador,esnecesarioindicarqu
sucedeunavezsesalgadelmanejador.Enestecasodependerdeloqueelijaelusuario.Siquiere
reintentarlaoperacinseejecutarlainstruccinResume,quevuelveaejecutarlamismaintruccinque
provocelerror.
SiseanulalaoperacinseejecutarResumeNext,quedevuelveelcontrolalasiguienteinstruccinque
provocelerror.

TrabajarconArchivosII
1. ArchivosdeTexto

Vamosaescribircdigoparacuandoelusuariohagaclickenunarchivodelalistadearchivos(captulo
15),sucontenidosemuestreenuncuadrodetexto.
Elcdigopuedeserelsiguiente:
PrivateSubFile1_Click()
DimnuevalineaAsString,LTextoAsString,TextoAsString,ArchivoAsString
nuevalinea=Chr$(13)+Chr$(10)
Archivo=File1.Path&"\"&File1.filename
OpenArchivoforInputAs#1
DoUntilEOF(1)
LineInput#1,LTexto
Texto=Texto&LTexto&nuevalinea
Loop
Text1.Text=Texto
Close#1
EndSub
Cuandoelusuarioseleccionaundeterminadoarchivodelalista,sunombreseespecificaenlapropiedad
filenamedelcuadrodelistadearchivos.Tienesqueindicarlarutadeaccesocompleta,porlocualse
concatenaeldirectorio,queseencuentraenlapropiedadPathyelcarter\comoseparadorde
directorios.
UnaveztenemosenlavariableArchivoelnombreyrutacompletadelarchivoquedeseamosmostrar,es
necesarioabrirdichoarchivo.ParaelloutilizamoslainstruccinOpen.
LainstruccinOpennecesitaelnombredelarchivoquetienequeabriryelmodoenquesevaaabrir.
EnlalneaOpenArchivoforInputAs#1,elarchivoaabrirestsituadoenlavariableArchivo,en
mododelectura,especificadomediantelainstruccinInputysunmeroasociadoqueesel#1.
Unaveztenemosabirtoelarchivoenmodolectura,utilizamoslavariableLTextoparairalmacenando
cadaunadelalneasdelarchivodetexto.ParaelloutilizamoslainstruccinLineInputdondeseindicael
nmerodelarchivoylavariableenalqueseguardalalneadetexto.

EstainstruccinsesituaenunbucleDoUntil...Looprepitindosehastaquesellegaalfinaldelarchivode
textoespecificadoporlacondicinEOF(1).
EnlalneaText1.Text=Texto,esdondeseasociaelcontenidodelarchivoconelcuadrodetextodel
formularioatravsdesupropiedadText.
FinalmentesecierraelarchivomediantelainstruccinClose#1.

2. LaintruccinFileCopy

LainstruccinFileCopynospermiterealizarunacopiadeundeterminadoarchivo.
Lasntaxisdeestainstruccines:
FileCopyfuente,destino
Lafuenteeselarchivoquequeremoscopiaryeldestinoeselarchivoqueserresultadodelacopia.
Elarchivofuentetienequeestarcerradoantesdeutilizarestainstruccinyaqueencasocontrariose
producirunerrorentiempodeejecucin.ConlainstruccinFileCopypuedescopiarcualquierarchivo
independientementedesutipo.

UtilizacindeOLE
1. Introduccin

Compartirinformacinsobredistintasaplicacionesesunadelascaractersticasmspotentesqueposee
Windows.Alcompartirinformacin,loquerealmenteseesthaciendoescompartirobjetosqueson
creadospordosomsaplicacionesWindowsdistintas.AquesdondeentraenjuegoOLE,sentandolas
basesparacrearycompartirobjetosentredistintasaplicaciones.
VisualBasicactacomonexoentrelasaplicacionesWindowsalpermitirelusodeobjetosOLEensus
aplicaciones.SepuedentenerenunmismoformulariodeVisualBasicunahojadeclculodeExcelyun
documentodeWord.
VisualBasicpuedeutilizarlosobjetosdeotrasaplicacionesdelamismaformaquecualquierotroobjeto
deVisualBasic.Puedeestableceroleerpropiedades,utilizarsusmtodos,etc...Estosedenomina
AutomatizacinOLE.
2. ElcontenedorOLE

MedianteelusodelcontrolcontenedorOLE,puedescrearformulariosdeVisualBasicenlosquese
incluyainformacinprovenientededistintasaplicacionesWindows.

Estosformulariossonconocidoscomodocumentoscompuestos,enlosquelafuncionalidadquese
necesitanolaproporcionalaaplicacincreadaporVisualBasic,sinoqueseaprovechadelas
aplicacionesquecreanlosobjetosinsertados.
As,elequipodondeseejecutelaaplicacinWindowscomohojadeclculoExceloprocesadorde
textoscomoWordnonecesitarnprogramarparaconseguirquelaaplicacinpresentelafuncionalidad
dedichasaplicaciones,sinoquepuedesutilizarlasdesdetuaplicacin.
AlpulsarelcontrolOLEenlacajadeherramientasdeVisualBasicnosaparecerelsiguientecuadrode
dilogo:

Enestecuadronosaparecenlosdistintostiposdeobjetosquepodemosinsertarenelformulario.Estos
objetosprovienendelasaplicacionescompatiblesconOLEquetengasinstaladasentuequipo.
CuandounaaplicacinseinstalaenunordenadorquedaregistradaenelRegistrodeWindows.Este
registroescomounabasededatosdonWindowsguardainformacinreferentealasaplicacionesque
tieneinstaladas.Entreotrascosasseguardanlosobjetosinsertablesqueofrecendichasaplicacionesy
quedespusnosaparecernenelcuadrodedilogoinsertarobjeto.
SepuedeinsertarenunformulariounobjetoutilizandolaopcinCerrarNuevooutilizarunoyaexistente
mediantelaopcincerrardesdearchivo.Enesteltimocasotienesqueespecificarelarchivoqueposee
elobjetoainsertar.
Siquieresqueelobjetoinsertadoaparezcaenelformulariocomounicono,puedesactivarlacasilla
mostrarcomoiconodelcuadrodedilogoinsertarobjeto.
Puedesindicarqueelobjetoseaincrustadoovinculado.Alincrustarunobjetosecreaunacopiayse
guardaenlaaplicacinVisualBasic,porloqueslosepodrusarenesta.
Alvincularunobjeto,stesigueestandoalmacenadoenelarchivooriginal,guardndoseenlaaplicacin
unareferenciaalmismoynoelobjetoens.
3. Edicindelobjeto

CuandoinsertasunobjetoatravsdelcontrolcontenedorOLE,estsendisposicindeeditarelobjeto
conlaaplicacincreadoradelmismo.Paraellolonicoquetienesquehaceresdobleclicksobreel
objeto.
Alactivarelobjetohaciendodobleclick,laaplicacinservidoraesiniciadayelusuariopuedeinteractuar
conellautilizandotodalafuncionalidadquepresente.
Enestesentidoesimportanteindicaraplicacionesquepermitanquelaedicinseaenelpropiacontrol
contenedor(EdicinVisual),yotrasenlaquelaedicinseproduceenunaventanaindependiente.
ParaquelaedicindelobjetoseaenelpropiocontenedorOLE,esnecesariohaberincrustadoelobjeto,
yaquetodavinculacinproducirquelaaplicacinservidorasemuestreenunaventanaindependiente.
Porotraparte,sielobjetoserepresentacomouniconoenelformulario,tambinsepresentarenuna
ventanaindependientelaaplicacinservidora.
Cuandolaaplicacinservidorasemuestraenunaventanaindependiente,noexistenproblemaspara

presentarlosmensybarrasdeherramientasdelamisma.
Perosielformulariodondehasinsertadounobjetoposeemensobarrasdeherramientasylaedicindel
objetoseproduceenelpropiocontenedor,tienesquenegociardichoselementos,esdecir,tienesque
indicarcomosehandemostrar.
Siquieresquelosmensdelaaplicacinservidorasemuestrenaleditarelobjeto,esnecesarioqueel
formulariodondeestinsertadoelobjetoposeaunelementodemen,aunqueestnovisible.Ademsen
eleditordemenspuedesespecificarenquposicindebendemostrarsecuandoseediteelobjetoenel
contenedorOLE.
LapropiedadNegociatePositionqueapareceeneleditordemens,establecelaposicindelos
elementosdelmendenuestroformulario.
Puedetenerlossiguientesvalores:
0:Indicaquedichoelementodelmensevercuandoseediteelobjeto,mostrndosenicamenteel
mendelaaplicacinservidora.
1,2y3:Establecedondesemostrar,pudiendoseralaizquierda,centrooderecha.
IndependientementedelapropiedadNegocitaPositiondelmen,esnecesarioestablecerlapropiedad
NegociateMenudelformularioaTrue.Enotrocaso,lanegociacindemensnosellevaracabo.
TodavinculacinousodelaopcinMostrarcomoIconoimplicarnqueelobjetoseediteenuna
ventanaindependiente.
4. Objetosinsertables

AlgunasaplicacionesproporcionanobjetosquepuedenutilzarsecomocontrolespersonalizadosenVisual
Basic.
DeestaformasepuedenagregaralacajadeherramientasdeVisualBasicsintenerqueutilizarelcontrol
contenerdorOLE.
ParaestoutilizaremoselelmencontextualdelacajadeherramientasoelegirControles
personalizadosenelmendeherramientas.

Activalascasillasdelosobjetosqueutilzasnormalmenteentusaplicacionesyyanosernecesarioutilizar
elcontrolcontenedorOLE,insertandoelobjetoespecficodeunaformadirectaatravsdelosbotones
delacajadeherramientasqueaparecenparaello.
Ademsesposiblequeunaaplicacinaportemsdeuntipodeobjetoinsertable.Porejemplo,Excel
permitelainsercindeobjetoshojadeclculoygrficos.
Tienesquetenerencuentaquealutilizarunobjetoinsertablecomocontrolpersonalizadoenlacajade
herramientas,slopuedesincrustarunobjetonuevoyaquenotieneslaopcindeutilizarunarchivo
existente,perosipuedeseditarloentiempodeejecucin,aplicandolasmismasreglasqueenelcasodel
controlcontenedorOLE.
5. AutomatizacinOLE

UnadelascaractersticasmspotentesdelautilizacindelestdarOLEeslaAutomatizacinOLE.
Nospermitemedianteprogramacin,integrarvariasaplicacionesWindowsenunaaplicacincreadacon
VisualBasic.
ElestndarOLEpermitequelasaplicacionesactencomoservidoresOLEocomoclientesOLE.Un
servidorOLEproporcionaobjetosquepuedenserutilizadosenotrasaplicaciones.UnclienteOLEes
unaaplicacinqueutilizaobjetoscreadosenunaaplicacindistinta.
AlutilizarlaautomatizacinOLE,puedesutilizarlosobjetosdeotrasaplicacionescomosifueranobjetos
deVisualBasic,estableciendopropiedadesyutilizandosusmtodos.
Elusodelexamidordeobjetospermiteconocerypedirayudasobreloscomponentesdedichosobjetos,
facilitandolautilizacindesusmtodosypropiedadesdelaformacorrecta:
DimxAsObject
Setx=CreateObject("Word.Basic")

x.ArchivoNuevo
x.TamaoFuente24
x.Insertar"UsodelaAutomatizacinOLE"
EnelejemploanteriorsepuedeobservarunfragmentodecdigodondesecreaunobjetoWord,se
utilizaunmtodoparacrearunnuevoarchivo,seestablecelapropiedadtamaodefuentea24puntosy
seinsertatextoenelpuntodeinsercin.

Você também pode gostar