Sie sind auf Seite 1von 34

4.

Caracteristicas de la Programacin en SQLWindows.


4.1. Variables.
Prefijos y Tipos de Variables. Tipos de Datos Boolean Date/Time File Handle Long String Number SQL Handle String Window Handle Prefijo b dt fh ls n hSql s hWnd Uso Valor lgico (TRUE / FALSE ). Fecha / Hora. Manija de Archivos. Cadena de Caracteres mayores a 255. Numrico. Manija para conexiones SQL. Cadena de caracteres menor o igual a 255. Manija de Ventanas.

Al igual que en los lenguajes tradicionales, se recurre al uso de variables para almacenamiento de valores, estas variables pueden ser: Globales Definidas en la seccion Global Declarations. Locales Definidas en la seccin Window Variables de las ventanas. Se recomienda seguir usando la notacin para asignacin de nombres: Prefijo en minsculas. Primera letra de cada palabra en myscula.

SQLWindows

53

Los tipos de datos Handle (manija) son tipos especiales para identificar un archivo, una conexin SQL o una ventana segn sea el caso; no son variables con las que se pueden hacer operaciones ya que su funcin es slo de identificador, se utilizan cuando se hace uso de ciertas funciones.

4.1.1. Variables de SQLWindows

Variable HWndNULL HWndForm HWndItem HWndMDI Wparam MyValue BstaticsAsWindows

Tipo de Dato Menejo de Ventana Manejo Ventana Manejo Ventana Manejo Ventana Nmero <ref.item corriente> Boolean - cuando es puesto en TRUE, los objetos pasivos no son pintados en el formulario, sino que creados como objetos de window. Nmero Arreglos de Secuencias (String)

Variable SqlDatabase SqlUser SqlPassword SqlNoRecovery SqllnMessage

Tipo Dato Secuencia Secuencia Secuencia Boolean Nmero

NargCount StrArgArry[*]

4.1.2. Calificacin de Variables. Referencia Simple: <variable/objeto_nombre> Ejemplo:


SQLWindows

Set dfDate = SalDateCurrent()


54

Referencia Calificada: <nom. De formato_nombre> <variable/objeto_nom> Ejemplo: SetfrmMain.dfDate = SalDateCurrent()

Referencias Calificadas en su Totalidad (o Window-quelified): <padre_ventana_mabejo> <variable-/objeto_nom> Ejemplo: SethWnd.dfDate = SalDateCurrent() (o... Set hWnd.frmMain.dfDate = SalDateCurrent())

SQLWindows

55

4.2. Arreglos.
En SQLwindows se pueden crear arreglos unimendisionales y multidimensionales de los diferentes tipos de variables provistos. Antes de explicar como operan los arreglos multidimensionales, se deber entender como declarar los de dimensin uno.

4.2.1. Arreglos Unidimensionales. Arreglos Unidimensionales Estticos. Si se conoce el nmero mximo de nmeros de elementos que un arreglo puede contener, especfique el nmero entre corchetes [ ], al momento de declararlo: Arreglos Unidimensionales Dinmicos. Si no se puede predecir el nmero mximo de elementos contenidos en un arreglo, se deber utilizar un asterisco (*) en lugar de un nmero fijo de elementos, esto le indica a SQLWindows que es un arreglo dinmico. Arreglos Unidimensionales Estaticos. Variables String String : sArchivo : sPais

Number : nMaximo Number : nValores [4]

SQLWindows

56

Arreglos Unidimensionales Dinamicos. Variables String String : sEmpleados [4] : sDeptos [4]

En el primer ejemplo sPais y nValores son arreglos (vectores) fijos de 1 dimensin, el primer elemento 0 y el ltimo n-1. En el segundo ejemplo sEmpleados y sDeptos son de tamao variables, el primer elemento es el 0, pero el ltimo depende de los elementos que se almacenen en los arreglos. 4.2.2. Arreglos Multidimensionales. Asignacin de rangos en Arreglos Unidimensionales. Variables String Variables String : sEmpleados [1:*]
Nota: Este arreglo es dinmico (1-n), no se especifica la posicin cero.

: sEmpleados [1:10]

Nota: Este arreglo consta de diez elementos (1-10), no se utiliza la posicin cero.

Por omisin, se referencia al primer elemento de un arreglo con el ndice cero. Para controlar como referenciar al primer elemento de un arreglo, se deben especificar los limites inferior y superior separados por dos puntos.
Arreglos Multidimensionales Estaticos. Arreglos Multidimensionales Dinmicos

Variables
SQLWindows

Variables
57

String : sEmpleados [10,3]


Nota: El arreglos presenta diez elementos en su primera dimensin (0-9) y slo tres en la segunda dimensin (0-2).

String : sEmpleados [*,3]


Nota: Este arreglo es dinmico en la primera dimensin (0-n) y tres elementos en la segunda dimensin (0-2).

Para declarar un arreglo multidimensional estatico basta con especificar el nmero de elementos de la segunda y subsecuentes dimensiones despus del nmero de la primera dimensin. Se debe de separar cada dimensin por medio de coma. En el tipo de arreglo multidimensional dinmico slo se puede especificar la primer dimensin dinmica. Asignacin de rangos en Arreglos Multidimensionales. Variables String : sEmpleados [1:10 , 1:3]
Nota: Este arreglo presenta en la primera dimensin diez elementos (1-10), sin declarar posicin cero y tres elementos en la segunda dimensin.

Variables String : sEmpleados [1:* , 1:3 , 1:10 ]


Nota: Este arreglo es dinmico (1-n) en la primera dimensin, con tres elementos en la segunda dimensin (1-3) y diez elementos en la tercera dimensin (1-10).

Se pueden controlar los limites de los elementos para cualquier dimensin, incluso si la primera dimensin es dinmica.

SQLWindows

58

Ejercicio. 1. Identifique los tipos de variables de acuerdo a la nomenclatura. sTitulo bFin HWndPadre _____________ nMaximo _____________ nSqlMain _____________ _____________ _____________

2. Declare un arreglo unidimensional de 10 elementos del tipo Number.

SQLWindows

59

3. Declare un arreglo unidimensional de 50 elementos del tipo String con un lmite inferior 1. 4. Declare un arreglo dinmico de tipo Boolean. 5. Declare el arreglo que representa una matriz de 10x20 iniciando sus ndices a partir de 1. 6. Declare un arreglo multidimensional de orden 3, cuya primera dimensin sea dinmica y las subsecuentes sean de 10 y 20 respectivamente. en todos los casos el lmite inferior de las dimensiones deber de ser 1.

4.3. Constantes.
Para definir constantes de usuario se utiliza la seccin Constans de la seccin Global Declaration. No existe una nomenclatura en especial, salvo el uso extensivo de Maysculas.
Variables

System
User

Number: PAM_Activa
SQLWindows

= SAM_User + 1
60

Number: PAM_Desactiva String: MsgError

= SAM_User + 2 = 'Error en la Aplicacin'

Ejercicio. 1. Abra una nueva aplicacin SQLWindows. 2. Defina varias constantes en la aplicacin. 3. En liste los tipos de constantes que se puede definir.

SQLWindows

61

4.3.1. Constantes Predefinidas Existen en el lenguaje SQLWindows muchas constantes previamentes definidas, estas se utilizan en el llamado a ciertas funciones cuyos parmetros llevan valores restringidos, un ejemplo es la funcin: SalMessageBox( sContenido, sTitulo, nOpciones )

Donde nOpciones es una constante o combinacin de constantes apropiadas. Para combinarlas se utiliza el operador (barra vertical),

SQLWindows

62

Ejemplo:
Call SalMessageBox( ' Error en la aplicacin ', 'Altas, MB_IconStop MB_RetryCancel)

Las opciones pueden tener una combinacin de valores, algunos de ellos son: MB_IconAsterisk MB_IconHand MB_Ok MB_OkCancel MB_IconExclamation MB_RetryCancel MB_IconQuestion MB_YesNo MB_IconStop MB_YesNoCancel MB_AbortRetryIgnore

4.4. Lenguaje SAL.

Para agregar cdigo a la aplicacin los elementos del lenguaje SAL(SQLWindows Application Languaje), el cual provee de un conjunto de instrucciones para programar acciones de la misma manera como se hace en un lenguaje de tercera generacin.

4.4.1. Instrucciones del Lenguaje SAL Set

SQLWindows

63

Asigna a una variable (Local o Global) el resultado de una expresin. La expresin puede ser una expresin aritmtica que involucre otras variables o incluso objetos. Sintaxis: Ejemplo: Set <variable> = <expresin> Set nAvance = 100 nPuntos / nTotal

Call

Involucra a una funcin interna Global, Interna Local, Externa o de SAL.

Las funciones tambin pueden invocarse en forma implcita en una expresin, cuando se desea utilizar el resultado para alguna operacin, como en: Sintaxis: Ejemplo: Call Funcion() Call SalSendMsg( pbSalir, PAM_Init, 0, 0 ) Set bResultado = SalNumberSin( nX )

If, Else If, Else. Permite colocar elementos de decisin.


Fig. 1 If, Else . S|intaxis: If < condicin > cdigo 1 Else cdigo 2 Fig. 2 If, Else . Sintaxis: If < condicin 1> cdigo 1 If < condicin 2 > cdigo 2 Else Fig. 3 If, Else If , Else . Sintaxis: If < condicin 1> cdigo 1 Else If < condicin 2 > cdigo 2 Else If < condicin 3 >
64

SQLWindows

cdigo 3 Else cdigo 2

cdigo 3 Else cdigo 4

El control del cdigo se hace por identacin, no se necesitan llaves o instrucciones tipo Begin-End (Fig. 1) Las setencias pueden anidarse (Fig. 2). La anidacin de setencias If en ocasiones es dficil de leer, en ese caso se puede usar la setencia Else If (Fig. 3).

Select case. Esta instruccin permite ejecutar una accin dependiendo de un valor numrico.
Sintaxis: Select Case nNumero Case 1 cdigo 1 Break Case 2 cdigo 2 Break Default cdigo n

Se debe colocar una instruccin Break al final de cada cdigo para separar cada CASO, si se desea que ejecute las instrucciones del siguiente Case, bastar con omitir el Break. Por ejemplo:
65

SQLWindows

Select Case nOpcin Case 2 Case 3 Cdigo a Break Case 4 Case 5 Cdigo B Break Si nValor es 2 o 3 se ejecuta el cdigo A, si vale 4 o 5 se ejecuta el cdigo B.

Loop y Break

La setencia Loop ejecuta el cdigo en el siguiente nivel n veces hasta encontrar una instruccin Break o Return. No evala expresiones ni incrementa valores en cada iteracin en forma automtica. Pueden colocarse varias instrucciones Break. Ejemplo: Set nIndice = 0
SQLWindows 66

Loop If nIndice > 6 Break Call SalStrUpper( Dias[ nIndice ], Dias[ nIndice ] ) Set nIndice = nIndice + 1

While. La setencia While es muy similar a Loop, slo que no necesita una sentencia Break, ya que evala la expresin hasta que esta sea FALSE, sin embargo una instruccin Break o Return concluir el ciclo en forma inmediata. Sintaxis: While < condicin > Ejemplo: Call SqlFetchNext( hSql, nErr ) While nErr != EOF codigo 1 If < condicin > Return nErr Call SqlFetchNext( hSql, nErr ) Return La instruccin Return concluye el procesamiento de cualquier cdigo que atiende un mensaje o bien, el cdigo de una opcin de men. Regresa valor a la funcin que invoc o bien a SQLWindows.
SQLWindows 67

Si el programa encuentra la instruccin Return, ignora las instrucciones subsecuentes y regresa el control a donde se hizo el llamado.

Sintaxis: Return Ejemplo: Set nIndice = nParametro Set nResultado = nIndice Loop If nIndice < 0 Set bError = TRUE Return If nIndice > 6 Break Set nIndice = nIndice + 1 Set nResultado = nResultado * nIndice Set nResultado = nResultado / 2 Strings. Las cadenas en SQLWindows tienen una manipulacin similar a la que se usa en otros lenguajes para concatenar dos o ms Strings se utiliza el operador (doble barra), como en la fig. 1.
Fig. 1 Set sVariable1 = El da Set sVariable2 = viernes Set sVariable3 = se har el evento. Set nExp1 = sVariable1 || sVariable2 || sVariable3 Set nExp2 = sVariable1 || sabado || sVariable3

El da viernes se har el evento. El da sabado se har el evento.

SQLWindows

68

Existe un error en la fig. 2, pues el compilador interpretara Imprenta como un String, y el resto de la expresin causara un error de compilacin. Para incluir un apstrofe dentro de un String se utiliza la diagonal inversa antes del apstrofe o bien las dobles comillas para delimitar el inicio y el fin del string.
Fig. 2 Set sTitulo = Imprenta La Hacienda ! Marca Error Solucin: Usar \ antes de Set sTitulo = Imprenta \ La Hacienda \ o bien usar Set sTitulo = Imprenta La Hacienda

Si se dese incluir una diagonal inversa dentro del un string, se coloca doble diagonal inversa como muestra la fig. 3.
Fig. 3 Set sLinea = \\***** Reporte Semanal *****\\ sLinea -> \***** Reporte Semanal *****\

Operadores. Se siguen los mismos criterios que en lenguaje C para resolucin de operaciones: primero las multiplicaciones y divisione, luego las sumas y restas, se pueden utilizar parntesis para hacer ms clara la operacin. Los operadores de comparacin pueden ser usados con datos de tipo fecha, string o numricos.
Operadores
SQLWindows 69

Aritmticos Adicin: + Resta: Multiplicacin: * Divisin: / Aritmtica booleana AND & OR | Lgicos OR AND NOT Comparacin Mayor que > Mayor o igual >= Menor que < Menor o igual <= Igual = Diferente != <>

4.4.2. Funciones del Lenguaje SAL. Adicionalmente al conjunto de instrucciones SAL, se cuenta con una gran variedad de funciones para gran cantidad de propsitos: manipulacin de Fechas, comunicacin entre aplicaciones por medio de DDE, funciones de edicin, manipulacin de archivos, de formateo y validacin, especiales para List Box y Combo Box, manipulacin de arreglos y nmeros, impresin, ejecutar operaciones SQL, manipulacin de cadenas, conversin de datos, manejo de ventanas, ect. Ejemplo de algunas funciones: SalDisableWindow() SalEnableWindow() SalWaitCursor() SalDateYear() SalFileRead()
SQLWindows

Deshabilita un objeto. Habilita un objeto. Cambia el cursor de arena o viceversa. Proporciona el ao de una variable del tipo fecha. Lee datos de un archivo.
70

4.4.2.1.

Funciones internas.

Las funciones son rutinas de uso general que tienen como propsito efectuar una tarea y regresa uno o varios valores como resultado de su operacin, se declaran en la seccn Internal Functions. Si la funcin va a regresar un valor, solamente se especifica el tipo del valor de retorno.

Se pueden especificar n parmetros los cuales se utilizan como variables locales, por default los parmetros no pueden modificarse (paso por valor), en caso de necesitar regresar ms de un valor se deben definir dichos parmetros anteponiendo el tipo Receive (paso por referencia).

La funcin puede tener sus propias variables (variables locales).

El cdigo de la funcin utiliza el lenguaje SAL.

Ejemplo:
Internal Functions

Function: Promedio
Description: Calcula el promedio de n Nmeros
SQLWindows 71

Returns
Number: Parameters Number: nValores [ * ] Number: nCuantos Static Variables Local variables Number: nIndice Number: nResultado Actions Set nIndice = 0 Set nResultado = 0 While nIndice < nCuantos Set nResultado = nResultado + nValores[ nIndice ] Set nIndice = nIndice + 1 Set nResultado = nResultado / nCuantos Return nResultado

Ejercicios. A. Calculo del Factorial.


Desarrolle una aplicacin que reciva un nmero y calcule el factorial del mismo. 1. Cree una aplicacin nueva (sin las librerias de QuickObjects). 2. Agregue un Form Window, asignele el ttulo Calculo del Factorial. 3. Agregue a la forma un Data Field, asignele el nombre dfDato, y asigne el tipo de datos en Number. 4. Arriba del Data Field, coloque un Background Text con la leyenda Dato! 5. Agregue un Data Field, asignele el nombre dfResultado y asigne el tipo de datos Number. 6. Arriba del Data Field, coloque un Background Text con la leyenda Resultado. 7. Agregur un Pushbutton con nombre pbCalcular y ttulo Calcular. 8. En la seccin User de la seccin Constants defina el mensaje PAM_Calcular con el valor SAM_USER + 1.
SQLWindows 72

En la seccin Internal Functions de Global Declarations dree una funcin nueva con nombre Factorial. 10. Defina el resultado como tipo Number. 11. Defina un parametro de tipo Number con nombre nNumero. 12. En el cdigo de la funcin coloque el siguiente cdigo. If (nNumero<1) Return 0 Else Return Factorial(nNumero-1) 13. Localice la seccin Message Actions del botn pbCalcular. 14. Agregue el siguiente cdigo: On SAM_Click Call SalSendMsg( dfResultado, PAM_Calcular, 0, 0 ) 15. En el Data Field dfCalcular coloque el siguiente cdigo: On PAM_Calcular Set MyValue = Factorial( dfDato ) 16. Corra la aplicacin y pruebela.
9.

B. Conversin de Grados Centigrados a Fahrenheith.


Desarrolle una aplicacin que haga una conversin de grados Centgrados a grados Fahrenheit y viceversa. C = (F-32)* 5/9 F = C*9/5 + 32 Deber definir tres funciones internas. 1. Cree una aplicacin nueva (sin las librerias de QuickObjects). 2. Agregue un Form Window, asignele el ttulo conversin. 3. Agregue a la forma un Data Field, asignele el nombre dfCentigrados, y asigne el tipo de datos en Number. 4. Coloque arriba del Data Field un Background Text con la leyenda C. 5. Agregue un Data Field, asignele el nombre dfFahrenheit y asigne el tipo de datos Number. 6. Coloque arriba del Data Field un Background Text con la leyenda F. 7. Agregue un Pushbutton con nombre pbCToF y titulo C -> F. 8. Debajo del botn anterior agregue un Pushbutton con nombre pbFToC y ttulo F -> C. 9. En la seccin User de la seccin Constans defina el mensaje PAM_Convertir con el valor SAM_User + 1.
73

SQLWindows

En la seccin Internal Functions de Global Declarations cree una funcin nueva, con nombre CentigradosDeF. 11. Defina el resultado como tipo Number. 12. Defina el parametro del tipo Number con nombre nGradFar. 13. Agregue el siguiente cdigo en la seccin Actions. Return (nGradFar-32)*5/9 14. Defina el resultado como tipo Number. 15. Defina el parametro del tipo Number con nombre nGradFar. 16. Agregue el siguiente cdigo en la seccin Actions. Return (nGradFar-32)*5/9 17. Agregue otra funcin con nombre FahrenheitDeC. 18. Defina el resultado como tipo Number. 19. Defina un parametro del tipo Number con nombre nGradCen. 20. Agregue el siguiente cdigo en la seccin Actions: Return( nGradCen * 9 / 5 - 32 ) 21. Localice la seccin Message Actions del botn pbCToF. 22. Agregue el siguiente cdigo: On SAM_Click Call SalSendMsg( dfFaharenheit, PAM_Convertir, 0, 0 ) 23. Localice la seccin Message Actions del botn pbFToC. 24. Agregue el siguiente cdigo: On SAM_Click Call SalSendMsg( dfCentigrados, PAM_Convertir, 0, 0 ) 25. Localice el Data Field dfFahrenheit y agregue el siguiente cdigo: On PAM_Convertir Set MyValue = dfFahrenheitDeC( dfCentigrados ) 26. Localice el Data Field dfCentigrados y agregue el siguiente cdigo: On PAM_Convertir Set MyValue = dfCentigradosDeF( dfFahrenheit ) 27. Corra la aplicacin y pruebela.
10.

SQLWindows

74

4.5. Cdigo Reusable.


Una propiedad muy importante de SQLWindows (tambin principio de OOP) es que nos permite reutilizar cdigo, es decir que el cdigo diseado para un objeto pueda ser utilizado igual o con ligeras modificaciones en objetos del mismo o similar tipo; para ello provee de variables de uso general como es el caso de hWndForm y hWndItem:

hWndForm hWndItem

Se refiere a la ventana Padre (Top Level Window). Se refiere a la ventana actual (Padre o hijo).

Ejemplo: Fig. 1

SQLWindows

75

En este caso hWndItem se refiere a pbConsulta y hWndForm se refiere a la ventana que contiene a pbConsulta.

Ejemplo: Fig. 2

En este caso hWndForm se refiere a frmMain, si se usara hWndItem tambin se referira a frmMain, ya que el objeto actual es la ventana padre.

SQLWindows

76

Utilizando las variables hWndItem y hWndForm, se puede usar el mismo cdigo en diferentes objetos, por ejemplo considere los pasos necesarios para habilitar y deshabilitar los botones ejemplificados en la Fig. 1.

Ejercicio.
1. Cargue la aplicacin de captura de Clientes.
2.

Agregue los mensajes necesarios para habilitar y deshabilitar los botones, en la seccin Constans en User de Global Declarations: = SAM_User + 1 para que al inicio los botones estn

Number : PAM_Activa
3.

Number : PAM_Desactiva = SAM_User + 2 Agregue el cdigo encendidos/apagados segn sea el caso, esto es en la seccin de Message Actions de cada botn incluya la atencin a los mensajes de PAM_Activa y PAM_Desactiva, con su respectivo cdigo ya visto con anterioridad. Y tambin agregue a cada botn la atencin al mensaje de SAM_Create, donde al crearse el propio objeto haremos que se mande a el mismo activar o desactiva, respectivamente para cada uno segn sea el caso. 4. Entonces en el caso de los botones pbConsulta, pbAyuda y pbSalir el cdigo en el mensaje SAM_Create ser el siguiente: Message Actions On SAM_Create Call SalPostMsg( hWndItem, PAM_Activa, 0, 0)
SQLWindows 77

5. y en el caso de los botones pbPrimero, pbAnterior, pbSiguiente, pbUltimo, pbSuma, pbResta, pbCambio, pbBorra y pbImprime en cdigo en el mensaje SAM_Create ser el siguiente: Message Actions On SAM_Create Call SalPostMsg( hWndItem, PAM_Desactiva, 0, 0)

Nota: Recuerde, no dibuje lo que pueda copiar, no copie lo que pueda calcar, no

calque lo que pueda recortar y pegar.

4.6. Asociacin de Acciones a Mens.


Las opciones del men estan ligadas a los botones del tool bar, es decir si el botn de consultas est habilitada el botn de consultas deber estar deshabilitado y as sucesivamente. Para habilitar/deshabilitar las opciones, se usar la funcin

SalisWindowEnabled() (Esta habilitada la ventana?), la cual recibe el Handle del objeto y regresa un valor TRUE si el objeto est habilitado, y False en caso contrario. En la seccin Menu Actions se enviar el mensaje SAM_Click al botn correspondiente:

SQLWindows

78

Ejercicio. Implemente el cdigo anterior y pruebe todas las opciones del men.

En la seccin de Menu de la forma frmMain abra los MenuItems de cada opcin del men y agregue en su respectiva seccin Menu Settings de cada uno lo siguiente:

Menu Actions Enable when : SalIsWindowEnable( pb...) El prefijo (pb...) indica que en ese lugar va el nombre del botn al cual va a estar asociada esta opcin del men.

Y en la seccin de Menu Actions de cada botn el siguiente cdigo: Call SalSendMsg( pb..., SAM_Click, 0, 0 )

Menu Actions

Para el botn de salir llame a la funcn SalQuit( ) en la seccin de Menu Actions.


79

SQLWindows

4.7. Creacin de Ventanas.


Como se coment al inicio, la operacin de una ventana tiene tres modalidades.

Modal

Bloque todas las ventanas de la aplicacin, todo el procesamiento se centra en la ventana Modal, y no se restablece hasta cerrar la ventana. Bloque todas las ventanas de Windows, todo el procesamiento se centra en la ventana System Modal, y no se restablece hasta cerrar la ventana. Permite cambiar de ventana de trabajo en forma indistinta.

System Modal

Modeless

SQLWindows

80

En SQLWindows las ventanas Form Window y Table Window son Modeless (no modales), y puede definirse que se creen automticamente al tiempo de inicio de ejecucin, o tambin se pueden crear segn se requiera. Las ventanas Dialog Box pueden ser configurados en cualquiera de las tres formas, para ello se debe modificar la propiedad de Type of Dialog como se muestra en la figura.

Recuerde que el cdigo contiene la plantilla de la ventana, para crear la ventana se debe invocar la funcin correspondiente. Tipo de Ventana Modal / System Modal Modeless Accin Crear Cerrar Crear Cerrar Funcin SalModalDialog() SalEndDialog() SalCreateWindow() SalDestroyWindow()

SQLWindows

81

4.7.1. Manejo de Ventanas Al crear una ventana el MSWindows establece un valor de manejo El valor de manejo se usa para accesar dicha ventana. El valor de manejo de la ventana permanece durante toda la existencia El manejo de ventana es un valor WORD (rango: 0 to 64K-1) Los nombres de formatos pueden ser usados como parmetros de

nico para ese objeto.

de esa ventana.

funciones que requieren un parmetro del tipo manejo de ventana

4.7.2. Variables de Manejo de Ventana

hWndNULL

Un NULL (cero) de manejo de ventana; usando para pasar, o revisar para, un nmero de manejo de ventana NULL. El manejo de ventana padre activa El item que tiene el foco, o que est recibiendo el mensaje en ese momento El manejo de ventana para el MDI padre activo

HWndForm hWndItem hWndMDI

Ejemplo: Prototipo de Funcin: bOk = SalDisableWindow (Window_Handle)


SQLWindows 82

Campo de Datos: dfField Acciones de Mensaje On SAM_Create Call SalDisableWindow( dfField ) !impida entrada en campo Call SalDisableWindow( hWndItem ) !equivalenta recomendado

Ejercicio: Cree una ventana Acerca de ..., progrmela y prubela, como se muestra en la siguiente imagen:

Agregue el siguiente cdigo para la llamada de la ventana:

SQLWindows

83

Cuando el botn de Ok recibe un Click, debe cerrar la ventana Acerca de ...

En el Tool Box oprima el botn que dice Dialog o desde el Customizer haga doble click en la opcin de Dialog Box. Ahora haga click derecho sobre el nuevo Dialog Box y el de la propiedad de Type of Dialog elija Modal (si es que no est elejida).

Ahorra configure a su gusto esta ventana, pongale un nombre (digAbout), un ttulo,etc.

Agregele algun Background Text como Sistema para el Control de Produccin.

Ahora agregue un botn (pbOk) para cerrar esta ventana que diga OK, y agreguele el siguiente cdigo en la seccin de Message Actions de dicho botn lo siguiente: On SAM_Click SalEndDialog()

SQLWindows

84

Lo que hara cuando el usuario oprimael botn OK el Dialog Box se cerrar. Ahora asocie esta ventana a la opcin del men About, con el cdigo de la pgina anterior ya visto.

Modifique la forma de la ventana Acerca de... a no modal, y pruebela, Puede crear varias ventanas Acerca de... ?.

Evaluacin del captulo 4.


1. Para asignar un valor a una variable se utiliza la instruccin _______________. 2. Una funcin se puede invocar con una instruccin _______________ o bien en forma implcita en una expresin.
3.

En la instruccin If, el control del cdigo a ejecutar lo determina la ______________________ de las instrucciones. Una instruccin Loop requiere de una instruccin

4.

__________________________ para concluir el ciclo.


5.

A diferencia de la instruccin Loop la instruccin __________________ evala una expresin para determinar el fin del ciclo. valores que recibe una funcin se definen en la seccin

6. Los

___________________________________ de la funcin. 7. Mediante el uso de las variables internas _____________ y _____________ es factible hacer cdigo que puede ser utilizado en ms de un objeto.
8.

La funcin ________________________________ recibe un Window Handle y regresa TRUE en caso de que el objeto est habilitado. La funcin ___________________________ se utiliza para crear una ventana Modal. La funcin _________________________ se utiliza para crear una ventana System Modal.

9.

10.

SQLWindows

85

11. 12. Cierto 13. Cierto

Para concluir la operacin de una ventana No Modal se utiliza la funcin Las ventanas se crean Modales o No Modales con slo cambiar la funcin Falso Cuando una ventana es No Modal slo se puede crear una ventana a la vez. Falso

______________. que las crea.

4. CARACTERISTICAS DE LA PROGRAMACIN EN SQLWINDOWS..............53


4.1. Variables......................................................................................................................................................53 4.1.1. Variables de SQLWindows................................................................................................................54 4.1.2. Calificacin de Variables...................................................................................................................54 4.2. Arreglos........................................................................................................................................................56 4.2.1. Arreglos Unidimensionales................................................................................................................56 4.2.2. Arreglos Multidimensionales...........................................................................................................57 4.3. Constantes....................................................................................................................................................60 4.3.1. Constantes Predefinidas.....................................................................................................................62 4.4. Lenguaje SAL..............................................................................................................................................63 4.4.1. Instrucciones del Lenguaje SAL........................................................................................................63 4.4.2. Funciones del Lenguaje SAL.............................................................................................................70 4.5. Cdigo Reusable........................................................................................................................................75 4.6. Asociacin de Acciones a Mens.............................................................................................................78 4.7. Creacin de Ventanas................................................................................................................................80 4.7.1. Manejo de Ventanas..........................................................................................................................82 4.7.2. Variables de Manejo de Ventana.......................................................................................................82

SQLWindows

86

Das könnte Ihnen auch gefallen