domingo, 1 de abril de 2012

Directorio Temporal de Windows

Dentro de los requerimientos funcionales de un aplicativo, a menudo se tienen que realizar procesos en una carpeta con permisos de escritura (este es el caso de la carpeta temporal de windows).

A continuación se presenta el codigo de  Daniel Barnes, que obtiene la ruta del directorio temporal de windows:

Obtener el directorio temporal de Windows
Autor: Daniel Barnes

Cuando se tienen que crear ficheros temporales o de almacenamiento, el directorio temporal de Windows es el sitio idóneo para colocarlos.

Declarar la siguiente función local externa:
 
FUNCTION ulong GetTempPathA (long nBufferLength, ref string lpBuffer ) LIBRARY "KERNEL32.DLL"

Ahora escribe la siguiente función en cualquier lugar de tu aplicación.

constant long lcl_maxpath = 260
string ls_tempdir
ulong lul_retval
// Windows requiere rellenar esta cadena
ls_tempdir = Fill('0', lcl_maxpath)
// Llamada a la función local externa
lul_retval = THIS.GetTempPatha(lcl_maxpath, ls_tempdir)
// Windows devuelve la longitud de la cadena. Si es mayor que cero es que ha encontrado el directorio temporal de Windows.
IF lul_retval > 0 THEN

    ref_dir = ls_tempdir

    RETURN SUCCESS

END IF
// Si no lo encuentra o falla la llamada a la función
ref_dir = ''
RETURN FAILURE

Centrar una Ventana - GetEnvironment

Getenvironment, permite en tiempo de ejecución obtener valores del sistema operativo (tales como el Alto y Ancho del monitor, etc),

Como ejemplo se muestra una funcion para centrar una ventana (útil si es de tipo response).

Long ll_screenWidth,ll_screenHeight
environment lenv_display

if GetEnvironment(lenv_display) = 1 then
ll_screenWidth = PixelsToUnits(lenv_display.screenwidth,XPixelsToUnits!)
ll_screenHeight = PixelsToUnits(lenv_display.screenheight,YPixelsToUnits!)
this.x = (ll_screenWidth - this.width) / 2
this.y = (ll_screenHeight - this.height) / 2
end if


Messagebox - Varias Lineas

En PB, se pueden mostrar mensajes de multimples lineas insertando un retorno de carro en una cadena:

Se tiene que insertar en la parte de la cadena donde quieres hacer el retorno de carro lo siguiente:
~n~r

Es útil para Messagebox con varias líneas.

Ejemplo:

Messagebox ("Error", "La base de datos ~n~r no se ha actualizado correctamente")

Utilizar el Registro de Windows

Algunas implementaciones de Sistemas requieren validar el separador decimal, éste parámetro se encuentra en una ruta del Registro de Windows.

Desde powerbuilder se puede Leer y escribir valores en el Registro, a continuación un ejemplo obteniendo el Valor del Separador decimal:

Determinar en ejecución si el separador es decimal o de miles.

string ls_decimal, ls_thousand
string ls_regKey = "HKEY_CURRENT_USER/Control Panel/International"
RegistryGet(ls_regKey, "sDecimal", ls_decimal)
RegistryGet(ls_regKey, "sThousand", ls_thousand)

Llamar a una funcion de la API de Windows

A veces es necesario utilizar funciones del Sistema Operativo, esto se implementa con una llamada a una funcion de una DLL del Sistema:

A continuación un ejemplo para obtener el nombre de la PC donde se ejecuta el Programa:

Obtener el nombre de usuario y de la PC.

Se necesita declarar dos funciones API externas:

FUNCTION long GetComputerNameA(ref string ComputerName, ref ulong BufferLength) LIBRARY "KERNEL32.DLL"
FUNCTION long GetUserNameA(ref string UserName, ref ulong BufferLength) LIBRARY "ADVAPI32.DLL"

Implementación de la Función:

long ll_ret
string ls_ComputerName, ls_UserName
ulong BufferLength = 250
ls_ComputerName = Space(BufferLength)
ls_UserName = Space(BufferLength)
ll_ret = GetComputerNameA(ls_ComputerName, BufferLength)
ll_ret = GetuserNameA(ls_UserName, BufferLength)


martes, 27 de marzo de 2012

Power Builder es un lenguaje de cuarta generación(4GL), con las características de: RAD(Rapid Application Development) RAM(Rapid Application Maintenance) RAE(Rapid Application Enchancement) Estas características le dan al programador una ventaja sobre otros lenguajes de programación, ya que le permiten ser más productivo en el desarrollo de aplicaciones, acortándose el tiempo de programación. Existen varias versiones de Power Builder, dentro de las más recientes tenemos Ver 8.x, Ver 9.x, Ver 10.x PB(Power Builder) es un producto de SYBASE, el cual viene acompañado de una base de datos relacional de nombre ANYWARE o simplemente conocida como el producto SYBASE. PowerBuilder es un ambiente para desdarrollar aplicaciones graficas. Usando PowerBuilder, usted puede facilmente desarrollar poderosas aplicaciones grafica que accesa a servidores de base de datos. PowerBuilder provee todas las herramientas que necesitas para construir aplicaciones industriales, tales como, contabilidad, sistemas de manufactura, etc. PowerBuilder es un entorno de desarrollo comprensivo para construir aplicaciones cliente /servidor de alto desempeño para la familia Windows, que combina una interface gráfica intuitiva con un poderoso lenguaje de programación orientado a objetos. Desarrollo en Internet: Power Builder incluye herramientas que le permiten construir aplicaciones basadas en Web y extender la existencia de su aplicación al Internet.

Links para la descarga:

http://rapidshare.com/files/159052572/PB_105.part1.rar
http://rapidshare.com/files/159065659/PB_105.part2.rar
http://rapidshare.com/files/159091087/PB_105.part3.rar
http://rapidshare.com/files/159358561/PB_105.part4.rar
http://rapidshare.com/files/159380451/PB_105.part5.rar
http://rapidshare.com/files/159422415/PB_105.part6.rar
http://rapidshare.com/files/159465622/PB_105.part7.rar