Tengo una ventana (Window Object) con dos DataWindows (Cabecera/Detalle) donde cargo los titulos de los campos de un DataWindow a un campo DropDownListBox del otro DataWindow.
El DataWindow que tendra el campo de tipo DropDownListBox es un DataWindow de tipo External el cual tiene la siguiente estructura:
El siguiente código debe ir en el evento Open de la ventana para poder cargar los titulos de los campos del DataWindow Detalle al campo DropDownListBox del DataWindow Cabecera que es External:
//==========================================================================
// Cargar titulos de los campos de dw detalle
//---------------------------------------------------------------------------------------------------
Long ll_lastcol, ll_rc = 1, ll_col
String ls_colname, ls_label, ls_filtro, ls_descripcion = '', ls_columns[]
is_columns[] = ls_columns[]
//---------------------------------------------------------------------------------------------------
// Captura el Nro. de Columnas en el DataWindow
//---------------------------------------------------------------------------------------------------
ll_lastcol = Integer(dw_detail.Object.DataWindow.Column.Count)
//---------------------------------------------------------------------------------------------------
// Llena las Columnas
//---------------------------------------------------------------------------------------------------
FOR ll_col = 1 TO ll_lastcol
ls_colname = dw_detail.Describe("#" + String(ll_col) + ".Name")
IF dw_detail.Describe( ls_colname + ".visible" ) = "1" THEN
ls_label = dw_detail.Describe(ls_colname + "_t.Text")
IF ls_label = '!' THEN
ls_label = dw_detail.Describe( "evaluate('wordcap(~"" + ls_colname + "~")',1)" )
END IF
ls_label = ls_label
ls_descripcion = ls_descripcion + ls_label + '~t' + String(ll_rc) + '/'
is_columns[ll_rc] = Trim(ls_colname)
ll_rc++
END IF
NEXT
dw_filter.Object.columna.Values = ls_descripcion
//==========================================================================
Espero le sea de mucha utilidad, cualquier duda o consulta no duden en escribir a jorgebarzola@gmail.com que les respondere con mucho gusto.
Saludos.
martes, 8 de septiembre de 2015
Obtener la resolución de la pantalla
Hola a todos con este código podemos obtener la resolución de la pantalla:
String ls_Resolucion
Environment env
GetEnvironment(env)
ls_Resolucion= String(env.Screenwidth) + " x " + String(env.ScreenHeight)
String ls_Resolucion
Environment env
GetEnvironment(env)
ls_Resolucion= String(env.Screenwidth) + " x " + String(env.ScreenHeight)
martes, 4 de agosto de 2015
Modernizar la presentación de aplicaciones PowerBuilder
Muchas aplicaciones PowerBuilder han sido desarrolladas hace mucho tiempo y la clásica presentación es tener un menú principal asociado con un toolbar con iconos de las principales opciones, para facilitar el acceso al usuario.
He desarrollado una presentación moderna para aplicaciones PowerBuilder utilizando los componentes Outlook Style Bar y Ribbon Style Menu de PB Ultimate Suite.
Utilizo Outlook Style Bar para obtener un Menú de estilo Outlook en PowerBuilder que reemplaza al clásico menú principal y permita abrir windows dentro de un marco mdi! o mdihelp!.
Utilizo Ribbon Style Menu para obtener un Menú estilo Ribbon en PowerBuilder el cual tiene las opciones comunes que toda ventana necesita como Nuevo, Editar, Guardar, Buscar, Vista Previa, Imprimir, etc.
Presentación clásica:
Cualquier consulta al correo jorgebarzola@gmail.com
He desarrollado una presentación moderna para aplicaciones PowerBuilder utilizando los componentes Outlook Style Bar y Ribbon Style Menu de PB Ultimate Suite.
Utilizo Outlook Style Bar para obtener un Menú de estilo Outlook en PowerBuilder que reemplaza al clásico menú principal y permita abrir windows dentro de un marco mdi! o mdihelp!.
Utilizo Ribbon Style Menu para obtener un Menú estilo Ribbon en PowerBuilder el cual tiene las opciones comunes que toda ventana necesita como Nuevo, Editar, Guardar, Buscar, Vista Previa, Imprimir, etc.
De esta manera reemplazo al toolbar de opciones asociado a la ventana de la presentación clásica.
Presentación clásica:
Presentación moderna:
Menú Ribbon en PowerBuilder
Ribbon Style Menu es un componente de PB Ultimate Suite que permite reemplazar el menú tradicional de PowerBuilder por un menú de estilo Ribbon.
PB Ultimate Suite tiene otro tipo de presentación el cual reemplaza ventanas por pestañas, muchas aplicaciones PowerBuilder tienen una gran cantidad de objetos windows, mi Framework cuenta con windows base o ancestras. Por experiencia les digo el usuario tiene mas facilidad en trabajar con windows.
He creado esta presentación utilizando el componente Ribbon Style Menu para modernizar solo la presentación de las aplicaciones PowerBuilder reemplazando el menú tradicional por el menú de estilo Ribbon.
Permite agrupar en pestañas opciones y seguir abriendo windows dentro del marco.
La estructura del menú de estilo Ribbon la define en un objeto menú y desde este codificar los objetos windows que desea abrir según la opción.
Consultas al correo jorgebarzola@gmail.com
Menu Outlook en PowerBuilder
Siempre se ha buscado la manera de que nuestras aplicaciones PowerBuilder se vean mejor, por tal muchos hemos puesto el menú de opciones en un objeto TreeView a un lado del window principal ya sea tipo mdi! o mdihelp!.
He utilizado el componente Outlook Style Bar de PB Ultimate Suite para poder dar a mi Menu TreeView el cual se carga desde un objeto Menú el estilo del Menú Outlook.
Si se quiere separar por módulos se asocian objetos TreeViews y podriamos tener una presentación moderna en las aplicaciones PowerBuilder como muestra la siguiente imagen:
Consultas al correo jorgebarzola@gmail.com
martes, 21 de julio de 2015
Obtener nombre de la ventana activa
Para obtener el nombre de la ventana activa debemos escribir
This.ClassName()
Ejemplo:
String ls_NombreVentana
ls_NombreVentana = This.ClassName()
MessageBox('Nombre de Ventana Activa', ls_NombreVentana)
This.ClassName()
Ejemplo:
String ls_NombreVentana
ls_NombreVentana = This.ClassName()
MessageBox('Nombre de Ventana Activa', ls_NombreVentana)
Obtener Fecha y Hora de Servidor Oracle
Para obtener la fecha del servidor Oracle creamos una función (Function Object):
$PBExportHeader$f_fecha_servidor.srf
global type f_fecha_servidor from function_object
end type
forward prototypes
global function datetime f_fecha_servidor ()
end prototypes
global function datetime f_fecha_servidor ();
// -------------------------------------------------------------------------------------
// Funcion : f_fecha_servidor
// Proposito: Devuelve la fecha y hora del servidor Oracle
// Creador : Jorge A. Barzola Rosadio
// Fecha : 12/03/2013
// -------------------------------------------------------------------------------------
DateTime ldt_fecha
SELECT SYSDATE
INTO :ldt_fecha
FROM dual;
Return ( ldt_fecha )
end function
Este ejemplo es para asignar la fecha y hora del servidor Oracle a un campo del DW:
dw_1.Object.fecha[ll_Fila] = f_fecha_servidor()
$PBExportHeader$f_fecha_servidor.srf
global type f_fecha_servidor from function_object
end type
forward prototypes
global function datetime f_fecha_servidor ()
end prototypes
global function datetime f_fecha_servidor ();
// -------------------------------------------------------------------------------------
// Funcion : f_fecha_servidor
// Proposito: Devuelve la fecha y hora del servidor Oracle
// Creador : Jorge A. Barzola Rosadio
// Fecha : 12/03/2013
// -------------------------------------------------------------------------------------
DateTime ldt_fecha
SELECT SYSDATE
INTO :ldt_fecha
FROM dual;
Return ( ldt_fecha )
end function
Este ejemplo es para asignar la fecha y hora del servidor Oracle a un campo del DW:
dw_1.Object.fecha[ll_Fila] = f_fecha_servidor()










