Escolar Documentos
Profissional Documentos
Cultura Documentos
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ónparanombrarobjetosdeVisualBasic:
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étodo[par1,...,parn],dondela
listadeparmetros[par1...,parn]esopcionaldecadamtodo.
Unejemploes:
SiquieresmostrarunformulariollamadofrmPrimerolasntaxisser:frmPrimero.Show1
Elvalor1nosindicaqueaparecerdeformamodalysielvalores0aparecerdeformanomodal.
6. EntenderlosEventos:
ElconjuntodeeventosestpredefinidoenVisualBasicporlocualnopuedescrearnumevoeventospara
losobjetos.
Elconjuntodeeventoreconociblesporunobjetoestligadoconlosprocedimientosdeevento.Estos
procedimientossonunidadesdecdigoquelepermitenespecificarlarespuestaquedebedarunobjeto
antelaocurrenciadeuneventoquepuedereconocer.
Ladefinicindelprocedimientodeenventotienelasiguienteforma:
PrivateSubNombreObjeto_NombreEvento([Listadeparámetros])
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ítulo][,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ítulo][,estándar][,posx][,posy][,archivoAyuda,contexto])
3. ControlDiálogoComn
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óndelainformacinintroducida.
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úmero.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ón1Then
[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ólar"
ElseIfmoneda=2Then
MsgBox"Franco"
EndIf
Seutilizaunavariableparaestablecerelvalordeunapropiedadqueindicaquelaopcindelcuadrode
listalstMonedaestseleccionado.
Unavezconocidalaopcinseleccionada,deberemossacarelmensajeadecuado,paraellonecesitamos
unaestructuradedecisin.
LaintruccindelaclusulaElse,sloseejecutacuandoelrestodecondicioneshanfracasado.
Cualquieradelosbloquesdeinstruccinpuedecontenerunnmeroarbitrariodeinstrucciones,incluidala
posibilidaddequeexistanotrasinstruccionesIfThenElse.
Cuandoexisteungrannmerodeinstruccionesaevaluaresaconsejableutilizarotraestructurade
decisin,comopuedeserlasinstruccinSelectCase.
Estainstruccinnodmspotenciaallenguaje,perohacequeelcdigoseamslegibleyeficiente.La
sntaxisdelainstruccinSelectCasees:
SelectCaseexpresiónDeComparación
[CaselistaExpresiones]
[intrucciones]
...
CaseElse
[intruccionesN]
EndSelect
VolvamosalejemploanteriorperoconlainstruccinSelectCase:
SelectCasemoneda
Case0
MsgBox"Pesetas"
Case1
MsgBox"Dólar"
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óloenelcasoqueelexp1comoexp2se
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<exto&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.