Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Funciones de Visual PDF
Funciones de Visual PDF
DAED Software y todas las obras, diseos y software bajo este nombre son
propiedad intelectual de Andrs Escobar. Esta obra es LIBRE y esta totalmente
permitida su copia, publicacin y distribucin.
2008
El curso conserva los temas antiguos pero con algunas modificaciones que
incluyen ampliacin de la informacin y nuevos ejemplos. Como nuevos temas
el curso incluye:
Contenido
La API de Windows
Funciones
Optimizar la Programacin
Prologo
Todos tenemos una gran capacidad de auto enseanza, este y muchos otros
manuales y cursos estimulan ese sentido de autoaprendizaje que tienes tu
(lector), y de esto estoy seguro, sino, no te hubieras tomado la molestia de
descargar este curso.
Como es costumbre ma, no hay mucho aqu para los expertos, ni para todos
aquellos que me escriben dicindome que mis tutoriales y cursos son muy
sencillos, as son, porque as me lo propongo. Adems dar todo el material
complicado no tiene mucho sentido, ya que un verdadero programador se
hace a si mismo y se desvela mucho tratando de encontrar soluciones. No
pierdas las ganas y no esperes que todo te lo den listo.
Controles Intrnsecos
Los controles intrnsecos son aquellos que aparecen "cargados por defecto" en
el cuadro de herramientas con abres VB. Estos se diferencian de los
extrnsecos, por que una aplicacin creada nicamente con estos controles (y
sin agregar referencias o libreras) se puede distribuir sin instalador (algunas
veces).
Algunas Propiedades
Text: Almacena la cadena de caracteres que contenga el control.
DataFiled: Enlaza en control con un campo de base de datos.
DataSource: Enlaza el control con un origen de manipulacin de base de datos.
MultiLine: Permite escribir varias lneas en el control.
ScrollBars: Agrega barras de desplazamiento al control si esta MultiLine = True
PasswordChar: Es el carcter que ocultara el texto que se escribe en el
control, por ejemplo PasswordChar = * (Asterisco).
Locked = Permite bloquear la escritura sobre el Textbox.
Formatear un Textbox
Esto se utiliza para que un Textbox muestre un numero separados por unidades
y decimales.
Private Sub Text1_LostFocus()
If Text1.Text = "" Then
Text1.Text = "0,00"
End If
Text1 = Format(CCur(Text1.Text), "###,###,###,##0.00")
End Sub
Para realizar operaciones matemticas con un Textbox formateado se debes
cambiar la funcin Val por CDbl, ejemplo:
txResultado = CDbl(Text1) + CDbl(Text2)
Text1.SelStart = Len(Text1)
End Sub
Algunas Propiedades
Cancel: Permite ejecutar el cdigo escrito en el control presionando "Esc"
Default: Permite ejecutar el cdigo escrito en el control presionando "Enter"
Style: Puede ser Graphical o Standard. Si es Graphical permite cambio de
color entre otras.
Picture: Carga una imagen para el CommandButton si su propiedad Style es
Graphical.
Label (Etiqueta):
Muestra la informacin, los ttulos o los subttulos que deseemos.
Algunas Propiedades
Alignment: Permite alinear el texto hacia la izquierda, derecha o centro.
BackStyle: Permite hacer que el fondo de la etiqueta sea transparente o
solid.
AutoSize: Ajusta el tamao del control a la longitud del texto.
WordWrap: Muestra el texto (cuando es mucho) en varias lneas.
Algunas Propiedades
Style: Si es Graphical convierte el control en un botn de chequeo.
Value: Activa o desactiva el valor de verificacin. Cheked (Verifica), Uncheked
(Desverifica) o Grayed (Inhabilitado)
Algunas Propiedades
Value: Puede ser (True) mostrando un punto negro o (False) quitndolo.
Algunas Propiedades
List: Permite crear uno a uno los elementos de la lista del ComboBox
Style: Permite cambiar a un combo simple o lista.
Sorted: Si es (True) organiza los elementos de su lista alfabticamente.
ListBox (Lista)
Muestra datos o campos en forma de lista.
Algunas Propiedades
Style: Standard (Normal) o CheckBox (Una lista con casillas de verificacin)
Quitar un elemento
List1.RemoveItem List1.ListIndex
Timer (Temporizador)
Realiza un procedimiento en un intervalo o intervalos de tiempo
determinados.
Algunas Propiedades
Interval: Permite ingresar el valor del intervalo de tiempo. Un intervalo de
1000 equivale a 1 segundo.
Enabled: Si es (False) pausa al temporizador, si es (True) lo activa.
Label1.ForeColor = vbBlue
ElseIf C = 2 Then
Label1.ForeColor = vbRed
ElseIf C >= 3 Then
C=0
End If
End Sub
OLE
Permite enlazar un archivo externo a VB a un programa creado por
nosotros.
Controles extrnsecos
Son controles que se agregan a una aplicacin por la va "Componentes", estos
son controles Activex, creados por el usuario o los que se instalan con Visual
Studio. El uso de estos controles en una aplicacin requiere la creacin de un
instalador para su distribucin.
If Err = 0 Then
Printer.Print Text1.Text
Printer.EndDoc
End If
Err = 0
End Sub
Para guardar una fecha elegida con DTPicker en una variable o en una
etiqueta, se utiliza la propiedad Value de este as: DTPicker1.Value
Reproducir un CD de Audio
Private Sub Form_Load()
Form1.Show
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.Command = "Close"
MMControl1.DeviceType = "CDAudio"
MMControl1.Command = "Open"
End Sub
Propiedades de un proyecto
Un proyecto tiene una serie de caractersticas u opciones que se pueden
configurar entre las cuales se encuentran: Nombre del proyecto, versin, tipo
de proyecto, titulo de la aplicacin, icono, tipo de compilacin, objeto inicial,
entre otros.
Para ver y configurar las propiedades de un proyecto... click en "Proyecto" >
"Propiedades de [NombreProyecto]"
Ficha "General"
Tipo de Proyecto: Permite cambiar el tipo de proyecto elegido, puede ser
EXE Estndar, EXE Activex, DLL Activex o Control Activex.
Objeto Inicial: Permite escoger el formulario u objeto que se mostrara
primero cuando se ejecute el programa.
Nombre de Proyecto: Es el nombre del proyecto creado, este es el nombre
que sale en la ventana "Complementos" cuando creamos un componente
Activex.
Ficha "Generar"
Aplicacin:
Titulo: Es el nombre que tendr el programa en el administrador de tareas y
en "Agregar o Quitar Programas" del panel de control.
Icono: Pone como icono de la aplicacin el del formulario seleccionado.
Numero de Versin: Es eso, el numero de la versin del programa.
Elementos de un proyecto
Para estudiar los elementos de un proyecto, tomare como ejemplo un
EXE Standard.
Formularios
Es una ventana en blanco en la cual dibujamos los controles. Los
formularios o ventanas pueden ser hijas o madres. Cuando una ventana es
hija significa que se mostrara dentro de una ventana y si es madre ser la
ventana que contenga a las dems, por ejemplo el programa Word la hoja
que lees es una ventana hija de la ventana madre que es donde estn los
mens, barras de herramientas, etc.
Para crear un programa que utilice una ventana o formulario madre e hija
Agrega un formulario MDI (del men Proyecto), luego agrega un formulario
standard y coloca su propiedad MDIChild = True
Algunas Propiedades
WindowState = Permite elegir el estado del formulario o ventana cuando se
ejecute, puede ser minimizado, maximizado o normal.
StarUpPosition = Aqu se elige la ubicacin en la pantalla del formulario.
ShowInTaskBar = Si es False no aparece un botn de la ventana en la barra de
tareas cuando se ejecuta el programa.
Picture = Sirve para agregar un fondo de archivo (ya sea una imagen por
ejemplo) al formulario.
ControlBox = Si es False se quitan los botones Minimizar
Maximizar/Restaurar Cerrar de la barra de titulo.
BorderStyle = Nos permite elegir el tipo de borde o mas bien el tipo de
ventana o formulario que queremos.
Mdulos
Son archivos que se anexan al los programas, son como un especie de bloque
compacto de cdigo que agiliza la ejecucin de los programas ya que por
ejemplo si estamos creando un programa muy complejo que tiene muchos
formularios y que varios de estos comparten cdigo seria mas fcil escribir
este en un modulo y as hacerlo disponible para cualquier formulario. Existen 2
clases de mdulos:
Controles de usuario
El elemento Control de usuario permite crear nuestros propios controles, ya
sea una caja de texto personalizada, un botn o cualquier clase de control,
como un reproductor de audio o de video en fin lo que uno quiera, para crear
un control es necesario entender de tecnologa Activex que explicare mas
adelante. As que el ejemplo practico lo veras en el tema Activex
Data Enviroment
Este es una Conexin a datos (es decir Base de Datos), permite crear una
conexin o enlace a las bases de datos para por ejemplo hacer un reporte,
aunque su principal funcin sea la del enlace de datos a travs de Internet.
Data Report
Es un elaborado reporte de una base de datos que permite adems de
visualizar los datos, imprimirlos o exportarlos a otro tipo de archivo, permite
gran flexibilidad en la manera en que se muestran los datos, ya que
prcticamente se muestran en el lugar que se te de la gana ponerlos. Este
Eventos, procedimientos
Como se supone que esto es un curso avanzado, no voy a explicar que son los
eventos y procedimientos, vamos al grano con ejemplos prcticos
La idea es:
Desplazarnos por las cajas de texto con las teclas direccionales.
Cuando una caja reciba el cursor, su contenido se seleccione.
Que las cajas solo reciban nmeros.
Que los nmeros se muestren en formato decimal
Y que al cerrar el programa nos pregunte si estamos seguros de salir.
Las letras
AZ = vbKeyA vbKeyZ
Los nmeros
10 = vbKey1 vbKey0
Las de funciones
F1 F12 = vbKeyF1 vbKeyF12
End Sub
Con esto has visto algunos eventos y los procedimientos que se adaptan a
ellos. Ten en cuenta que NO todos los procedimientos se pueden ejecutar en
todos los eventos.
Algunas sentencias
Por sentencias podemos entender que son aquellas lneas de cdigo formadas
por palabras reservadas, entre mas sentencias conozcas mas maneras se te
ocurrirn de resolver un algoritmo. En este capitulo voy a explicar y a poner
en funcionamiento algunas sentencias.
Su sintaxis es:
If <Condicion> Then
Acciones
ElseIF <Condicion> Then
Acciones
Else
Acciones
End If
Utilizaremos ElseIf para escribir ms de una condicin usando un solo If. Asi
trataremos datos que se relacionan entre si o son similares. No es lo mismo
que hacer condicionales anidados!
Ejemplo:
If Month(Now) = 1 Then
Mes = Enero
ElseIf Month(Now) = 2 Then
Mes = Febrero
'[..]
ElseIf Month(Now) = 12 then
Mes = Diciembre
End If
Si las acciones a realizar son una (1) sola podemos escribir un If de una sola
lnea.
If Mes = Marzo Then MsgBox Marzo
Puedes usar Not para negar una condicin y se cumpla una accin; ejemplo:
If Not Textn.Text = Then
MsgBox TextBox Contiene Texto
End If
Para evaluar varias condiciones y que reciban la misma accin se utiliza Or.
If Day(Now) = 1 Or Day(Now) = 2 Or Day(Now) = 3 Then
MsgBox Dias entre 1 y 3
End If
Para que se cumplan 2 o mas condiciones para realizar una accin usaras And.
If VarNum = 1 And VarText = Texto Then
MsgBox Numero 1 y Mensaje Texto
End If
Su sintaxis es:
Select Case (Control u Objeto).Propiedad
Case xxx
Acciones
Case Else
Acciones
End Select
Los Select tambin utilizan los operadores logicos Not, Or y And casi de igual
manera que los If.
En la lectura de este curso ya has visto 2 ejemplos del Select por eso no voy a
poner mas.
With Text1
.Text = "Texto"
.SelStart = 0
.SelLenght = 10
.Locked = False
End With
Dale nombre a la tabla; ingresa los campos; elige el campo indice y Generar
tabla
Una vez hecho todo este proceso, agrega la Referencia DAO, en agregar
referencias.
Microsoft DAO 2.5/3.51 Compatibily Library.
Para hacer funcionar el programa, tenemos que enlazar la base con nuestra
aplicacin, de la siguiente manera:
* Para que este cdigo funcione, la base debe estar guardada en la misma
carpeta de nuestro proyecto o programa.
Option Explicit
Esta variable guardara la ruta de ejecucin de nuestro programa y el nombre de la base
Una base de datos puede tener en muchos casos mas de una tabla, en este
procedimiento puedes agregar todos los Set Tabla que sean necesarios, al
igual que si tu aplicacin tiene varias bases de datos las puedes enlazar con
este mismo procedimiento usando distintas variables de tipo DataBase y
variables de Rutas; o lo puedes hacer en procedimientos distintos (ojo, de
distinto nombre sino el VB te dir que tienes un procedimiento Ambiguo, es
decir repetido)
Buscar datos
Con este procedimiento puedes realizar consultas en los datos guardados.
Dim Buscar
Buscar = InputBox("Escriba el Codigo a buscar")
If Index = 0 Then
MiTabla.MoveFirst
ElseIf Index = 1 Then
MiTabla.MovePrevious
ElseIf Index = 2 Then
MiTabla.MoveNext
ElseIf Index = 3 Then
MiTabla.MoveLast
End If
If MiTabla.BOF Then
MiTabla.MoveFirst
ElseIf MiTabla.EOF Then
MiTabla.MoveLast
End If
If Err = 0 Then
VerCampos
End If
Err = 0
End Sub
Eliminar datos
Adivina, con este borras o eliminas registros
If P = vbYes Then
Tabla.Delete
btMover_Click 0
End If
End Sub
Y para los que ya han ledo estos manuales y en especial el del Reporte y no
les actualiza el reporte sino hasta que salen de todo el programa, ah les va la
solucin (Que pena no haberla puesto en ese manual)
Maneras de Guardar
Antes que todo, debemos considerar algunos parmetros para guardar:
- Se guardaran campos en blanco?
- Se permitir duplicar la clave principal?
- Se guardara ms de un registro a la vez?
- Se deben convertir algunos datos antes de guardar?
Ejemplo:
If Text1.Text = Or Text2.Text = Then
MsgBox Debe digitar todos los campos
Exit Sub
Else
Call Procedimiento_Guardar
End If
Ref = TablaInventario(Referencia)
If Ref = X1 Then
Articulo = TablaInventario(Aritculo)
TablaTemporal.AddNew
TablaTemporal(CampoTemporal) = Articulo
TablaTemoral.Update
End If
Tabla.Index = Clave
Tabla.Seek =, Text_Numero_de_Identificacion.Text
If Not Tabla.NoMatch Then
MsgBox Ya existe una persona registrada con ese numero de identificacin
Else
Call Procedimiento_Guardar
End If
Esta como enredado esto cierto? llevemos toda esta carreta a un ejemplo
para que se entienda.
Vamos a suponer los siguientes nombres para los TextBox de la imagen que son
los que nos interesan.
Identificacion: txID
Nombre: txNom
Direccin: txDir
Telfono: txTel
Tabla.Update
MsgBox "Datos guardados", vbInformation, "Guardar"
End If
Editar = False
End Sub
Las instrucciones Edit (Editar) permitirn actualizar los datos, los datos que no
se cambien o no se asignen se conservaran igual.
Contar Registros
Debes crear un procedimiento como este para cada tabla que manejes, luego
para conocer cuantos registros tiene llama a este procedimiento: Call
ContarRegistros
En lugar de esto:
For X = 1 To Tabla.RecordCount
[]
Has esto:
Call ContarRegistros
For X = 1 To TotalRegistros
[]
Cmo as? ya veras. Primero diseamos una pequea base de datos con la
siguiente estructura usando VisData de VB:
Option Explicit
Public Base As Database
Public Tabla As Recordset
Uuuff !!! pega este cdigo. Corresponde al evento Change del Textbox
txBuscar
List1.Clear
With RecArt
If (.BOF And .EOF) Then
Else
.MoveFirst
Agrega el cdigo del botn que mostrara la lista completa de todos los
nombres:
Private Sub Command1_Click()
If Tabla.BOF And Tabla.EOF Then
MsgBox "No hay registro de Articulos", vbExclamation, "Error de Carga"
Exit Sub
End If
List1.Clear
Tabla.MoveFirst
Dim N As Integer
For N = 1 To Tabla.RecordCount
List1.AddItem Tabla("nombre")
Tabla.MoveNext
If List1.ListIndex = Tabla.RecordCount Then
Exit For
End If
Next N
txBuscar.Text = ""
txBuscar.SetFocus
End Sub
Para terminar, debemos hacer que al hacer click sobre cualquier nombre de la
lista nos muestre su respectivo ID, telfono y ciudad.
Else
.MoveFirst
Do While Not .EOF
txID.Text = .Fields("ID")
txTelefono.Text = .Fields("Telefono")
txCiudad.Text = .Fields("Ciudad")
.MoveNext
Loop
End If
End With
End Sub
Prubalo !!! Ejecuta, has click en el botn Ver Lista Completa y luego has
click sobre cualquier nombre, veras sus respectivos datos.
En este ejemplo las variables SQL y sBuscar las he utilizado para almacenar
una instruccin SQL que organiza los campos de acuerdo a un criterio y luego
se graban en una variable de tabla temporal, en este caso esa tabla temporal
esta representada por la variable tRs
Ten MUY en cuenta este ejemplo, ya que las soluciones que puedes derivar de
este son infinitas. Personalmente siempre me baso en este ejemplo para
hacer consultas con criterios, incluso lo he usado para guardar y eliminar bajo
algunas condiciones y parmetros personalizados.
Algunas APIs
Te preguntaste alguna vez si se poda hacer un programa que manipulara
muchas funciones propias del sistema operativo como por ejemplo, copiar
archivos, eliminar o mover, reproducir sonidos, registrar programas, bloquear
o desbloquear los perifricos de entrada como teclado y mouse, como
deshacer cambios, poner tus formularios y programas por encima de todas las
ventas y ser siempre visibles, abrir programas; pues todo esto y
aproximadamente 80.000 cosas mas son posibles gracias a las APIs de
Windows, incluso un virus hecho en VB utiliza como minimo de 2 a 3 APIs
(claro que aqu no les voy a ensear como darles ese uso Je, je )
Para usarlo abres el men archivo y le das clic en Cargar archivo de texto y
cargas el que dice WIN32API.txt. En Tipo de API puedes seleccionar si lo
que buscas es una declaracin, constantes o tipos, escribes el nombre o parte
del nombre de la API que buscas y le das doble clic a esta API en Elementos
disponibles. De ah la puedes copiar a tu programa.
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Dim Rep
Esto en un modulo:
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal
hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As
Long, ByVal wFlags As Long) As Long
Y esto en el formulario:
Copiar un archivo
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As
String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Dim Copiar As Long
En esta API, el ultimo parmetro ",1" puede ser cambiado por cero "0" para que
sobrescriba al archivo de destino, si ya existe.
Funciones
Con Visual Basic es muy fcil hacer ciertas cosas que no son muy obvias gracias a sus
funciones; las funciones son bloques que cdigo que siempre devuelven uno o varios
valores, entiendes esto?, pues yo hace mucho no lo entenda, y si estas en las mismas
aqu te va:
Ya no ms carreta, aqu van los ejemplos y usos de algunas funciones internas de VB:
Val
Convierte un dato cualquiera a numrico, si no se puede (por decir si aplicamos Val a
"ABC123") generara un error. Utiliza Val para hacer operaciones con cajas de texto.
Ejemplo:
txR = Val(Tx1.Text) + Val(Tx2.Text)
CDbl
Permite convertir y manipular nmeros reales (casi igual que Val)
Ejemplo:
txR= CDbl(Tx1.Text) * CDbl(Tx2.Text)
Str
Hace todo lo contrario de Val, pero no genera error.
Ejemplo:
txID.Text = Str(Num)
Len
Devuelve la longitud de un texto
Ejemplo:
LongText = Len(Text1.Text)
Int
Devuelve un valor entero redondeado de un valor
Ejemplo:
Numero = 15,8
NumEntero = Int(Numero) 'Devuelve 16
Fix
Devuelve la parte entera de un nmero
Ejemplo:
Numero = 15,8
NumEntero = Fix(Numero) 'Devuelve 15
Rnd
Devuelve un numero aleatorio entre un rango de nmeros.
Ejemplo:
Randomize
Valor = Int((100 * Rnd) + 1)
Manos a la obra
Selecciona al mismo tiempo los 2 controles Image y pon sus propiedades Left =
0 y Top = 0. Quedaran una sobre la otra. Debe quedar Face1 encima, si no
es as, has click derecho sobre Face2 y elige Enviar al fondo. Para poder
ajustar el tamao del control, coloca a True la propiedad Strech de los
Image
Coloca una Etiqueta (Label) sobre los Image. Colcale por nombre
lbCaption; pon su propiedad BackStyle = 0 Transparent; escribe algo de
texto en su propiedad Caption que ser lo que salga por defecto cuando lo
utilices, por ejemplo un botn de comando dice Command1. Puedes poner
lo que quieras. Desde su propiedad Font pon su Caption en negrita.
Ajusta el tamao de la etiqueta para que quede igual al tamao de los Image.
Ahora copia este cdigo, que permitir que nuestro control se comporte como
un botn de comando cuando se hace click sobre el.
Face1.Top = 0
Face1.Left = 0
Face1.Height = UserControl.Height
Face1.Width = UserControl.Width
Face2.Top = 0
Face2.Left = 0
Face2.Height = UserControl.Height
Face2.Width = UserControl.Width
lbCaption.Top = 125
lbCaption.Left = 0
lbCaption.Height = UserControl.Height
lbCaption.Width = UserControl.Width
End Sub
Para crear las propiedades y eventos del control usaremos el Asistente para
interfaz de control Activex.
Has click en el men Complementos > Administrador de Complementos y
vamos a elegir de all "asistente para interfaz de controles activex"
Para probarlo cierra todas las ventanas del proyecto Control Activex (si estn
abiertas no se puede probar) y en el cuadro de herramientas del proyecto
estndar del grupo de proyectos debe aparecer un nuevo control.
Para usar este control en otro proyecto o programa que disees, debes
compilarlo, has click en el men Archivo > Generar
NombreProyectoControlActivex.ocx
Todas las
palabras deben
llevar mayscula
inicial, nunca
pongas todo el
texto en
MAYSCULAS o
todo en
minsculas
Los botones
tienen el mismo
tamao (ancho y
largo)
El tamao de la
ventana debe ser
adecuado (ni muy
grande ni muy
pequeo)
No hagas esto:
Esto Apesta !
No combines
diferentes tipos de
letras de esta manera
3. Los mens deben ser escritos con mayscula inicial en todas las palabras
menos en preposiciones como y, de, a Etc. No olvides los respectivos
ShortCuts y atajos de Alt.
Puedes mejorar mucho tus IGU haciendo tus propios botones, contenedores,
textbox y otros con la ayuda de PhotoShop, Corel u otro editor de imgenes o
usando OCX ya listos (que consigues en internet) con skins para aplicar a tus
programas en VB
sonido (Beep) al pasar el mouse por encima del botn que hemos agregado al
Form1, pero antes copia y pega esto:
Con la ayuda de un buen editor de Audio puedes crear los sonidos que quieras
y usarlos con este codigo !!!
Optimizar la Programacin
Consejos Tericos
5. Hacer programas es como hacer msica, sin inspiracin " pailas !"
Consejos Prcticos
4. Depurar el Cdigo
Depurar el cdigo consiste en corregir o eliminar los errores que se
producen en este, no es recomendable acumular los errores, en el
momento que se van presentando hay que ir depurndolos. Se pueden usar
los Puntos de Interrupcin para entender paso a paso como corre o se
ejecuta un cdigo o procedimiento. Ejemplo:
Los puntos de interrupcin (los puntos rojos) indican la lnea de cdigo que
se interrumpir en su ejecucin, al interrumpirse podemos conocer el
estado de las variables con solo poner el mouse y ver el ToolTipText de una
variable as:
La lnea amarilla es
la lnea donde se
encuentra
actualmente la
interrupcin.
Para colocar uno o varios puntos de interrupcin solo hay que hacer click
en el lugar donde aparece en la imagen el punto rojo.
Sinceramente creo que este el curso que mas tiempo me ha llevado realizar, la
primera edicin la publique creo que a principios de 2007 y desde entonces
(tan solo 3 meses despus) he estado escribiendo esta segunda y ultima
edicin (al menos por mi parte, programando en serio con VB llego a su final).
Que cruel y tan solo en la segunda edicin
Mi inters por ensear a otros lo que mas me gusta naci de una curiosidad,
hace mucho tiempo encontr gracias a Google la Web del Programador, me di
cuenta que la pagina era hecha por muchos, con todos sus aportes, tutoriales,
cursos y cdigos que estn a disposicin de cualquiera gratuitamente. Quise
vincularme de alguna manera a esta web y para probar escrib un manual muy
sencillo (y hasta estpido) de cmo poner una ventana Splash a un programa
(era tan sencillo que todo lo que contena ocupaba tan solo una hoja).
Para empezar al los pocos das de enviarlo a la web del programador recib un
mensaje de Xavi (uno de los duros de esta web) FELICITNDOME. Al principio
Ahora si.. Pongo a continuacin los nombres de todos aquellos con quienes de
una u otra manera estoy agradecido por su contribucin a mi formacin como
Programador:
Javier Miranda, Elkin Lopez, Eydy, Elkin Santis, Marcela Ardila, Gloria
Duque, Diego Escobar, Luis Arrieta, Guillermo Som (mi maestro, aunque no
se si l sepa), lawebdelprogramador.com, lawebdeprogramacion.com,
vbexperto.com, islaprogramacion.com, elguruprogramador.com.ar,
portalvb.com, elguille.info, Google.com