Your SlideShare is downloading. ×
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Mundo Visual - Visual Basic - Tema 4
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mundo Visual - Visual Basic - Tema 4

320

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
320
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Programación profesionalVamos a programar a partir de ahora nuestras propias aplicaciones.Es mejor practicar que llenar este curso de palabras y teoría. Para aprender a programar es fundamentalpracticar, practicar y practicar. De momento y en las tres lecciones anteriores, hemos dado buena cuentade práctica mezclada con teoría, porque es indispensable conocer antes el entorno de trabajo donde nosmoveremos, para no perdernos más tarde por él.Las aplicaciones que tratemos a partir de ahora, constituirán el uso de lo visto ya con nuevos controles,código y técnicas.La programación en Visual Basic es una programación orientada a eventos, es decir, no posee códigoestructurado claro, sino dentro de los eventos, siendo uno el comienzo y otro el final, pero puede habervarios (más de uno) finales en nuestros programas (p. ej.: error grave detectado en la ejecución de unasentencia que no nos permita continuar para no degradar el programa o el resultado de este).Ejemplo 1. (Parte 1)Editor de textoVamos a escribir un programa que tenga las funciones básicas de un editor de texto.Para ello, deberemos pensar cuáles son los objetivos del programa para utilizar los controles justos.- Deseamos hacer un editor de texto que permita leer archivos en formato Txt, Wri, Me, BBS y *.* (todos).- Añadiremos a nuestro formulario un control CommonDialog que nos permitirá abrir la ventana de grabación y apertura de archivos (nos ahorrará mucho trabajo).- Utilizaremos un TextBox, y crearemos un menú de opciones para abrir un fichero, salvar un fichero y salir de la aplicación.Pongámonos manos a la obra.Haga click en el formulario una vez y pulse las teclas Ctrl+E.Escriba lo siguiente:Caption: &AbrirName: mnuAbrirPulse el botón Siguiente.Caption: &GuardarName: mnuGuardarPulse el botón Siguiente.Caption: &SalirName: mnuSalirPonga un TextBox en el formulario y escriba las siguientes propiedades:Text: ""Multiline: TrueScrollBars: VerticalEscriba el título de nuestro formulario:Caption: EditorEn el control CommonDialog escriba:InitDir: C:CancelError: True (checked)Ahora ajustaremos el tamaño del TextBox al tamaño del formulario, para darle una vista más atractiva.Para ello escribimos el siguiente texto:Private Sub Form_Resize() Text1.Left = 0 Text1.Top = 0
  • 2. Text1.Height = Form1.ScaleHeight Text1.Width = Form1.ScaleWidthEnd SubCon este evento logramos que cada vez que cambiemos el tamaño de nuestra ventana (maximizar,minimizar, … etc), el control TextBox se ajuste en tamaño con este a la vez.Ahora añadimos la propiedad WindowState del formulario a valor 2-Maximized. El resultado obtenido es algo parecido a este: Aún, nos queda el código más importante, ya que de momento le hemos dado el aspecto GUI deseado a nuestro programa. Es indispensable que nuestro programa realice bien su trabajo y por tanto nos quedará por escribir todas las instrucciones necesarias para ello. Añada el siguiente código: Menu: Salir Private Sub mnuSalir_Click() Dim Respuesta As Integer Respuesta = MsgBox("¿Desea salir del editor?", 36, "Editor") If Respuesta = 6 Then Unload Form1 End IfEnd SubMenu AbrirPrivate Sub mnuAbrir_Click() Dim nLen, nCanal As Integer On Error GoTo error CommonDialog1.DialogTitle = "Abrir archivo" CommonDialog1.Filter = "Archivos de Texto (*.txt;*.wri;*.me;*.bbs)|*.txt;*.wri;*.me;*.bbs|Todos losficheros(*.*)|*.*" CommonDialog1.ShowOpen nCanal = FreeFile Open CommonDialog1.filename For Binary As #nCanal nLen = LOF(nCanal) Texto$ = Space$(nLen) Get #nCanal, , Texto$ Text1.Text = RTrim$(Texto$) Close #nCanal Exit Suberror: Escribe o gestiona el error aquí si quieres Exit SubEnd SubMenu GuardarPrivate Sub mnuGuardar_Click() Dim nCanal As Integer On Error GoTo error CommonDialog1.DialogTitle = "Guardar archivo" CommonDialog1.Filter = "Archivos de Texto (*.txt;*.wri;*.me;*.bbs)|*.txt;*.wri;*.me;*.bbs|Todos losficheros(*.*)|*.*"
  • 3. CommonDialog1.ShowSave nCanal = FreeFile Open CommonDialog1.filename For Output As nCanal Print #nCanal, Text1.Text Close #nCanal Exit Suberror: Escribe o gestiona el error aquí si quieres Close #nCanal Exit SubEnd SubCon este código, nuestro programa abre y graba un archivo de texto.Aún, así, nuestra aplicación carece del aspecto profesional que se merece, por lo que es necesario mejoraralgunas opciones para realizar un editor de texto más profesional, además de hacer uso de algunoscontroles y llamadas a las API de Windows.Manos a la obra.Para darle un aspecto más propio de un editor profesional, incluiremos en nuestro proyecto un controlllamado StatusBar, el cual nos permite mostrar varios aspectos de interés al usuario.Seleccione el control StatusBar de nuestra caja de herramientas e insértelo en el formularioextendiéndolo.Pinche con el botón derecho del ratón sobre la barra de estado, y seleccione Propiedades.Dentro de la ventana de propiedades del control StatusBar, pinche sobre la solapa Paneles, y una vez queesté situado sobre esta, siga estos pasos:Index: 1Text: Mundo Visual - 1997ToolTip Text: ejemplo de StatusBarAlignment: 1 - sbrCenterStyle: 0 - sbrTextBevel: 2 - sbrRaisedAutoSize: 1 - sbrSpringPulse sobre el botón Insert Panel y escriba:Index: 2Minimun Width: 600Alignment: 1 - sbrCenterStyle: 2 - sbrNumBevel: 1 - sbrInsetAutoSize: 2 - sbrContentPulse sobre el botón Insert Panel y escriba:Index: 3Minimun Width: 600Alignment: 1 - sbrCenterStyle: 1 - sbrCapsBevel: 1 - sbrInsetAutoSize: 2 - sbrContentPulse sobre el botón Insert Panel y escriba:Index: 3Minimun Width: 600
  • 4. Alignment: 1 - sbrCenterStyle: 3 - sbrInsBevel: 1 - sbrInsetAutoSize: 2 - sbrContentPulse sobre el botón Insert Panel y escriba:Index: 4Minimun Width: 600Alignment: 1 - sbrCenterStyle: 4 - sbrScrlBevel: 1 - sbrInsetAutoSize: 2 - sbrContentPulse F5 y sitúe el icono del ratón sobre el texto de la barra de estado, podrá ver que el texto " ejemplo deStatusBar" aparece junto a la barra de estado. Aquí puede poner cualquier referencia que desee o dejarloen blanco. Es útil para mostrar información adicional del programa como "Programa Shareware", unadirección de e-mail, etc.El resultado parcial es aproximadamente este: Hasta aquí, todo va resultando sencillo, y con pocas líneas hemos dado una apariencia másprofesional a nuestra aplicación. Todo sin hacer un gran esfuerzo.Ahora bien, es posible que deseemos dar mayor funcionalidad a nuestra aplicación.Debemos tener en cuenta, que nuestra aplicación posee un error de programación muy importante yhabitual a los programadores de Visual Basic. Este error es producido cuando deseamos cerrar nuestraaplicación. Si pulsamos en el menú sobre la palabra Salir, el programa nos pregunta si deseamos o nosalir de la aplicación, pero si pulsamos sobre el aspa de la ventana: el programa no nos preguntará si deseamos acabar, es decir, concluirá directamente nuestraaplicación. Ahora bien, puede ser que deseemos realizar dos cosas cuando se pulse sobre el aspa de laventana:1) Preguntar si se desea concluir la aplicación.2) Ignorar el evento.Veámoslo son sendos ejemplo, para que usted elija el que crea más oportuno:
  • 5. Ejemplo 1: Menu: SalirPrivate Sub mnuSalir_Click() Unload Form1End SubPrivate Sub Form_Unload(Cancel As Integer) Dim Respuesta As Integer Respuesta = MsgBox("¿Desea salir del editor?", 36, "Editor") If Respuesta = 6 Then Unload Form1 Else Cancel = True End IfEnd SubEjemplo 2:En General declaraciones, escriba:Private PasaInicializamos el valor de la variable Pasa:Private Sub Form_Load() Pasa = FalseEnd Sub Menu: SalirPrivate Sub mnuSalir_Click() Dim Respuesta As Integer Respuesta = MsgBox("¿Desea salir del editor?", 36, "Editor") If Respuesta = 6 Then Pasa = True Unload Form1 End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer) If Pasa = False Then Cancel = True End IfEnd SubCon esta segunda forma, mantenemos un control de ignorar cuando el usuario pulsa sobre el aspa de laventana, obligando al usuario a pulsar la opción del menú Salir.Pulsamos Ctrl+E y pinchamos una vez con el ratón sobre &Salir y pulsamos el botón Insertar.Escribimos las siguientes propiedades:Caption: &EditorName: mnuEditorPinche otra vez con el ratón sobre &Salir y pulsamos el botón Insertar.Pulse ahora sobre el botón con la punta de flecha hacia la derecha: -->Caption: &Seleccionar TodoName: mnuSeltodo
  • 6. Pinche otra vez con el ratón sobre &Salir y pulsamos el botón Insertar.Pulse ahora sobre el botón con la punta de flecha hacia la derecha: -->Caption: &Copiar textoName: mnuCopiarPinche otra vez con el ratón sobre &Salir y pulsamos el botón Insertar.Pulse ahora sobre el botón con la punta de flecha hacia la derecha: -->Caption: &Pegar textoName: mnuPegarPinche otra vez con el ratón sobre &Salir y pulsamos el botón Insertar.Pulse ahora sobre el botón con la punta de flecha hacia la derecha: -->Caption: C&ortar textoName: mnuCortarAñada el siguiente código en General declaraciones:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long,ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As LongY las siguientes líneas:Private Sub mnuSeltodo_Click() Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text)End SubPrivate Sub mnuCopiar_Click() Clipboard.Clear Clipboard.SetText Text1.SelText Text1.SetFocusEnd SubPrivate Sub mnuPegar_Click() Text1.SelText = Clipboard.GetText() Text1.SetFocusEnd SubPrivate Sub mnuCortar_Click() Clipboard.SetText Text1.SelText Text1.SelText = "" Text1.SetFocusEnd SubPrivate Sub mnuUndo_Click() UndoResultado = SendMessage(Text1.hwnd, &HC7, 0&, 0&) If UndoResultado = -1 Then Beep MsgBox "Error al intentar recuperar.", 20, "Undo" End IfEnd SubPrivate Sub Form_Resize() Text1.Left = 0 Text1.Top = 0 Text1.Height = Form1.ScaleHeight - StatusBar1.Height Text1.Width = Form1.ScaleWidth
  • 7. End SubPulse F5. Que duda cabe que este no es el mejor aspecto o el aspecto más profesional de este ejemplo,pero eso ya lo dejo a gusto del programador que es el encargado de distribuir los menús como él quiera.El resultado parcial de la aplicación es: Antes me gustaría hacer alusión a los menússubdivididos, es decir, aquellos menús que están separados mediante una pequeña barra horizontal quesepara por ejemplo dentro de un menú llamado Fichero a unos submenús llamados Abrir, Guardar, ydividido mediante una pequeña barra horizontal el submenú Salir.El aspecto debería ser algo así:
  • 8. La barra separadora se obtiene, de la forma: Dentro del submenú, escribimos: Caption: - Name: A1 (por ejemplo)Es bastante recomendable que los nombres a los separadores sean códigos o palabras poco utilizados parano caer en la repetición de los nombres de las variables.Por ahora, nuestra aplicación, posee las características más usuales de un editor de texto de carácter lomás parecido a la profesionalidad de una aplicación.Todo programa puede ser mejorado, ampliado, modificado, ... pero no está mal para empezar.En Windows 95 y Windows NT, si pulsamos con el botón derecho sobre una caja de texto, aparece unmenú de selección como este: Puede ser que no deseemos que aparezca este menú, y sí que aparezca el menú Editor que nosotros mismos hemos programado. Para que esto suceda, deberemos escribir lo siguiente en el evento correcto: (En este caso, haremos uso de un truco de programación para que Windows no nos muestre la pantalla antes mencionada. Con este truco engañaremos a Windows para ocultar esta pantalla y mostrar la que nosotros queremos). Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Button=1 --> botón izquierdo Button=4 --> botón central Button=2 --> botón derecho If Button = 2 Then Text1.Enabled = False Text1.Enabled = True PopupMenu mnuEditor Text1.SetFocus End IfEnd Sub
  • 9. Cabe destacar, que en el truco de programación, antecede la línea:PopupMenu mnuEditora la línea:Text1.Enabled = TrueCon esto conseguimos que el texto aparezca en background (color gris) mientras que aparece el menú deselección nuestro.Es decir, con un ejemplo: Sin embargo, con esta modificación, presentamos el texto correctamente, y "engañamos" a Windows haciéndole creer que el texto no está en modo escritura, para luego pasarlo a modo escritura y mostrar nuestro menú, dejando las letras de fondo de forma normal sin que el usuario aprecie lo que hemos realizado. Esto es, con un ejemplo así: Este es el resultado final de nuestra aplicación mostrando el menú que nosotros queremos. Este tema más o menos ha concluido. En los siguientes mejoraremos nuestro editor realizando un editor de texto mucho más profesional. Poco a poco veremos los cambios insertando más controles que nos permitan un mejor aspecto a nuestra aplicación. En resumen podríamos decir que hemos visto como insertar menús, separadores dentro de un submenú, ajuste de un control (TextBox yStatusBar) al formulario cuando redimensionamos la ventana de nuestra aplicación.Hemos aprendido a mostrar menús PopUps dentro de un control (hemos visto como ejemplo dentro de unTextBox). Veremos más adelante como mostrar menús inexistentes u ocultos.
  • 10. Hemos visto funciones básicas del control StatusBar, y funciones básicas de un editor de texto simple, asícomo el uso de una función API de Windows para deshacer los cambios realizados sobre el controlTextBox.
  • 11. Hemos visto funciones básicas del control StatusBar, y funciones básicas de un editor de texto simple, asícomo el uso de una función API de Windows para deshacer los cambios realizados sobre el controlTextBox.

×