funciones basicas en visual basic

73
7/16/2019 Funciones Basicas en Visual Basic http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 1/73 ódigo fuente de ejemplo enviado por Leandro Ascierto que muestra como modificar el estilo de un control Progressbar utilizando la función del Api SetWindowLong con el estilo PBS_MARQUEE, y luego enviando el mensaje PBM_SETMARQUEE mediante la función SendMessage para que la barra de progreso muestre una animación en forma de marquesina, útil para poder mostrar un progreso de carga guando no se sabe el valor inicial y final. Nota. Este ejemplo funciona perfectamente con los temas clásicos de windows XP : Verde oliva, el plateado y el Azul. Pero con otros temas o aplicaciones que modifican los estilos del sistema , como por ejemplo el conocido Bricopack para usar el tema de Windows Vista, no funciona, y la animación no se visualiza, por lo menos usando esta forma. No funciona

Upload: pablo-andres-olguin-rodriguez

Post on 30-Oct-2015

369 views

Category:

Documents


3 download

TRANSCRIPT

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 1/73

ódigo fuente de ejemplo enviado por Leandro Ascierto que muestra como modificarel estilo de un control Progressbar utilizando la función del Api SetWindowLong con elestilo PBS_MARQUEE, y luego enviando el mensaje PBM_SETMARQUEE mediante lafunción SendMessage para que la barra de progreso muestre una animación en formade marquesina, útil para poder mostrar un progreso de carga guando no se sabe elvalor inicial y final.

Nota. Este ejemplo funciona perfectamente con los temas clásicos de windows XP :Verde oliva, el plateado y el Azul. Pero con otros temas o aplicaciones que modificanlos estilos del sistema , como por ejemplo el conocido Bricopack para usar el tema deWindows Vista, no funciona, y la animación no se visualiza, por lo menos usando estaforma.

No funciona

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 2/73

 

He buscado bastante para poder hacerlo funcionar, y no he encontrado la forma depoder arreglar el problema, y buscando en internet, hay varias páginas en inglés quetambién comentan este problema.

Realmente es una lástima que no se pueda utilizar el ejemplo por este motivo, aunquese me ocurre una posible solución, que no sería la mejor, pero por lo menos esfuncional, y es desactivar el tema de XP. Pero no desactivar el tema a toda laaplicación ( ventana del formularios y el resto de controles), si no solo al Progressbar.Haciendo esto, la barra no tomaría el estilo, pero por lo menos se mostraría el efecto,y mantendría el tema a los demás controles.

Es decir se visualizaría de la siguiente forma :

El tema de vista que no funcionaba se vería

También funciona con el estilo clásico de windows

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 3/73

 

Otra posible solución que no he probado, es al iniciar el programa, que se compruebesi el tema actual del sistema son los default de XP. si es así, utilizarlo sin hacer lallamada aSetWindowTheme ya que funcionaria correctamente, si no, desactivar eltema al control Progressbar. ( Nota, Creo que para averiguar los temas se usa lafunción OpenThemeData y algunas otras, pero no lo aseguro, pero hay muchasinformación en internet sobre las funciones de la librería uxtheme.dll)

Ejemplo : 

  Colocar una barra de progreso ( la versión 5 )

  Compilar el programa

  Colocar el archivo Manifest junto al exe

Código fuente

Texto planoImprimir 

1. Option Explicit 2. 

3.  ' ---------------------------------------------------------------------------------- 

4.  ' -- Autor : Leandro Ascierto 5.  ' --

Descripción : Usar una barra de progreso animada mediante elApi de windows 

6. 7.  ' Nota : Deberás compilar el proyecto para poder pr

obar el efecto, y tener el archivo Manifest junto al ejecutable 8.  ' -------------------------------------------------------------------------

--------- 9. 10. Private Const GWL_EXSTYLE = (-20) ' --

mensaje que requiere GetWindowLong 11. 12. Private Const WM_USER As Long = &H40013. Private Const PBS_MARQUEE As Long = 8 ' --

Estilo del progressbar ( Marquesina ) 14. Private Const PBM_SETMARQUEE = (WM_USER + 10) ' -- Mensaje -

Para SendMessage 15. 16. Const GWL_STYLE = (-16)17. 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 4/73

18. ' -- Apis para tomar la apariencia de windows 19. Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long)

As Long 20. Private Declare Sub InitCommonControls Lib "Comctl32" ()21. 22. ' -- Modificar el estilo del progressbar 23. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" 

(ByVal hwnd As Long, ByVal nIndex As Long) As Long 24. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 

25. 26. ' ' Para manipular el Progressbar 27. Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" 

(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 

28. 29. ' Para desactivar el tema de windows (Solo para el control Progress, no par

a todo la ventana y resto de controles) 30. Private Declare Function SetWindowTheme Lib "uxtheme.dll" (ByVal hwnd As Lo

ng, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long 31. 32. 33. Private Sub Form_Initialize()34.  Call SetErrorMode(2)35.  Call InitCommonControls36. End Sub 37. 38. Private Sub Form_Load()39. 40.  Dim Ret As Long 41.  Ret = SetStyleMarquee(ProgressBar1, 50)42.  If Ret = False Then 43.  MsgBox "No se pudo aplicar el estilo" 44.  End If 45. End Sub 46.

 47. 48. ' -- Velocity : Velocidad de animación del progreso 49. Public Function SetStyleMarquee(ProgressBar As ProgressBar, Velocity As Lon

g) As Boolean 50.  With ProgressBar51.  Call SetWindowTheme(.hwnd, StrPtr(" "), StrPtr(" "))52.  SetWindowLong .hwnd, GWL_STYLE, GetWindowLong(.hwnd, GWL_STYLE) Or 

PBS_MARQUEE53.  SetStyleMarquee = SendMessageLong(.hwnd, WM_USER + 10, 1, Velocity)

 54.  End With 55. End Function 

Este es un programa o utilidad que sirve para poder facilitar ( o por lo menos esa es laintensión ) en la creación y elección de losíconos que se utilizarán en los controles delos programas realizados en visual basic 6.0.

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 5/73

El programa lo que permite hacer es, convertir o exportar múltiples archivos formatoPNG o formato ICO (incluidos de 32 bits ) a formato BMP para poder leerlos desde vb.

Al exportar las imágenes BMP, se le puede indicar los tamaños ( 16, 32, 48, 64 pixelesetc ..) y un color de fondo o color de máscara para la imagen. Ese color de máscaraluego se debe indicar en el image List que estará enlazado con los controles, porejemplo de un Treeview, ListView, barra de herramientas etc .., o en la propiedadMaskColor del control que tendrá la imagen.

Descargar 

Opciones del programa

  Se puede ver un thumbnail de los archivos

  Generar los Bmp en las siguientes dimensiones : 13, 16, 20, 22, 24, 32, 48, 64,

128 y 256 pixeles.

  Antes de exportar, se puede visualizar una vista previa de como quedarán los

íconos en un control treeview, ListView, ToolBar y en un menú. Con lo cual no

es necesario exportar, crear un proyecto nuevo, cargar las imagenes etc ...

  Se pueden agregar imágenes desde un cuadro de diálogo, o arrastrar los ico y

png desde windows, y también se puede arrastrar un gráfico PNG desde una

página web.

Capturas de pantalla

Formato .ICO

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 6/73

Formatos. PNG

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 7/73

Vista previa en un formulario para ver como quedan antes de exportar.

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 8/73

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 9/73

Notas

Drag Drop 

El programa, tiene un menú con direcciones de ejemplo o demo para poder cargar unapágina de íconos y arrastrar los archivos desde la ventana del navegador hacia lapantalla principal del programa ( hacia el listbox). Al arrastrar una imagen, debe ser ladirección del archivo PNG, ya que en algunas web el thumbnail de la imagen apuntaa una página html y no se cargará. Por ejemplo si arrastramos desde la webIconArchive.com por decir una, cada sección contiene un thumbnail del gráfico , eneste caso podemos arrastrar el enlace de la imagen para que se cargue correctamente,

como muestra la siguiente captura de pantalla ( o navegar hasta la imagen y luegorealizar el drag drop)

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 10/73

 

Color de fondo 

Con algunos gráficos, el borde no queda bien, es decir se puede notar un contorno conel color utilizado para el color de máscara. Si la imagen se utiliza en un control quetendrá el backcolor igual al MaskColor, no habrá problema y quedará bien, pero no esel caso por ejemplo de las barras de herramientas. Esta imagen muestra esteproblema

(Se visualiza bien ya que el color de máscara es blanco y el color de fondo del listviewtambién es blanco)

Se visualiza mal en el ToolBar

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 11/73

 

Exportar íconos 

Al exportar los íconos, si exportamos en un tamaño en el cual el archivo .ICO no locontiene dentro, ese tamaño se verá mal , por ejemplo como muestra esta imagen, enel que el .ICO contiene las siguientes medidas : 16, 32, 48, 128 . Entonces siindicamos la medida 24 pixeles, o 22 , 40 etc .. que no lo contiene quedarádistorsionado

( Exportado a 24 pixeles )

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 12/73

 

En cambio si indicamos cualquiera de las medidas que contiene el fichero, sevisualizará bien

( Este es el mismo archivo .ICO anterior pero exportado en BMP de 48 pixeles que si lo

contiene dentro )

Lo mismo para los PNG, por ejemplo si exportamos un PNG de 32 Pixeles a un tamañosuperior, al ampliar la imagen se verá mal

Exportado a 48 pixeles

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 13/73

 

Referencias 

El proyecto no necesita ninguna referencia o activex, lo único que utiliza es el Ocx devb Microsoft windows Common Controls.

Actualizado

Este es el mismo proyecto pero se le agregó la opción para poder también arrastrararchivos .ICO desde una página web, ya que el anterior solo podía arrastrar pngs

Para probar esta opción, se puede arrastrar la url del archivo hacia el control listbox yel programa visualizará una barra de progreso con la descarga . El .ico y los pngs sedescargan a la carpeta tempFiles

Descargar 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 14/73

 

imple Menú lateral

Este ejemplo muestra una forma muy simple de poder crear un menú lateral deopciones por medio de tabs.

El ejemplo es muy sencillo, no utiliza clases y muy código, por este motivo, solo es

posible usarlo para menús que tengan pocas opciones en cada submenú y además quesea fijo, es decir que no se necesite redimensionar y achicar el control, por ejemplo alredimensionar la ventana , ya que no contiene implementada ningún código paradesplegar botones de Scroll para los submenu.

Nota. Los controles se redimensionan en tiempo de ejecución, lo único para que nogenere errores al agrega mas menús o tabs, es que los picturbox que hacen deSubMenu deben tener el indice del array consecutivo ( PicMenu(0), PicMenu(1) etc ..) ,

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 15/73

pero no ( PicMenu(0), PicMenu(14), PicMenu(84)) por que daría error en el bucle queque los redimensiona. Lo mismo para los botones

Descargar ejemplo 

Otro ejemplo usando controles de usuario para mejorar la apariencia yestilos

Este es el mismo ejemplo, pero usando un control de usuario para usar los tabs conskins y estilos varios. También podés usar el botón que quieras si no te gusta ese yaque es muy simple cambiarlos. En Planet Source code y en la web hay varios otroscontroles y muy buenos para descargar : Planet source code 

Descargar ejemplo 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 17/73

 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 18/73

 

Este es un módulo de clase para vb6 que muestra una forma de crear un cuadro dediálogo de windows para abrir archivos, y poder visualizar películas y videos dentro dela ventana como una vista previa.

El código fuente para reproducir los archivos es de un ejemplo creado por JasonHensley, que contiene varias funciones para poder ejecutar comandos y manipular losvideos con la función de windows MciSendString

Descargar

>> Descargar código fuente 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 19/73

Créditos 

  Paul Caton : Código para implementar el Hook del cuadro de diálogo dentro

del módulo de clase

 Jason Hensley : Todas las funciones y rutinas que usan mciSendString parareproducir los videos

  Giorgio Brausi : Código para hacer el hook al CD de windows

Captura de pantalla

Esta es la ventana para reproducir la película. Solo contiene las opciones principales:para reproducir, hacer pausa y reiniciar.

Y una opción para ver información básica del video:

  El nombre del archivo

  El tipo, por ejemplo archivo Avi , archivo Flash etc ...

  La cantidad de frames

  Los cuadros por segundo

  La duración total del video.

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 20/73

 

Descripción.

El módulo de clase se puede utilizar , tanto para ver la película en el cuadro de diálogo,como también usar otra instancia y utilizarla para acceder a los comandos del MCI yreproducir los archivos desde el formulario, por ejemplo en un picbox, control Frame oen una ventana.

Para usarlo con el cuadro de diálogo

Para el CommonDialog contiene un método o función ( ShowDialog ) con dosparámetros principales

sPath = ShowDialog( hWndOwner as Form , lFilters as EnumFilter)

  hWndOwner : Formulario actual del programa que usa el cuadro de diálogo

  lFilters : Los filtros. Se pueden agregar mas o modificar en la función Filter2 y

en el Enum enumFILTER  

Nota. Si se quiere pasar un filtro personalizado, primero hay que establecer el valoren customFilter 

.CustomFilter = "Archivos x" & Chr(0) & "*.extension delarchivo"

.Width = 100

Text1 = .ShowDialog(Me, eCustom)

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 21/73

o varias extensiones, por ejemplo esto solo muestra los tipos FLV y AVI

.CustomFilter = "Archivos de video Flash y Avi" & Chr(0) &"*.flv;*.avi"

Text1 = .ShowDialog(Me, eCustom)

También contiene un evento para recuperar algunos datos del archivo seleccionado,por ejemplo el tipo, la duración, y el ícono asociado al archivo

Private Sub cDlgMoviePreview_GetMoviePropertys( _

ByVal sFileName As String, _

ByVal sFileType As String, _

ByVal sFrameRate As String, _

ByVal sLenghtMilisec As String, _

ByVal sTotalLenght As String, _

smallIcon As stdole.Picture, _

NormalIcon As stdole.Picture, _

hIcon As Long)

End Sub

Algunas funciones del ejemplo de Jason Hensley para reproducir:

CloseMovie, STopMovie, PlayMovie, PauseMovie

Cierra el dispositivo MCI, y los demás para detener, comenzar y pausar la reproducción

FileName

Ruta del archivo a reproducir

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 22/73

openMovieWindow

Método para poder abrir el video e indicar donde reproducirlo, por ejemplo en el form oen un control picture, etc ..

cm.openMovieWindow unPicture.hwnd, "child"

También se puede usar para reproducir en una ventana nueva. Se debe pasar en elsegundo parámetro el valor "popup" u "overlapped".

sizeLocateMovie

Para poder indicar las dimensiones y posición de la película (los valores deben ser enpixeles).

Por ejemplo si se quiere ajustar la película al tamaño de un control picBox, es decir elancho y alto pero no escalar:

Set cm = New cDLGMov

With cm

.FileName = "c:\video.flv"

Call .openMovieWindow(Picture1.hwnd, "child")

Call .sizeLocateMovie(0, 0, _

Picture1.ScaleX(Picture1.ScaleWidth, Picture1.ScaleMode,vbPixels), _

Picture1.ScaleY(Picture1.ScaleHeight, Picture1.ScaleMode,vbPixels))

Call .playMovie

End With

Este función permite ajustar la película, es decir escalar y redimensionar al tamaño dela ventana.

Private Sub PicBox_Resize()

' Ancho y alto del video 

Dim lWidthMov As Long

Dim lHeightMov As Long

Dim HScale As Double

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 23/73

Dim VScale As Double

Dim MyScale As Double

Dim lWidth As Long

Dim lHeight As Long

Dim x As Long

Dim y As Long

'Enviar las variables para obtener la dimensión 

Call extractDefaultMovieSize(lWidthMov, lHeightMov)

' verificar que los valores no sean 0 por si hubo error 

If lWidthMov > 0 And lHeightMov > 0 Then

With PicBox

' Calcular escala HScale = ((.Width / Screen.TwipsPerPixelX) / lWidthMov)

VScale = ((.Height / Screen.TwipsPerPixelY) / lHeightMov)

MyScale = IIf(VScale >= HScale, HScale, VScale)

' ancho y alto final 

lWidth = lWidthMov * MyScale

lHeight = lHeightMov * MyScale

' Calcular la posición izquierda y Top 

x = ((.Width / Screen.TwipsPerPixelX) - lWidth) / 2

y = ((.Height / Screen.TwipsPerPixelY) - lHeight) / 2

' redimensionar y escalar la pelicula 

Call sizeLocateMovie(x, y, lWidth, lHeight)

End With

End If

End Sub

Si se quiere reproducirlo a la mitad del tamaño del picBox y en forma centrada

Dim lWidth As Long

Dim lHeight As Long

Dim x As Long

Dim y As Long

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 24/73

With Picture1

' Ancho y alto 

lWidth = (.ScaleX(.ScaleWidth, .ScaleMode, vbPixels))

lHeight = (.ScaleY(.ScaleHeight, .ScaleMode, vbPixels))

' x e y para centrar 

x = (lWidth - (lWidth / 2)) / 2

y = (lHeight - (lHeight / 2)) / 2

End With

Set cMov = New cDLGMov

With cMov

' indicar ruta del video 

.FileName = "c:\video.flv"' indicar donde reproducir y el modo 

Call .openMovieWindow(Picture1.hwnd, "child")

' Establecer posición y dimensión 

Call .sizeLocateMovie(x, y, lWidth / 2, lHeight / 2)

' play 

Call .playMovie

End With

extractCurrentSizeMovie

Obtener dimensiones del video ( no es el valor real de la película, si no el establecidoen la ventana de reproducción). Se puede pasar por referencia los valores (nWidth ynHeight para obtener el ancho y alto), por ejemplo

With cm

Dim lWidth As Long, lHeight As Long.FileName = "c:\video.flv"

Call .openMovieWindow(Me.hwnd, "child")

.playMovie

' pasar variables 

Call .extractCurrentMovieSize(0, 0, lWidth, lHeight)

MsgBox lHeight

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 25/73

MsgBox lWidth

End With

extractDefaultMovieSize

Esta función sirve para devolver el ancho y alto real del video. Si se cambia lasdimensiones, la función igual devuelve el tamaño del video real, por mas que secambie desde el código. Se deben pasar dos variables por referencia para obtener lasdimensiones. Ejemplo

Dim lWidth As Long, lHeight As Long

.FileName = "c:\video.flv"

Call .openMovieWindow(Me.hwnd, "child")

' cambiar dimensiones 

.sizeLocateMovie 0, 0, 400, 300

' reproducir 

.playMovie

' Pasar variables para obtener las dimensiones 

Call .extractDefaultMovieSize(lWidth, lHeight)

' Muestra el ancho y alto original por mas que se hayacambiado en 'sizeLocateMovie' 

MsgBox lHeight

MsgBox lWidth

forwardByFrames , forwardByMS, forwardBySeconds,rewindByFrames, rewindByMs, rewindBySeconds

Para adelantar o rebobinar el video de tres modos: por milisegundos, por segundos opor el número de cuadros que se quiera .

Nota, con la función forwardByMS y FordwardBySeconds, si se quiere adelantar lapelícula pasando como valor 1000 milisegundos o 1 segundo , no se porque motivo lafunción falla y no adelanta dicho valor. Si se pasa un valor igual o superior a 2000,parece funcionar correctamente. ( Igual para las de rebobinar )

Por ejemplo esto adelanta los cuadros cada 2000 milisegundos y lo coloca en pausapara visualizar cuadro por cuadro

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 26/73

With cm

' avanzar dos segundos 

.forwardByMS 2000

.pauseMovie

End With

Esto adelanta cada 5 segundos

With cm

' avanzar 

Call .forwardBySeconds(5)

Call .pauseMovie ' detener para visualizar cuadro por cuadro

Me.Caption = "Posición actual :" & CStr(.getPositionInSec)End With

Este ejemplo muestra como crear una cuadrícula de imágenes.

En el ejemplo se cargan los gráficos mediante DragDrop. El control origen que contienelos gráficos es un ListView que visualiza las imágenes, similar a la opción de vista enminiatura del explorador de windows, aunque el control origen podria ser cualquierotro que contengan implementados los eventos de Drag (DragDrop, DragOver), ypueda arrastrar el path de la imagen, o una propiedad Picture ( parámetro Source delevento DragDrop, que es la referencia al control , y aunque no despliegue la lista de

propiedades y métodos se puede acceder sin problemas ).

El control destino, es decir donde se colocan los gráficos, es una cuadrícula con celdas,y para este caso se utilizó un control Flexgrid, ya que este posee la propiedadCellPicture para poder asignar la imagen en la celda activa ( Propiedad Row y Colactual del Grid )

Nota. El ejemplo no tiene una utilidad concreta y está realizado en base a este otrocódigo, pero podría servir como idea para alguna opción de algún programa quenecesite implementar algo similar, aunque no se me ocurre ninguna. O también paraver el funcionamiento básico de la propiedad CellPicture, MouseCol, MouseRow del Gridy algunas otras. Incluso otra opción, podría ser implementado para crear la cuadículade imágenes, sin todo el código de Drag. Aunque la grilla y celdas de imágenes sepodría crear calculo de muchas otras formas, por ejemplo con una matriz dePictureBox, esta opción de utilizar un Flexgrid podría dar otras opciones que seríanmas difíciles de implementar con otros controles, y de este modo aprovechar todas laspropiedades, eventos y métodos de los Flexgrid.

También , otra cosa importante, es que el código está realizado todo en el formularioprincipal, ya que es algo simple, lo único que pemite hacer el ejemplo como se dijo esinsertar los gráficos en las celdas. Por eso , si se añaden opciones extras, creo que una

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 27/73

buena opción podria ser crear una clase o control. Por ejemplo se podría de esta formaañadir propiedades, crear eventos personalizados, controlar mejor las validaciones delos datos, etc .., ya que asi como está realizado es bastante limitado.

Descargar código fuente 1 

Descargar código fuente 2 

Captura del formulario de ejemplo

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 28/73

 

Código fuente ( ListView + Hirarchical Flexgrid + una carpeta de imágenes en elApp.path )

Texto planoImprimir 

1.  Option Explicit 2. 3.  ' -------------------------------------------------------------------------

---------- 4.  ' \\ --

Descripción : Crear cuadricula de gráficos ( utilizando un GRID ) 5.  ' \\ -- Autor : Luciano Lodola --

http://www.recursosvisualbasic.com.ar/ 6.  ' \\ --

Derechos : Este código/ejemplo es completamente libre, se puede utilizar publicar y modificar sin ninguna restricción: 

7.  ' \\ --En caso de publicar en alguna web, o un programa, (aunqu

e no es necesario), se agradece mensionar el o los autores que crearon el código 

8.  ' ----------------------------------------------------------------------------------- 9. 10. ' -- Declaraciones Apis 11. ' -------------------------------------------------------------------------

--------------------------------------------------------------------- 12. Private Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitl

eA" (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer 

13. 14. ' -- Declaraciones de variables 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 29/73

15. ' ---------------------------------------------------------------------------------------------------------------------------------------------- 

16. Private lPrevRow As Long  ' --Almacenar la celda anterior 

17. Private lPrevCol As Long 18. Private lCurrentCol As Long  ' --

Almacenar la Celda actual 

19. Private lCurrentRow As Long 20. 

21. ' -- Declaraciones de constantes 22. ' -------------------------------------------------------------------------

--------------------------------------------------------------------- 23. Private Const BACKCOLOR_CELL As Long = vbYellow ' --

Color de la celda activa 24. Private Const BACKCOLOR_CELL2 As Long = vbCyan ' --

Color de la celda activa cuando contiene una imagen 25. Private Const TEXTCOLOR_CELL As Long = vbBlue ' --

Color del texto de la celda activa 26. Private Const IMAGE_WIDTH_HEIGHT As Integer = 4827. Private Const PADDING As Integer = 30 ' --

Dos pixeles de relleno 28. 29. 30. '--------------------------------------------------------------------------

---------------------------------------------------------------------- 31. ' \\ -- Devoler el nombre de archo de las imágenes ( Sin la ruta -

Para el texto del item del listview) 32. '--------------------------------------------------------------------------

---------------------------------------------------------------------- 33. Private Function pvGetFileNameFromPath(sPath As String) As String 34.  Dim sBuffer As String 35.  sBuffer = String(255, 0)36.  GetFileTitle sPath, sBuffer, Len(sBuffer)37.  pvGetFileNameFromPath = Left$(sBuffer, InStr(1, sBuffer, Chr$(0)) -

1)38. End Function 39.

 '------------------------------------------------------------------------------------------------------------------------------------------------ 

40. ' \\ -- Volcar la colección de archivos en el Listview 41. '--------------------------------------------------------------------------

---------------------------------------------------------------------- 42. Sub pvLoadListview(ListView As ListView, imageList As imageList, colFiles A

s Collection, lImageHeight As Integer, lImageWidth As Integer)43. 44. On Local Error GoTo Error_Handler45. 46.  ' -- Setear Listview --

Quitar el enlace de los íconos para que se pueda eliminar el ImageList 47.  With ListView48.  Set ListView.Icons = Nothing 49.  Set ListView.SmallIcons = Nothing 

50.  .ListItems.Clear51.  End With 52.  ' -- Setear ImageList --

Eliminar imágenes previas, y asignar las dimensiones ( Ancho y alto) 53.  With imageList54.  .ListImages.Clear55.  .ImageHeight = lImageHeight56.  .ImageWidth = lImageWidth57.  End With 58.  ' -- Recorrer colección de archivos 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 30/73

59.  Dim xFile As Variant 60.  For Each xFile In colFiles61.  ' --

Cargar el gráfico al ImageList con LoadPicture y también asignar el Key para el enlace con el ListView 

62.  imageList.ListImages.Add , xFile, LoadPicture(xFile)63.  ' -- Enlazar el LV con la lista de gráficos 

64. 

If ListView.Icons Is Nothing Then Set ListView.Icons = imageList65.  ' -- Agrgar el gráfico al Listview 66.  ListView.ListItems.Add , xFile, pvGetFileNameFromPath(CStr(xFile)),

xFile67.  Next 68. ' -- Error 69. Exit Sub 70. Error_Handler:71. MsgBox " Número de Error:" & Err.Number & vbNewLine & Err.Description, vbCr

itical72. 73. End Sub 74. '--------------------------------------------------------------------------

---------------------------------------------------------------------- 75. ' \\ -- Inicio -- Configurar controles e inicializar variables 76. '--------------------------------------------------------------------------

---------------------------------------------------------------------- 77. Private Sub Form_Load()78.  On Local Error GoTo Error_Handler79.  ' -- Preparar listview ( ) 80.  With ListView181.  ' -- Alineación superior de los items/Gráficos 82.  .Arrange = lvwAutoTop83.  ' -- Ruta del Archivo de ícono 84.  On Error Resume Next 85.  .DragIcon = LoadPicture(App.Path & "\imagenes\Sign 04.ico") 'LoadPi

cture("C:\WINDOWS\cursores\harrow.cur") 86.  On Error GoTo 087.  End With 

88. 

' -- Setear GRid 89.  Call pvConfigGrid90.  ' --

Cargar gráficos en el listview ( Pasar los controles, la lista de archivosy las dimensiones ) 

91.  Call pvLoadListview(ListView1, ImageList1, PvGetColImages(App.Path & "\imagenes\*.gif"), IMAGE_WIDTH_HEIGHT, IMAGE_WIDTH_HEIGHT)

92.  ' -- Errores 93.  Exit Sub 94. Error_Handler:95. MsgBox Err.Description, vbCritical, "Error en FormLoad" 96. End Sub 97. '--------------------------------------------------------------------------

---------------------------------------------------------------------- 98. ' \\ -- Función que devuelve una colección de imágenes 99. '--------------------------------------------------------------------------

---------------------------------------------------------------------- 100.  Private Function PvGetColImages(sPattern As String) As Collection101.  Dim colFiles As New Collection102.  Dim sFileName As String 103. 104.  Set colFiles = New Collection105. 106.  sFileName = Dir(sPattern)107. 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 31/73

108.  While sFileName <> "" 109.  colFiles.Add App.Path & "\imagenes\" & sFileName, App.Path &

 "\imagenes\" & sFileName110.  sFileName = Dir111.  Wend 112.  Set PvGetColImages = colFiles113.  Set colFiles = Nothing 

114. 

End Function 115.  ' ---------------------------------------------------------------------------------------------- 

116.  ' \\ --Evento DragDrop del Grid ( Cuando finaliza la operación de arrastrar y olocar de los datos ) 

117.  ' ---------------------------------------------------------------------------------------------- 

118.  Private Sub MSHFlexGrid1_DragDrop(Source As Control, x As Single, yAs Single)

119.  ' -- Obtener índice de fila e índice de columna 120.  Dim lColIndex As Long 121.  Dim lRowIndex As Long 122.  lRowIndex = pvGetRowIndex(MSHFlexGrid1)123.  lColIndex = pvGetColIndex(MSHFlexGrid1)

124. 125.  With MSHFlexGrid1126.  ' -- Comprobar que no sea una celda inválida 127.  If lColIndex <> -1 And lRowIndex <> -1 Then 128.  ' --

Establecer fila y columna activa para asignar el dato en la celda 129.  .Col = lColIndex130.  .Row = lRowIndex131.  ' -- Insertar la imagen den la celda activa 132.  Set .CellPicture = ImageList1.ListImages(Source.Selected

Item.Key).Picture133.  ' -- Centrar el contenido de la celda 134.  .CellPictureAlignment = 4135.  ' -- restaurar el color y otras propiedades 

136. 

.CellBackColor = .BackColor137.  End If 138.  End With 139.  End Sub 140.  ' ------------------------------------------------------------------

-------------- 141.  ' --

\\ Devolver el índice de la columna donde está ubicado el puntero con la propiedad MouseCol del Grid 

142.  ' -------------------------------------------------------------------------------- 

143.  Private Function pvGetColIndex(objFlex As Object) As Long 144.  pvGetColIndex = MSHFlexGrid1.MouseCol145.  End Function 146.  ' ------------------------------------------------------------------

-------------- 147.  ' --

\\ Devolver el índice de la Fila donde está ubicado el puntero con la propiedad MouseRow del Grid 

148.  ' -------------------------------------------------------------------------------- 

149.  Private Function pvGetRowIndex(objFlex As Object) As Long 150.  With MSHFlexGrid1151.  ' -- omprobar valores de fila no válida 152.  If .MouseRow = 0 And .FixedCols > 0 Then 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 32/73

153.  pvGetRowIndex = -1154.  Else 155.  pvGetRowIndex = .MouseRow156.  End If 157.  End With 158.  End Function 159.  ' ------------------------------------------------------------------

-------------- 160.  ' -- \\ Setear propiedades del Grid 161.  ' ------------------------------------------------------------------

-------------- 162.  Private Sub pvConfigGrid()163. 164.  Dim i As Integer 165.  ' --

Valores iniciales de las variables que almacenan los índices 166.  lPrevRow = -1167.  lPrevCol = -1168.  ' -- Configurar el Grid 169.  With MSHFlexGrid1170.  ' -- Agregar algunas columnas y filas 171.  .Cols = 4

172.  .Rows = 25173.  .FixedCols = 0174.  .FixedRows = 0175.  ' --

Añadir items en el Listbox y establecer el alto de las celdas con la propiedad RowHeight 

176.  For i = 0 To .Rows - 1177.  .RowHeight(i) = (IMAGE_WIDTH_HEIGHT * Screen.TwipsPerPix

elY) + PADDING * Screen.TwipsPerPixelY178.  .ColWidth(i) = (IMAGE_WIDTH_HEIGHT * Screen.TwipsPerPixe

lY) + PADDING * Screen.TwipsPerPixelX179.  Next 180.  End With 181.  End Sub 

182. 

' ---------------------------------------------------------------------------- 183.  ' \\ -- Comenzar el arrastre con el método Drag 184.  ' ------------------------------------------------------------------

---------- 185.  Private Sub Listview1_MouseDown(Button As Integer, Shift As Integer,

x As Single, y As Single)186.  Dim xLvItem As ListItem187.  With ListView1188.  ' --

Para poder seleccionar el item antes de realizar el Drag, 189.  ' --

si no está esto, se ignora el evento ItemClic hasta que se dispare el DragDrop 

190.  ' --

y no se puede seleccionar el item con el mouse, solo mediante teclado 191.  Set xLvItem = .HitTest(x, y)192.  If Not xLvItem Is Nothing Then 193.  ' -- Seleccionar 194.  xLvItem.Selected = True 195.  ' -- Comenzar el arrastre 196.  .Drag vbBeginDrag197.  End If 198.  End With 199.  End Sub 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 33/73

200.  ' ---------------------------------------------------------------------------- 

201.  ' \\ --Evento que ocurre Mientras se arrastran los datos y se mueve el mouse 

202.  ' ---------------------------------------------------------------------------- 

203.  Private Sub MSHFlexGrid1_DragOver(Source As Control, x As Single, y

As Single, State As Integer)204. 205.  Dim lCol As Long 206.  Dim lRow As Long 207.  ' -- Obtener Indices 208.  lRow = pvGetRowIndex(MSHFlexGrid1)209.  lCol = pvGetColIndex(MSHFlexGrid1)210.  ' --

Comprobar que no sea la misma celda, si es la misma salir para evitar el parpadeo 

211.  If lCurrentCol = lCol And lCurrentRow = lRow Then Exit Sub 212.  With MSHFlexGrid1213.  If lRow <> -1 And lCol <> -1 Then 214.  If lPrevCol <> -1 And lPrevRow <> -1 Then 215.  ' -- Restaurar celda 

216.  .Col = lPrevCol217.  .Row = lPrevRow218.  .CellBackColor = .BackColor219.  End If 220.  ' --

Cambiar y resaltar la celda activa ( texto y BackColor ) 221.  .Row = lRow222.  .Col = lCol223.  .CellForeColor = TEXTCOLOR_CELL224.  If .CellPicture = 0 Then 225.  .CellBackColor = BACKCOLOR_CELL226.  Else 227.  .CellBackColor = BACKCOLOR_CELL2228.  End If 

229. 

' -- Guardar valores para luego poder restaurar 230.  lPrevCol = lCol231.  lPrevRow = lRow232.  lCurrentCol = lCol233.  lCurrentRow = lRow234.  End If 235.  End With 236.  End Sub 237.  ' ------------------------------------------------------------------

---------------------------- 238.  ' \\ -- Posicionar y redimensionar el grid y el control de lista 239.  ' ------------------------------------------------------------------

---------------------------- 240.  Private Sub Form_Resize()241.  On Local Error Resume Next 

242.  With MSHFlexGrid1243.  .Move 10, 10, (Me.ScaleWidth / 2) - 20, Me.ScaleHeight -

20244.  ListView1.Move .Left + .Width + 10, 10, (Me.ScaleWidth / 2)

- 20, .Height245.  End With 246.  End Sub 

ecurso enviado por Ivan Paz, de un programita simple que permite dibujar mediante laherramienta Lapiz, tipo como lo hace el Paint de windows y otros programas de dibujo 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 34/73

 

Descargar código fuente 

Programa para pintar parecido al Mspaint

Autor del recurso : Helmuth Campos

Código fuente de una utilidad para pintar parecido al Mspaint, con varias opciones :

  permite hacer trazos continuos, de punto

  Invertir los colores de la imagen (negativo)

  Hacer goteras (hace el mismo efecto del negativo pero como mancha)  Rectángulos o cuadrados, también rellenos, círculos, también rellenos

  Abrir una imagen gráfica, guardarla, pegar desde, copiar la imagen al

portapapeles, pegarla del portapapeles, borrar la imagen

  Modificar los colores del trazo, especificar el tamaño del trazo Min 1 Max 10

Vista del programa

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 35/73

 

Descargar MsPaint vb 

MsPaint actualizado

Versión del programa actualizado enviado por Helmuth Campos , este tiene masfunciones y filtros que el de windows. Algunas de las opciones :

1.  Permite cortar una parte de una imagen , borrala, ponerle texto2.  Usar efecto de aerosol3.  Borrar una parte de la imagen

4.  Hacer flechas, elipces, circulos5.  Hacer curvas6.  Rotación de la imagen7.  Aplicar filtros8.  Zoom9.  14 efectos ( Blur, brillo, efecto de plegado, oscurecer, realzar, saturación,

nieve, otros)

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 36/73

 

Descargar 

Epaint - Editor de gráficos

Programa freeware open source muy bueno , creado en visual basic 6.0 ( con el códigofuente ) de un editor de imágenes y fotos

Tiene las siguientes opciones :

  Trabajar con múltiples gráficos al mismo tiempo

  Algunos efectos y filtros para la imagen que se está editado, por ejemplo Filp,

escala de grises etc...

  Seleccionar un área especifica del gráfico para recortarla, pintarla etc..

  cambiar el tamaño y dimensiones de la imagen

  Herraminta para hacer zoom

  Herramienta Air Brush y blur

  Herramienta Pen y de texto

  Pintar superficies

  Selector de color con degradados, rgb y paleta estándar

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 37/73

  ...otros

vista previa

Programa realizado por Microsoft de un editor de archivos de íconos :

Tiene las opciones para :

  Crear, abrir y guardar archivos

  Comandos de edición : copiar , cortar , pegar , deshacer y rehacer cambios

  Efectos de Flip, rotate e invertir la imagen

  Visualizar el área de edición mediante un grid o puntos

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 38/73

  Opción para hacer zoom al ícono

  Herramientas de dibujo : Paint, relleno, líneas, rectángulos, etc..

  Leer y guardar una paleta de colores desde un archivo ini

  Especificar el tamaño del lápiz de dibujo

  Tener hasta 6 íconos abiertos

  Algunas otras opciones

Vista previa del editor Icon works

Ejemplo que muestra como podemos utilizar los métodos gráficos delvisual Basic para dibujar líneas, círculos y rectángulos sobre un controlPictureBox

El código es muy fácil y nada complicado, ni siquiera utiliza funciones Api.

El autor del mismo es HiT_MaN 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 39/73

Se pueden dibujar círculos, polígonos, con o sin relleno, líneas continuas, puntos yestablecerle el color a las figuras haciendo uso de los Métodos gráficos de visual basic: Line, Circle, PSe

Colocar dentro de un formulario como muestra la imagen, los siguiente controles:

  Picture1 

  Un control Frame1 

  Dentro del Frame1: 1 Label1 y abajo un Combo1. Al costado del combo1

un Check1 

  A la derecha del Frame, un Shape1 y al costado 3 HScrollBar

(HScroll(0), HScroll(1) y HScroll(2))

Nota: no hace falta poner los valores de los controles ya que se hacen por código:

vista previa

Código fuente en el Formulario:

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 40/73

Texto planoImprimir 

1.  '* Description : Ejemplo de programa para dibujar en un picturebox 2.  '**************************************************************************

* 3. 4.  'Variables para almacenar las coordenadas _ 5.  para los rectángulos y para los círculos6.  Dim X1 As Long 7.  Dim Y1 As Long 8.  Dim X2 As Long 9.  Dim Y2 As Long 10. 11. Private Sub Combo1_Click()12.  Label1.Caption = "Tipo de dibujo: " & Combo1.Text13.  If Combo1.ListIndex = 1 Then 14.  Check1.Enabled = True 15.  Else 16.  Check1.Enabled = False 17.  End If 18. End Sub 19.

 20. Private Sub Combo1_KeyPress(KeyAscii As Integer)21.  KeyAscii = 022. End Sub 23. 24. Private Sub Form_Load()25. 26.  'Agregamos los valores al combo1 que _ 27.  muestra los posibles dibujos a realizar28. 29.  With Combo130.  .AddItem "Continuo" 31.  .AddItem "Rectangulo" 32.  .AddItem "Circulo" 33.  .AddItem "Punto" 

34.  End With 35. 36.  HScroll(0).Min = 0: HScroll(1).Min = 0: HScroll(2).Min = 037.  HScroll(0).Max = 255: HScroll(1).Max = 255: HScroll(2).Max = 25538.  Combo1.ListIndex = 039. 40. End Sub 41. 42. Private Sub Form_Resize()43. 44. 'Redimensionamos los controles 45. On Error Resume Next 46. 47.  Frame1.Left = (Me.Width - Frame1.Width) / 248.  Frame1.Top = Me.Height - (Frame1.Height + 480)49. 50.  Picture1.Width = Me.Width - 36051.  Picture1.Height = Frame1.Top - 18052. 53. End Sub 54. 55. Private Sub HScroll_Change(Index As Integer)56. 57.  'Esto le da el color de borde al shape1 _ 58.  de acuerdo al valor de los ScrollBar

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 41/73

59.  Shape1.BorderColor = RGB(HScroll(0).Value, HScroll(1).Value, HScroll(2).Value)

60. 61.  'Esto le da el color de fondo al shape1 _ 62.  de acuerdo al valor de los ScrollBar63.  Shape1.FillColor = RGB(HScroll(0).Value, HScroll(1).Value, HScroll(2).V

alue)

64. 

65. End Sub 66. 67. Private Sub Picture1_MouseDown(Button As Integer, _68.  Shift As Integer, _69.  X As Single, Y As Single)70. 71. 'Almacenamos en estas variables los valores del ratón 72.  X1 = X73.  Y1 = Y74.  X2 = X75.  Y2 = Y76. 77.  If Combo1.Text = "Rectangulo" Or Combo1.Text = "Circulo" Then 78.  Picture1.PSet (X, Y), Shape1.FillColor

79.  End If 80. End Sub 81. 82. Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, _83.  X As Single, Y As Single)84. 85.  If Button = vbLeftButton Then 86.  'Línea continua 87.  If Combo1 = "Continuo" Then 88.  Picture1.Line (X1, Y1)-(X, Y), Shape1.FillColor89.  X1 = X: Y1 = Y90.  End If 91.  'Para dibujar los puntos 92.  If Combo1 = "Punto" Then 

93. 

Picture1.PSet (X, Y), Shape1.FillColor94.  End If 95.  End If 96. 97. End Sub 98. 99. Private Sub Picture1_MouseUp(Button As Integer, _100.  Shift As Integer, _101.  X As Single, _102.  Y As Single)103.  On Error Resume Next 104. 105.  X1 = 0106.  Y1 = 0107.  'Si estamos en modo de rectángulo 

108.  If Combo1 = "Rectangulo" Then 109. 110.  If Check1.Value = 0 Then 111.  'Si no tiene relleno 112.  Picture1.Line (X2, Y2)-(X, Y), Shape1.FillColor, B113.  Else 114.  'si tiene relleno 115.  Picture1.Line (X2, Y2)-(X, Y), Shape1.FillColor, BF116.  End If 117.  End If 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 42/73

118. 119.  'Para los círculos 120.  If Combo1 = "Circulo" Then 121.  'sin relleno 122.  If X > X2 Then 123.  Picture1.Circle (X2, Y2), X - X2, Shape1.FillColor124.  End If 

125. 

126.  'Con relleno 127.  If X2 > X Then 128.  Picture1.Circle (X2, Y2), X2 - X, Shape1.FillColor129.  End If 130.  End If 131.  End Sub 

Código fuente de un Juego de Ajedrez simple

Este un juego Open Source creado entre otros por Brian Thomash , de un juego deAjedrez sencillo en visual basic

Se permite solo permite jugar de a dos, y se puede indicar el tiempo para cadamovimiento.

Nota: las piezas no soportan drag and drop, y para moverlas es neceasario hacer clicen una pieza, y luego hacer clic en la casilla a donde moverla

Descargar código fuente 

vista previa

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 43/73

 

Simple control ocx par usar Textbox estilo windows xp y podercambiar el color del borde al perder y recibir el foco

Este exelente ocx es un activex open Source totalmente gratuito mejorado por MarioAlberto Flores

El activex permite aplicar los temas de windows xp a todos los controles del formulariomediante una simple línea de código, inclusive si el servicio de temas de windows nose se está ejecutando

Los temas de que permite aplicar son el color azul predeterminado que utiliza windows( el tema de xp por defecto ), el estilo plateado y el verde oliva.

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 44/73

Además, permite indicar a que controles le podemos aplicar los themes de xp, pordefecto se aplica a todos los que estén en el formulario, es decir los controles clásicosde visual basic ( listbox, CommandButton, Frame, DirListBox etc...) y los controlescomunes o los Microsoft Windows Common Controls ( ListView, TabStrip , ProgressBar,Slider, Statusbar etc..) .

También permite indicar que controles usarán o no usarán el estilo xp ( Esto se puedeconfigurar desde la página de propiedades del control ocx indicando control por control)

Vista de la página de propiedades

Esta es una vista previa de algunos controles con el estilo Verde Oliva ( los de arribason los controles clásicos de vb y los de abajo los windows Common Controls )

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 45/73

 

Además de poder trabajar con los controles, permite hacerlo con los MsgBox, losInputBox y los CommonDialog

Vista previa de un MsgBox con el tema verde oliva

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 46/73

Vista de un InputBox con el tema xp plateado

Nota: por defecto, los CommonDialog no se visualizan con el tema xp, para eso sedebe indicar desde la página de propiedades del ocx, en la opción "SubClassingCommon Dialog"

Para poder usar el ocx es muy simple, se debe colocar una instancia del control en elformulario, configurarlo para elegir que tema de windows usar , indicar que controles,y luego en el formLoad ejecutar el método InitSubClassing , por ejemplo

Private Sub Form_Load()

WindowsXPC1.InitSubClassing

End Sub

Nota: para aplicar en varios formularios, se debe colocar un ocx por cada formulario

Para poder finalizarlo y quitar los temas a los controles, tiene un método llamadoEndWinXPCSubClassing

Descargar solo el control Ocx 

Descargar código fuente 

Importante : si solo se quiere aplicar los temas de win xp , si el servicio estácorriendo en windows, lo ideal es usar un archivo xml Manifest, ya que de esta maneraestaremos ahorrando recursos al no utilizar ningún ocx que recargue el programa.

Por lo tanto el control es muy útil si se quiere aplicar los estilos xp si o si, sin importarla configuración que tenga el usuario que ejecuta la aplicación

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 47/73

En este enalce tenés un ejemplo simple de como utilizar un archivo xml para lo dicho,y si no en el San Google hay muchos ejemplos sobre el tema

Aplicar estilo xp a los controles con un archivo manifest 

Conjunto de 1173 íconos de 256 colores para poder usarlosdesde vb

Este pack de íconos están exportados a una resolución de 256 colores, y todos sepueden utilizar en cualquier control de visual basic directamente: en toolbar, encommandbutton, image, etc. ( están en formato .ico y todos son de 32 x 32 pixeles)

34 archivos ( tema : hardware )

Descargar 

48 archivos ( tema : flechas )

Descargar 

411 archivos

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 54/73

 

Practicas recomendadas en Visual Basic En este post se ira recopilando practicas recomendadas y los errores mas vistos en visual

basic. Cualquiera puede colaborar.

8/3/09: google cache rulez!

Modified 12/01/2010 

« última modificación: 12 Mayo 2010, 04:04:44 am por 3D1 »

En línea

MUSICA, PUTAS Y MAJIN BOO! (en realidad es solo musica) 

EMeLCo PHP WebShell ~

Mi web 

Los links que me interesan 

.. 

No me mandes mp preguntando cosas, para eso está el foro. No voy a ser tu maestro ni se sobre troyanos.  

CLICKEA QUE ES GRATIS!! 

CLICKEA QUE ES GRATIS!! 

>> s E t H << 

  Командир вашей матери 

  G#

 

   Mensajes: 6,150

  Sexo:

  eaeaea

 o 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 55/73

Re: Practicas recomendadas en visual basic 

« Respuesta #1 en: 08 Marzo 2009, 10:22:06 am »

USAR OPTION EXPLICIT 

Al principio de cada módulo o formulario, colocá

Código: [Seleccionar] 

Option Explicit Esto obliga a que declares las variables, lo que evita:

* Muchos errores (y pérdida de tiempo buscandolos)

* Gasto de memoria (al no declarar las variables, VB asume que son del tipo Variant, por lo

que se consume mucho mas memoria que si es de cualquier otro tipo)

* Malas costumbres (Casi todos los lenguajes exigen que declares las variables, al momento

de aprenderlos, cuesta mas si no usas esta sentencia)

Para ahorrar tiempo, se puede hacer que esta línea se agregue automáticamente:

Herramientas -> Opciones... -> Requerir declaración de variables -> Aceptar

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 57/73

 >> s E t H << 

  Командир вашей матери 

  G#

 

   Mensajes: 6,150

  Sexo:

  eaeaea

 o o Re: Practicas recomendadas en visual basic 

« Respuesta #2 en: 08 Marzo 2009, 10:29:16 am »

CAMBIARLE EL NOMBRE A LOS CONTROLES 

Resulta muy dificil leer un código donde se usan los controles por los nombres por defecto

(Text1, Text2, Label1, Label2, Command1, Command2, etc). Es recomendable ponerles un

nombre de esta manera:

* Tres letras que indiquen el tipo de control (en minúsculas)

* Un nombre que indique para que sirve el control, usando mayusculas en lugar de espacios

Ver tabla con las abreviaturas para los controles mas comunes (perdi el link cuando se jodio el

foro)

Ejemplos de nombres correctos:

* cmdCalcular

* cmdComprimirArchivo

* txtResultado

* tmrHorario

* txtPorcentaje

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 58/73

* lblEstadoOperacion

Ejemplos de nombres incorrectos:

* Text1

* Command2

* Boton

* CMDCALCULAR

* botonparamostrarelmensaje

En línea

MUSICA, PUTAS Y MAJIN BOO! (en realidad es solo musica) 

EMeLCo PHP WebShell ~

Mi web 

Los links que me interesan 

.. 

No me mandes mp preguntando cosas, para eso está el foro. No voy a ser tu maestro ni se sobre troyanos.  

CLICKEA QUE ES GRATIS!! 

CLICKEA QUE ES GRATIS!! 

>> s E t H << 

  Командир вашей матери 

  G#

 

   Mensajes: 6,150

  Sexo:

  eaeaea

 o o 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 59/73

 

Re: Practicas recomendadas en visual basic 

« Respuesta #3 en: 08 Marzo 2009, 10:31:41 am »

DECLARAR EL TIPO DE VARIABLE 

Otro error común es no declarar el tipo de variable:

Código: Visual Basic

1.  Dim GastosDe esta forma, Gastos seria una variable del tipo Variant, aunque despues le demos el mismo

uso que si fuera long, byte, etc.

Citar

Las variables del tipo Variant son las que mas memoria ocupan:

Una variable tipo Variant ocupa 16 bytes si se trata de un número y 22 bytes + longitud de la cadena si se

trata de un dato tipo cadena de caracteres.

Osea, que, a menos que sea sumamente necesario, no conviene declarar las variables como

Variant. Veamos un ejemplo:

Código: Visual Basic

1.  Dim Resultado 'declaramos resultado como Variant 

2.  Dim Numero(1 to 2) 'declaramos numero como un array de dos Variant 

3. 4.  Numero(1)=txtNumero(1) 'txtNumero es un array de dos TextBox 

5.  Numero(2)=txtNumero(2)6. 7.  Resultado=Numero(1) - Numero(2) 'realizamos una resta 

8. 9.  MsgBox "El resultado es " & Resultado

Como ven, en ese codigo se declaran Resultado y Numero(1 to 2) como variant, aunque

solamente se usen para un cálculo matemático. En este caso convendria declararlos como Long

para ahorrar espacio en memoria:

Código: Visual Basic

1.  Dim Resultado As Long 'declaramos resultado como Long 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 60/73

2.  Dim Numero(1 to 2) As Long 'declaramos numero como un array de dos

Long 

3. 4.  Numero(1)=txtNumero(1) 'txtNumero es un array de dos TextBox 

5.  Numero(2)=txtNumero(2)6. 7.  Resultado=Numero(1) - Numero(2) 'realizamos una resta 

8. 9.  MsgBox "El resultado es " & Resultado

Sabiendo esto, hay personas que siguen cometiendo el mismo error al declarar las variables asi

(como si fuera C):

Código: Visual Basic

1.  Dim Ganancias, Perdidas, Costos, Total as Integer 

En otros lenguajes las cuatro variables serían del mismo tipo, pero en Visual Basic Total es del

tipo Integer mientras que las otras son del tipo Variant

La forma correcta de declarar varias variables en la misma linea es asi:

Código: Visual Basic

1.  Dim Ganancias as Integer, Perdidas as Integer, Costos as Integer,

Total as Integer 

2.  Static Mensual as Long, Vendedores as String, Anual as Long 

Gracias a Mace Windu por hacerme acordar de este punto

« última modificación: 12 Mayo 2010, 03:59:41 am por 3D1 »

En línea

MUSICA, PUTAS Y MAJIN BOO! (en realidad es solo musica) 

EMeLCo PHP WebShell ~

Mi web 

Los links que me interesan 

.. 

No me mandes mp preguntando cosas, para eso está el foro. No voy a ser tu maestro ni se sobre troyanos.  

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 61/73

CLICKEA QUE ES GRATIS!! 

CLICKEA QUE ES GRATIS!! 

EddyW  

  3D1

  Si te metes con CPH

te metes conmigo

   Mensajes: 3,144

  Sexo:

 o 

Re: Practicas recomendadas en visual basic 

« Respuesta #4 en: 17 Mayo 2009, 01:39:52 am »

VARIABLES - CADENAS DE LONGITUD FIJA 

Un problema muy comun.., que usarlo no esta mal pero nos complica mucho code es no usar

nunca longitud fija en nuestras variables..

Las Cadenas de longitud fija en las variables nos permiten limitar el numero de caracteres que

puede tener nuestra variable aumentanto un "* N" donde N indica el numero de caracteres que

puede contener la variable..

Por ejemplo si tengo este code y solo quiero que me muestre 5 caracteres de lo que se escribe

en el text1 usandolo mal comunmente harian esto:

Código: Visual Basic

1.  Dim Txt as String 

2.  Txt = "1234567890" 

3.  Txt = Mid(Txt, 1, 5)4.

 ' El MsgBox mostrara 12345 

5.  MsgBox TxtPero si declaramos variables de longitud fija el code se simplifica asi:

Código: Visual Basic

1.  Dim Txt as String * 5

2.  Txt = "1234567890" 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 62/73

3.  ' El MsgBox muestra 12345 4.  MsgBox Txt

Aqui le digo a mi variable "Txt" con el "* 5" que solo puede contener 5 caracteres aunque le de

mas..

Asi ahoramos mucho code y usamos menos Mid..

SaluDOS!!!

« última modificación: 12 Mayo 2010, 04:00:00 am por 3D1 »

En línea

EddyW  

  3D1

  Si te metes con CPH

te metes conmigo

   Mensajes: 3,144

  Sexo:

 o 

Re: Practicas recomendadas en visual basic 

« Respuesta #5 en: 17 Mayo 2009, 01:56:29 am »

LA SENTENCIA WITH 

Este es un metodo muy eficiente por ejemplo al estar cambiando las propiedades de un control,

o accediendo a las partes de su registro..

y sobre todo si el nombre del control es demaciado largo, como no le gustaria seguro tener un

code asi:

Código: Visual Basic

1.  TxtPassword.Text = "Hola" 

2.  TxtPassword.Height = 20003.  TxtPassword.Width = 10004.  TxtPassword.Top = 2005.  TxtPassword.Left = 5006.  TxtPassword.Font.Size = 187.  TxtPassword.Font.Bold = true 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 63/73

Pues para ese tipo de problemas Visual Basic incluye esta sentencia With..

Para facilitarnos el code.., asea con With quedaria asi nuestro code:

Código: Visual Basic

1.  With TxtPassword

2.  .Text = "Hola" 

3.  .Height = 2000

4.  .Width = 1000

5.  .Top = 200

6.  .Left = 500

7.  .Font.Size = 18

8.  .Font.Bold = True 

9.  End   With Y si uno es mas vivo como se dice haria mas simple el code asi:

Código: Visual Basic

1.  With TxtPassword

2.  .Text = "Hola" 

3.  .Height = 2000

4.  .Width = 1000

5.  .Top = 200

6.  .Left = 500

7.   With .Font

8.  .Size = 18

9.  .Bold = True 

10.  End   With 

11.  End   With 

Y muy util porque solo pones el "." y ya te sale la lista con las funciones del control.., y solo

queda seleccionar..

SaluDOS!!!

« última modificación: 12 Mayo 2010, 04:00:51 am por 3D1 »

En línea

alexmanycool 

  Visitante

Re: Practicas recomendadas en visual basic 

« Respuesta #6 en: 25 Octubre 2009, 03:35:20 am »

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 64/73

aveces la verdad duele, mas cuando nos marcan los errores, pero weno... es la verdad, si no

aceptan sugerencias ps que mal, el foro seguirá con los mismos problemas...

pero no seguiré en un foro con estas características ni mis post. me voy de portal hacker

« última modificación: 03 Julio 2010, 01:23:48 am por alexmanycool »

En línea

mDrinky  

  Si te metes con CPH

te metes conmigo

   Mensajes: 2,843

 o 

Re: Practicas recomendadas en visual basic 

« Respuesta #7 en: 30 Octubre 2009, 01:59:42 pm »

On Error Goto 0 

Esto no indica que se vaya a la línea "0", (aunque exista), sino que deje de detectar errores... en

ese procedimiento, ya que si hay algún procedimiento de nivel superior... si que se detectará el

error...

Ejemplo:

Código: Visual Basic

1.  Private Sub Command6_Click()

2.  ' Esta variable se usará para mostrar mensajes en la rutina de

detección 

3.  Dim Mensaje As String 

4. 5.  ' Controlamos los posibles errores 

6.  On Error GoTo HayError2 ' no puede haber dos etiquetas con elmismo nombre 

7. 8.  ' Producimos un error... 

9.  Mensaje = "Instrucción: Error 10" 

10.  Error 10

11. 12.  ' Llamamos al procedimiento Command7_Click 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 65/73

13.  Mensaje = "Instrucción: Command7_Click" 

14.  Command7_Click

15. 16. 17.  Exit Sub 

18. 19.  HayError2:

20.  MsgBox "'" & Mensaje & "'" & vbCrLf & vbCrLf & _

21.  "Se ha producido un error: " & vbCrLf & _

22.  Err.Number & " - " & Err.Description

23. 24.  ' Continuar por la siguiente instrucción 

25.  Resume  Next 

26.  End  Sub 

27. 28. 29.  Private Sub Command7_Click()

30.  ' 

31.  On Error Resume  Next 

32. 33.  ' Este mensaje de error será ignorado, (por el On Error

Resume Next anterior) 

34.  Error 13

35. 36.  ' Dejamos de detectar errores 

37.  On Error GoTo 0

38. 

39.  ' A ver que pasa con este otro error 

40.  Error 15

41. 42.  ' Este código nunca se ejecutará 

43.  MsgBox "Un mensaje desde Command7_Click" & vbCrLf & "que

nunca se mostrará" 

44.  End  Sub 

45. 

Espero haberlo hecho mejor que la ultima vez....

salu2!

« última modificación: 12 Mayo 2010, 04:02:21 am por 3D1 »

En línea

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 66/73

clic aquí para que banen a seth! 

aprende a hackear desde cero con ranefi 

cripters gratis aquí! 

Que guapo soy!

700esoj  

  Me das tu IP?

   Mensajes: 165

 o 

Re: Practicas recomendadas en visual basic 

« Respuesta #8 en: 10 Enero 2010, 07:52:40 pm »

Yo diria que el peor error que cometen la mayoria de todos los que usan Visual basic es no

convertir tipos de variables con sus devidas funciones. Osea que si tengo una variable tipo

LONG y quiero sacar de un STRING los numeros entonces utilizar las devidas Funciones.

Ejemplo:

Código: Visual Basic

1. 2.  Dim valorA as integer 

3.  Dim valorB as integer 

4. 5. 6.  valorA = Text1.text7.  valorB = Text2.text8. 9. 

En cambio estan sacando un valor tipo STRING de un Textbox y dejando que Visual basic se

encargue de convertirlo a Integer por si solo, En cambio en cualquier otro lenguage (incluyendo

otros tipos de variaciones de BASIC) uno trata esa misma linea te daria un error. Para eso estan

las funciones VAL() y STR() si fuera viseversa.

Ejemplo:

Código: Visual Basic

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 67/73

1. 2.  Dim valorA as integer 

3.  Dim mensaje as String 

4. 5.  valorA = VAL(Text1.text) 'Cambiamos su valor de cadena a numerico 

6.  mensaje = STR(valorA) 'Cambiamos su valor numerico a cadena 7. 8.  MSGBOX mensaje9. 10. 

espero que eso ayude a los habitos

« última modificación: 12 Mayo 2010, 04:02:32 am por 3D1 »

En línea

EddyW  

  3D1

  Si te metes con CPH

te metes conmigo

   Mensajes: 3,144

  Sexo:

 o Ahorrar lineas de codigo usando Switch - Practicas recomendadas en visual basic 

« Respuesta #9 en: 12 Enero 2010, 11:33:43 pm »

Ahorrar lineas de codigo usando Switch 

Switch es una función que devuelve el primer valor o expresión verdaderos de una lista, porejemplo nos ahorra tener que escribir varias sentencias IF que comparen el mismo valor varias

veces ej:

Código: Visual Basic

1.  Private Sub Form_Load()

2.  Dim Numero As Long 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 68/73

3.  Numero = Val(InputBox("Escriba un Numero del 1 al 5:", , "1"))

4.  If Numero = 1 Then 

5.  MsgBox "Es Uno" 

6.  ElseIf Numero = 2 Then 

7.  MsgBox "Es Dos" 

8.  ElseIf Numero = 3 Then 9.  MsgBox "Es Tres" 

10.  ElseIf Numero = 4 Then 

11.  MsgBox "Es Cuatro" 

12.  ElseIf Numero = 5 Then 

13.  MsgBox "Es el ultimo numero 5" 

14.  Else 

15.  MsgBox "Numero Fuera.." 

16.  End  If 

17.  End  Sub 

No hace falta explicar, pero por si las dudas, todo ocurre dentro del

evento Form_Load del Form1, declaramos una variable Numero y luego pedimos introducir un

numero del rango 1-5 (1 al 5 ), luego se comparan, si es 1 devuelve un mensaje diciendo "Es

Uno" y así sucesivamente hasta el numero 5.

Reduciendo con Switch quedaría así:

Código: Visual Basic

1.  Private Sub Form_Load()

2.  Dim Numero As Long 3.  Numero = Val(InputBox("Escriba un Numero del 1 al 5:", , "1"))

4. 5.  MsgBox Switch(Numero = 1, "Es Uno", Numero = 2, "Es Dos", Numero =

3, "Es Tres", Numero = 4, "Es Cuatro", Numero = 5, _

6.  "Es el ultimo numero 5", Numero, "Numero fuera..")

7.  End  Sub 8. 

Voy a explicar como funciona cada parte del código dado:

Al hacer esto [Numero = 5] por ejemplo, devuelve True o False dependiendo si en realidad lavariable Numero es igual a 5 ej:

Código: [Seleccionar] 

MsgBox (Numero = 5) & (Numero = 0) Si no declaras la variable esto

devuelve falsoverdadero por que la variable como no se declaro es NULA o 0 por eso Falso y

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 69/73

Verdadero por que si es NULA, entonces ahora sabemos por que pasamos los parámetros

a Switch de esta form, la sintaxis es esta:

Citar

Switch Comparacion = Valor, ValorDevuelto_SiEsVerdadero 

Como esto es un array , podemos pasarle mas parámetros en uno solo:

Citar

Switch Comparacion = Valor, ValorDevuelto_SiEsVerdadero, Comparacion =

Valor, ValorDevuelto_SiEsVerdadero, . . . 

Espero les sirva, para practicar y entenderlo mejor, recomiendo esto:

Código: Visual Basic

1.  MsgBox Switch(True, "Yo", False, "Tu", False, "El")

Código: Visual Basic

1.  MsgBox Switch(False, "Yo", True, "Tu", False, "El")

Código: Visual Basic

1.  MsgBox Switch(False, "Yo", False, "Tu", True, "El")

Cualquier duda sobre esto en el foro, o por MP

SaluDOS!!!

« última modificación: 12 Mayo 2010, 04:03:25 am por 3D1 »

En línea

EddyW  

  3D1

  Si te metes con CPH

te metes conmigo

   Mensajes: 3,144

  Sexo:

 

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 70/73

o Choose - Practicas recomendadas en visual basic 

« Respuesta #10 en: 12 Enero 2010, 11:53:08 pm »

Función Choose Para los que alguna vez usaron o usan Batch, conocerán el comando Choose que cumple la

misma función que cumple la función Choose de VB6.

La función Choose selecciona y devuelve un valor de una lista de argumentos, esta va de la

mano con la función Switch ya que son parecidas solo que esta es mas facil de entender.

Pues primero aclarar para que puede servir y no seguir leyendo inútilmente, Choose toma elprimer valor como indice y devuelve otro valor dependiendo de este, ejemplo de un uso sencillo

con For:

Código: Visual Basic

1.  Private Sub Form_Load()

2.  Dim I As Integer 3.  For I = 1 To 5

4.  MsgBox Choose(I, "Es Uno", "Es Dos", "Es Tres", "Es Cuatro",

"Es Cinco")

5.  Next 6.  End  Sub 7. 

No hace falta explicar, pero para los despistados, Choose toma el primer valor como indice en

nuestro caso toma la variable I , y verifica si es igual a 1, devuelve el valor dado en el indice 1

del array en nuestro caso "Es Uno" ..y así sucesivamente.

SaluDOS!!!« última modificación: 12 Mayo 2010, 04:04:04 am por 3D1 »

En línea

EddyW  

  3D1

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 71/73

  Si te metes con CPH

te metes conmigo

   Mensajes: 3,144

  Sexo:

 o Función IIf - Practicas recomendadas en visual basic 

« Respuesta #11 en: 13 Enero 2010, 12:10:30 am »

Función IIf  La función IIf devuelve una de dos partes, según la evaluación de una expresión, es muy útil

en muchos casos en los que quieres cambiar valores True por False o viceversa, o también

devolver valores distintos evaluando una Expresión de tipo Boolean, ej:

Código: Visual Basic

1.  Private Sub Form_Load()

2.  For i = 1 To 51

3.  Form1.Visible = IIf(Form1.Visible, False, True)

4.  DoEvents 

5.  Next 6.  End  Sub 

Una manera sencilla de hacer que un Form parpadee sin usar mucho código, la sintaxis es

sencilla:

Citar

IIf (Expresion, ValorVerdadero, ValorFalse)

Lo que hace que nuestro Form parpadee es sencillo de explicar, IIf evalúa la expresión y si

es True, entonces devuelve en el ValorTrue -> False y viceversa.

SaluDOS!!!

« última modificación: 12 Mayo 2010, 04:04:16 am por 3D1 »

En línea

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 72/73

 Horus_Point  

  CPQUE??

   Mensajes: 1

  Sexo:

  Yo AMO a pOrtal HAcker!

 o 

Re:» Practicas recomendadas en Visual Basic 

« Respuesta #12 en: 23 Mayo 2013, 11:08:58 am »

Comentario eliminado.

« última modificación: 23 Mayo 2013, 12:16:46 pm por Horus_Point »

En línea

.xAk. 

  el engendro

  Colaborador

 

   Mensajes: 6,474

  Sexo:

  F0r3v3R NeWbI3

 o o 

Re:» Practicas recomendadas en Visual Basic 

« Respuesta #13 en: 23 Mayo 2013, 11:22:08 am »

Cita de: EddyW en 13 Enero 2010, 12:10:30 am 

...

IIf está fuera de lugar en esta sección!

7/16/2019 Funciones Basicas en Visual Basic

http://slidepdf.com/reader/full/funciones-basicas-en-visual-basic 73/73

Cita de: Horus_Point en 23 Mayo 2013, 11:08:58 am 

Hola a todos.

Ya se que el tema es antiguo, pero si me lo permitís, quiero aportar mi granito de arena, en relación al uso

de la sentencia IIf.

Mucha genta pone directamente

Código: Visual Basic

1.  x=IIf(Variable=Esperado,Veradero, Falso), pero no tienen en cuenta el dato existente en la Valiable.

Me explico, por desgracia he visto muho código en el que se compara con el dato, pero la variable está vacia

o, como sucede en la mayoría de casos, tiene un valor Null (Nulo).

Sobre todo me he encontrado en esta situación cuando he tenido que modificar programas de bases de

datos o escritos en VBA en Access o Excel.