lunes, 12 de octubre de 2009

MDI con Menu Treeview

Hola a todos, despues de mucho tiempo posteando, bueno nose si sera el nombre correcto (MDI con Menu Treeview) quizas sea mejor MDI dividido; bueno es lo de menos. Seguiremos los sgtes pasos:

1 - Suponiendo que ya tenemos nuestro window mdi (ejemplo w_frame)
2 - Suponiendo tambien que tenemos nuestro menu principal (ejemplo m_frame)
3 - Crearemos un Objeto Window (w_menu_treeview), tipo Child, al cual le agregaremos un objeto TreeView.

4 - Activar la propiedad LinesAtRoot del Objeto TreeView, esto nos permite mostrar el desplazamiento al estilo explorer.

5 - En el Evento Open de w_frame copiar y pegar este script:

//Se abre w_menu_treeview
Open(w_menu_treeview, This)

//Posicionando w_menu_treeview a un lado del frame
w_menu_treeview.Y = w_menu_treeview.Y + 112

6 - En el Evento Resize de w_frame copiar y pegar este script:

IF IsValid(w_menu_treeview) THEN
w_menu_treeview.Height = NewHeight - w_menu_treeview.Y - mdi_1.MicroHelpHeight
mdi_1.Width = NewWidth - w_menu_treeview.Width
mdi_1.Height = w_menu_treeview.Height
END IF

7 - En el Evento Constructor del Objeto TreeView de w_menu_treeview, solo por dar un ejemplo copiar y pegar este script:

Long ll_Expandir, ll_Item, ll_SubItem

ll_Item = tv_1.InsertItemLast(0,"Archivo", 1)

ll_SubItem = tv_1.InsertItemLast(ll_Item,"Window", 2)

ll_Expandir = tv_1.FindItem( RootTreeItem!, 0 )
tv_1.ExpandAll( ll_Expandir )

8 - En el Evento SelectionChanged del Objeto TreeView de w_menu_treview, tambien para el ejemplo copiar y pegar este script:

Integer li_Ind
String ls_MenuEtiqueta

TreeViewItem l_tvi

This.GetItem(NewHandle, l_tvi)

ls_MenuEtiqueta = l_tvi.Label

Choose Case ls_MenuEtiqueta
Case "Window"
OpenSheet(w_window, w_frame, 1, Original!)
End Choose


Disculpas por no subir imagenes, estoy en el trabajo y mi explorer es limitado. Pueden descargar el archivo ejemplo de:

http://www.megafileupload.com/en/file/143776/MDI-Treeview-rar.html

miércoles, 10 de junio de 2009

USA y Perú: Los países que mas usan PowerBuilder

Según los resultados publicados de la última encuesta realizada por la empresa Francesa Novalys en el año 2008, los 5 países que mas usan PowerBuilder son:

Estados Unidos (34.25%)
Perú (19.51%)
Francia (7.61%)
México (7.16%)
España (5.42%)

Aca les dejo la Fuente:

http://www.powerbuilder.org/modules.php?name=News&file=article&sid=376&mode=thread&order=0&thold=0

viernes, 20 de marzo de 2009

Conexión a SQL Server 2000 desde PowerBuilder 10.0


Desde la versión 10.0 no existe Driver Nativo, asi que estos son los pasos para la Conexión a SQL Server 2000 desde esta versión:

1. Buscamos el Driver OLE Microsoft OLE DB, luego clic derecho y elegimos New Profile...

2. Luego seguimos el sgte paso:
3. Clic en la pestaña Preview, luego clic en boton Copy, luego clic en el boton Test Connection, si la conexion es satisfactoria o exitosa, nos mostrara un mensaje (Connection successful), por ultimo clic en Aceptar

martes, 17 de febrero de 2009

Fuentes de datos (Data Source)

Los datos que se cargan en el DataWindow provienen de una fuente de datos. Las fuentes de datos que se pueden especificar son:
  • Quick Select
  • SQL Select
  • Query
  • External
  • Stored Procedure

Quick Select: Se utiliza para recuperar los datos desde una sola tabla: solo es necesario seleccionar las columnas, los criterios de selección y el ordenamiento.

SQL Select: Permite tener mas control sobre la recuperación de datos. Permite consultas correlacionadas, columnas computadas, agrupamiento de filas y operaciones complejas de recuperación de datos.

Query: Se puede emplear cuando la fuente de datos proviene de una consulta creada y almacenada con el Query Painter.

External: Se utiliza cuando la fuente de datos no es un sistema de bases de datos relacional como las entradas del usuario o un gestor de archivos planos.

Stored Procedure: Permite recuperar los datos a través de procedimientos almacenados en la base de datos.

Estilo de presentación de DataWindow

El estilo de presentación para seleccionar un objeto DataWindow determina el formato a utilizar. Puede utilizar el formato que aparece o modificarlo para satisfacer sus necesidades. Cuando se crea un objeto DataWindow, usted puede elegir entre los estilos de presentación que figuran en la imagen siguiente:

Composite:
Permite mostrar simultáneamente mas de un objeto DataWindow en un solo control DataWindow.


Crosstab:
Presenta los datos como una tabla de dos entradas donde las etiquetas de filas y columnas representan el dominio de dos variables, y las intersecciones de filas y columnas el resultado de una operación ejecutada con una tercera variable.


Freeform:
Permite organizar la presentación de los datos en forma de ficha. Se utiliza para las ventanas de entrada de datos.

Graph:
Muestra una representación gráfica de los datos.


Grid:
Es similar al estilo tabular ya que muestra los datos en un reticulado de filas y
columnas. A diferencia del estilo tabular, el usuario puede reordenar las columnas en
tiempo de ejecución.


Group:
Es un DataWindow tabular que muestra los datos agrupados según determinado criterio.


Label:
Se utiliza para generar etiquetas similares a las etiquetas de correo.


N-Up:
Es similar a un reporte de N columnas. Muestra mas de una fila de datos en una línea de impresión.


OLE 2.0:
Permite especificar una aplicación externa que se utilizará como un servidor OLE para gestionar la presentación del DataWindow.


RichText:
Se utiliza para incorporar datos dentro de un texto a partir de un archivo en formato RTF. Es útil para la elaboración de cartas modelo y en la combinación de
correspondencia (mail merge).


Tabular:
Muestra los datos en formato tabla (filas y columnas).

TreeView:
Disponible desde la versión 10.5. Presenta la información en formato de árbol jerárquico.

lunes, 2 de febrero de 2009

DataWindow Buffers

Cuando la función Retrieve() es llamado, PowerBuilder recupera datos desde la base de datos y almacena esto en el buffer de la memoria, los datos son leidos desde el buffer y mostrados en el Control DataWindow, internamente PowerBuilder mantiene un Edit Control y 4 buffers para cada control DataWindow que son los siguientes:
  • Original
  • Primary
  • Deleted
  • Filtered

Cuando se recuperan los datos de la base de datos, utilizando la función Retrieve(), esto se recupera en el buffer Primary y los demas buffers se mantienen vacios hasta realizar una actividad que pueda llevarlos a ellos.

Adicionando Filas

Se puede agregar filas al DataWindow con las funciones InsertRow (), ImportFile (), ImportString(), ImportClipboard() todas añaden o adicionan filas al buffer primary, pero no tiene ningún efecto sobre otros búferes, como se muestra en la siguiente figura.

Borrando Filas

Cuando se elimina una fila con la función DeleteRow(), la fila o las filas son transferidos desde el buffer Primary al buffer Deleted. Por ejemplo, si elimina Producto 5, los buffer se verán así:

Filtrando Filas

Cuando se filtran las filas utilizando la función SetFilter(), todas las filas filtradas que residen en el buffer Primary son movidas al buffer Filter. Por ejemplo, si el criterio del filtro product_no debe ser superior a 3, los buffers se verán así:

product_no > 3

Modificando Filas

Si modifica una fila en el DataWindow, la fila en el buffer Primary es modificada y el valor original se copia en el buffer Original. Por ejemplo, supongamos que se cambia la descripción del product_no 4 de "Table lamp" a "Desk", los buffers se verán así:

domingo, 18 de enero de 2009

Standard Visual - User Object

Los Standard Visual - User Object heredan caracteristicas de un control standar de PowerBuilder.

Creando un Standard Visual - User Object

Para crear un Standard User Object, presionamos click en el icono New del PowerBar y escogemos Standar Visual del Tab PB Object.

Creando un CommandButton User Object

Escogemos CommandButton

Nota: Es muy común usar CommandButton's en nuestras apliaciones, entonces para dar un ejemplo de herencia en PowerBuilder crearemos un CommandButton User Object base o ancestro con nombre u_cb.

Lo sgte que tenemos que hacer es heredar del objeto u_cb (Standard Visual CommandButton Ancestro), buscamos el objeto u_cb, le da damos click derecho y elegimos Inherit.

Luego Crearemos el CommandButton Guardar, que va ser descendiente de la clase u_cb

Y asi sucesivamente creamos los CommandButton's que nuestra aplicación necesite ejemplo: "Nuevo, Eliminar, Imprimir, Modificar, Eliminar, Cerrar, etc"

User Object

Una de las principales características de la programación orientada a objetos es la reutilización. En una aplicación, que normalmente tiene una selección de controles u objetos, que fundamentalmente realizan la misma tarea, dispersos en todo el diseño.

Existen dos tipos de User Object:

1 - Visual User Objects

  • Custom Visual
  • External Visual
  • Standard Visual

2 - No Visual(Class)

  • Custom Class
  • Standard Class

Background Color

Seleccionamos los campos que deseamos cambiar de color, en Propiedades buscamos el Tab Font y en Background Color en el boton que esta a lado le damos click:

Al dar le click nos mostrara la sgte ventana, digitamos lo sgte:

if ( getrow() = currentrow() , rgb(192, 192, 192) , rgb(255, 255, 255) )

Click en Verify, para verificar si es codigo ingresado es correcto y si es asi click en OK, listo eso es todo.

Desactivar una columna en DataWindow

0 - Falso, la columna no esta protegida.
1 - Es cierto, la columna está protegida.

Sintaxis:

dw_control.Object.columnname.Protect

Ejemplo:

dw_1.Object.num_doc.Protect = 1

Ó

dw_1.Modify("num_doc.Protect=1")

DataWindow Edit Format (dd/mm/yyyy)

En las propiedades del campo tipo fecha (Datetime) del DW, buscamos el Tab Edit y en las propiedades colocamos :

Style Type : EditMask
Mask: dd/mm/yyyy

Desplegando o creando archivos ejecutables

En este post explicare la forma mas practica que utilizo para desplegar o crear archivos ejecutables (PBD's, PowerBuilder Dynamic Libraries):

1 - Para crear los PBD's o archivos ejecutables, tenemos que crear un objeto Project.

2 - Ya creado el objeto Project, en el Painter del mismo:

  • 1: Executable File Name, Nombre del Archivo Ejecutable
  • 2: Rebuild, elegir Full
  • 3: Activar los PBL's que seran PBD's
Painter del Objeto Project

3 - Realizado todo lo anterior en el PowerBar dar click al icono Desploy para generar los PBD's

Espero sea de utilidad, cualquier duda o comentario solo escriban que gustoso respondere.