Sunteți pe pagina 1din 10

Programacin profesional

Vamos a programar a partir de ahora nuestras propias aplicaciones. Es mejor practicar que llenar este curso de palabras y teora. Para aprender a programar es fundamental practicar, practicar y practicar. De momento y en las tres lecciones anteriores, hemos dado buena cuenta de prctica mezclada con teora, porque es indispensable conocer antes el entorno de trabajo donde nos moveremos, para no perdernos ms tarde por l. Las aplicaciones que tratemos a partir de ahora, constituirn el uso de lo visto ya con nuevos controles, cdigo y tcnicas. La programacin en Visual Basic es una programacin orientada a eventos, es decir, no posee cdigo estructurado claro, sino dentro de los eventos, siendo uno el comienzo y otro el final, pero puede haber varios (ms de uno) finales en nuestros programas (p. ej.: error grave detectado en la ejecucin de una sentencia que no nos permita continuar para no degradar el programa o el resultado de este). Ejemplo 1. (Parte 1) Editor de texto Vamos a escribir un programa que tenga las funciones bsicas de un editor de texto. Para ello, deberemos pensar cules 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). - Aadiremos a nuestro formulario un control CommonDialog que nos permitir abrir la ventana de grabacin 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 aplicacin. Pongmonos manos a la obra. Haga click en el formulario una vez y pulse las teclas Ctrl+E. Escriba lo siguiente: Caption: &Abrir Name: mnuAbrir Pulse el botn Siguiente. Caption: &Guardar Name: mnuGuardar Pulse el botn Siguiente. Caption: &Salir Name: mnuSalir Ponga un TextBox en el formulario y escriba las siguientes propiedades: Text: "" Multiline: True ScrollBars: Vertical Escriba el ttulo de nuestro formulario: Caption: Editor En el control CommonDialog escriba: InitDir: C:\ CancelError: True (checked) Ahora ajustaremos el tamao del TextBox al tamao del formulario, para darle una vista ms atractiva. Para ello escribimos el siguiente texto: Private Sub Form_Resize() Text1.Left = 0 Text1.Top = 0

Text1.Height = Form1.ScaleHeight Text1.Width = Form1.ScaleWidth End Sub Con este evento logramos que cada vez que cambiemos el tamao de nuestra ventana (maximizar, minimizar, etc), el control TextBox se ajuste en tamao con este a la vez. Ahora aadimos la propiedad WindowState del formulario a valor 2-Maximized. El resultado obtenido es algo parecido a este:

An, nos queda el cdigo ms 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. Aada el siguiente cdigo: ' 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 If End Sub 'Menu Abrir Private 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 los ficheros(*.*)|*.*" 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 Sub error: 'Escribe o gestiona el error aqu si quieres Exit Sub End Sub 'Menu Guardar Private 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 los ficheros(*.*)|*.*"

CommonDialog1.ShowSave nCanal = FreeFile Open CommonDialog1.filename For Output As nCanal Print #nCanal, Text1.Text Close #nCanal Exit Sub error: 'Escribe o gestiona el error aqu si quieres Close #nCanal Exit Sub End Sub Con este cdigo, nuestro programa abre y graba un archivo de texto. An, as, nuestra aplicacin carece del aspecto profesional que se merece, por lo que es necesario mejorar algunas opciones para realizar un editor de texto ms profesional, adems de hacer uso de algunos controles y llamadas a las API de Windows. Manos a la obra. Para darle un aspecto ms propio de un editor profesional, incluiremos en nuestro proyecto un control llamado StatusBar, el cual nos permite mostrar varios aspectos de inters al usuario. Seleccione el control StatusBar de nuestra caja de herramientas e insrtelo en el formulario extendindolo. Pinche con el botn derecho del ratn 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 que est situado sobre esta, siga estos pasos: Index: 1 Text: Mundo Visual - 1997 ToolTip Text: ejemplo de StatusBar Alignment: 1 - sbrCenter Style: 0 - sbrText Bevel: 2 - sbrRaised AutoSize: 1 - sbrSpring Pulse sobre el botn Insert Panel y escriba: Index: 2 Minimun Width: 600 Alignment: 1 - sbrCenter Style: 2 - sbrNum Bevel: 1 - sbrInset AutoSize: 2 - sbrContent Pulse sobre el botn Insert Panel y escriba: Index: 3 Minimun Width: 600 Alignment: 1 - sbrCenter Style: 1 - sbrCaps Bevel: 1 - sbrInset AutoSize: 2 - sbrContent Pulse sobre el botn Insert Panel y escriba: Index: 3 Minimun Width: 600

Alignment: 1 - sbrCenter Style: 3 - sbrIns Bevel: 1 - sbrInset AutoSize: 2 - sbrContent Pulse sobre el botn Insert Panel y escriba: Index: 4 Minimun Width: 600 Alignment: 1 - sbrCenter Style: 4 - sbrScrl Bevel: 1 - sbrInset AutoSize: 2 - sbrContent Pulse F5 y site el icono del ratn sobre el texto de la barra de estado, podr ver que el texto " ejemplo de StatusBar" aparece junto a la barra de estado. Aqu puede poner cualquier referencia que desee o dejarlo en blanco. Es til para mostrar informacin adicional del programa como "Programa Shareware", una direccin de e-mail, etc. El resultado parcial es aproximadamente este:

Hasta aqu, todo va resultando sencillo, y con pocas lneas hemos dado una apariencia ms

profesional a nuestra aplicacin. Todo sin hacer un gran esfuerzo. Ahora bien, es posible que deseemos dar mayor funcionalidad a nuestra aplicacin. Debemos tener en cuenta, que nuestra aplicacin posee un error de programacin muy importante y habitual a los programadores de Visual Basic. Este error es producido cuando deseamos cerrar nuestra aplicacin. Si pulsamos en el men sobre la palabra Salir, el programa nos pregunta si deseamos o no salir de la aplicacin, pero si pulsamos sobre el aspa de la ventana:

el programa no nos preguntar si deseamos acabar, es decir, concluir directamente nuestra aplicacin. Ahora bien, puede ser que deseemos realizar dos cosas cuando se pulse sobre el aspa de la ventana: 1) Preguntar si se desea concluir la aplicacin. 2) Ignorar el evento. Vemoslo son sendos ejemplo, para que usted elija el que crea ms oportuno:

Ejemplo 1: ' Menu: Salir Private Sub mnuSalir_Click() Unload Form1 End Sub Private 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 If End Sub

Ejemplo 2: 'En General Private Pasa declaraciones, escriba:

'Inicializamos el valor de la variable Pasa: Private Sub Form_Load() Pasa = False End Sub ' Menu: Salir Private Sub mnuSalir_Click() Dim Respuesta As Integer Respuesta = MsgBox("Desea salir del editor?", 36, "Editor") If Respuesta = 6 Then Pasa = True Unload Form1 End If End Sub Private Sub Form_Unload(Cancel As Integer) If Pasa = False Then Cancel = True End If End Sub

Con esta segunda forma, mantenemos un control de ignorar cuando el usuario pulsa sobre el aspa de la ventana, obligando al usuario a pulsar la opcin del men Salir. Pulsamos Ctrl+E y pinchamos una vez con el ratn sobre &Salir y pulsamos el botn Insertar. Escribimos las siguientes propiedades: Caption: &Editor Name: mnuEditor Pinche otra vez con el ratn sobre &Salir y pulsamos el botn Insertar. Pulse ahora sobre el botn con la punta de flecha hacia la derecha: --> Caption: &Seleccionar Todo Name: mnuSeltodo

Pinche otra vez con el ratn sobre &Salir y pulsamos el botn Insertar. Pulse ahora sobre el botn con la punta de flecha hacia la derecha: --> Caption: &Copiar texto Name: mnuCopiar Pinche otra vez con el ratn sobre &Salir y pulsamos el botn Insertar. Pulse ahora sobre el botn con la punta de flecha hacia la derecha: --> Caption: &Pegar texto Name: mnuPegar Pinche otra vez con el ratn sobre &Salir y pulsamos el botn Insertar. Pulse ahora sobre el botn con la punta de flecha hacia la derecha: --> Caption: C&ortar texto Name: mnuCortar Aada el siguiente cdigo 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 Long Y las siguientes lneas: Private Sub mnuSeltodo_Click() Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub mnuCopiar_Click() Clipboard.Clear Clipboard.SetText Text1.SelText Text1.SetFocus End Sub Private Sub mnuPegar_Click() Text1.SelText = Clipboard.GetText() Text1.SetFocus End Sub Private Sub mnuCortar_Click() Clipboard.SetText Text1.SelText Text1.SelText = "" Text1.SetFocus End Sub Private Sub mnuUndo_Click() UndoResultado = SendMessage(Text1.hwnd, &HC7, 0&, 0&) If UndoResultado = -1 Then Beep MsgBox "Error al intentar recuperar.", 20, "Undo" End If End Sub Private Sub Form_Resize() Text1.Left = 0 Text1.Top = 0 Text1.Height = Form1.ScaleHeight - StatusBar1.Height Text1.Width = Form1.ScaleWidth

End Sub Pulse F5. Que duda cabe que este no es el mejor aspecto o el aspecto ms profesional de este ejemplo, pero eso ya lo dejo a gusto del programador que es el encargado de distribuir los mens como l quiera. El resultado parcial de la aplicacin es:

Antes me gustara hacer alusin a los mens

subdivididos, es decir, aquellos mens que estn separados mediante una pequea barra horizontal que separa por ejemplo dentro de un men llamado Fichero a unos submens llamados Abrir, Guardar, y dividido mediante una pequea barra horizontal el submen Salir. El aspecto debera ser algo as:

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 cdigos o palabras poco utilizados para no caer en la repeticin de los nombres de las variables. Por ahora, nuestra aplicacin, posee las caractersticas ms usuales de un editor de texto de carcter lo ms parecido a la profesionalidad de una aplicacin. Todo programa puede ser mejorado, ampliado, modificado, ... pero no est mal para empezar. En Windows 95 y Windows NT, si pulsamos con el botn derecho sobre una caja de texto, aparece un men de seleccin 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 programacin para que Windows no nos muestre la pantalla antes mencionada. Con este truco engaaremos 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 --> botn izquierdo ' Button=4 --> botn central ' Button=2 --> botn derecho If Button = 2 Then Text1.Enabled = False Text1.Enabled = True PopupMenu mnuEditor Text1.SetFocus End If End Sub

Cabe destacar, que en el truco de programacin, antecede la lnea: PopupMenu mnuEditor a la lnea: Text1.Enabled = True Con esto conseguimos que el texto aparezca en background (color gris) mientras que aparece el men de seleccin nuestro. Es decir, con un ejemplo:

Sin embargo, con esta modificacin, presentamos el texto correctamente, y "engaamos" a Windows hacindole 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 aplicacin mostrando el men que nosotros queremos. Este tema ms o menos ha concluido. En los siguientes mejoraremos nuestro editor realizando un editor de texto mucho ms profesional. Poco a poco veremos los cambios insertando ms controles que nos permitan un mejor aspecto a nuestra aplicacin. En resumen podramos decir que hemos visto como insertar mens, separadores dentro de un submen, ajuste de un control (TextBox y StatusBar) al formulario cuando redimensionamos la ventana de nuestra aplicacin. Hemos aprendido a mostrar mens PopUps dentro de un control (hemos visto como ejemplo dentro de un TextBox). Veremos ms adelante como mostrar mens inexistentes u ocultos.

Hemos visto funciones bsicas del control StatusBar, y funciones bsicas de un editor de texto simple, as como el uso de una funcin API de Windows para deshacer los cambios realizados sobre el control TextBox.

S-ar putea să vă placă și