entrenamiento_powerbuilder_parte2

Upload: geniomora

Post on 07-Apr-2018

222 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    1/38

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    2/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 28

    La estructura de las pginas Departamentosy Niveleses la misma.

    40.1. En la barra de herramientas:

    Botn Window New

    Con el botn derecho sobre la nueva ventana, o con doble click, modificar

    las propiedades de la ventana:

    Window Type: Popup.

    Las opciones Resizabley Maximize Boxno debern seleccionarse.

    40.2 Insertar un control Tab en la ventana y darle el tamao adecuado.

    Seleccionar el control insertado y hacer click con el botn derecho del

    mouse en el rea superior que no est ocupada por el TabPage (Cada una

    de las pginas del control Tab recibe este nombre).

    Name: tab_actualizaciones

    Seleccionar Bold Selected Text(El texto de la pgina seleccionada se

    muestra en negrilla)

    OK

    40.2.1. Hacer click con el botn derecho dentro de la primera pgina (la que

    tiene el texto none) y elegir propiedades:

    Name:tabpage_empleados

    Tab Text:Empleados

    OK

    40.2.2. Insertar los dems controles en la ventana (como lo muestra la figura)

    Un DataWindow control (se usa el botn que se encuentra en la barra de

    herramientas junto con los dems controles. No confundir con el boton

    de DataWindow Object que se encuentra en la barra de herramientas

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    3/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 29

    superior o PowerBar).En las propiedades del nuevo DataWindow elegir

    name:dw_act_empleados y seleccionar VscrollBar.

    Los botones Nuevo (cb_nuevo), Borrar (cb_borrar), Actualizar

    (cb_actualizar), Cargar Datos (cb_cargar).

    Los botones para desplazarse por las filas del DataWindow: Primero

    (cb_primero), Siguiente (cb_siguiente), Anterior (cb_anterior), Ultimo

    (cb_ultimo).

    40.2.3. Guardar el trabajo: File4Save. El nombre de la nueva ventana ser

    w_actualizaciones.

    40.2.4. Modificar la opcin actualizar del men, para que se abra la nueva

    ventana:

    En la barra de herramientas oprimir el botn Menu.

    Seleccionar el men ya realizado (p.ej. m_principal) 4OK

    Seleccionar la opcin Actualizar en la ventana de edicin del men.

    Oprimir el botn Scripten la barra de herramientas

    Escribir open(w_actualizaciones)

    Cerrar la ventana del editor de texto y la ventana de edicin del men.

    Guardar las modificaciones hechas al men.

    40.2.5. Correr la aplicacin y probar el funcionamiento del men y la nueva

    ventana.

    40.2.6. Crear un DataWindow Object en el que se relacionen el cdigo y nombre

    de los departamentos. (se usa el botn DataWindow de la barra de

    herramientas PowerBar)

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    4/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 30

    Data Source4 SQL Select

    Presentation Style4 Grid

    En la ventana Select Tablesseleccionar la tabla departamento.4Open

    Seleccionar las columnas cdigo de departamento y nombre de

    departamento.

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    Colocar los encabezados apropiados.

    File4Save. En la ventana Save DataWindow:

    Name:ddd_depto (ser utilizado como DropDownDatraWindow)

    OK Cerrar la ventana de edicin del DataWindow

    40.2.7. Crear un DataWindow Object para actualizar los datos relacionados

    con los empleados.

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

    Data Source 4 SQL Select

    Presentation Style4 Tabular

    En la ventana Select Tablesseleccionar la tabla Empleado.4Open

    Seleccionar todas las columnas de la tabla empleado.

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    Elegir Properties en el menu poup (con el botn derecho sobre el

    DataWindow):

    En la pgina General: Color4 ButtonFace

    OK

    Para los encabezados de todas las columnas: Elegir Properties en el

    menu poup (con el botn derecho):

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    5/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 31

    En la pgina General: Border43D Raised. Text4modificar el texto

    En la pgina Font: Background4ButtonFace.

    OK Para la columna dept_id (cdigo de departamento): Elegir Propertiesen

    el menu poup (con el botn derecho):

    En la pgina General: Border43D Lowered.

    En la pgina Font: Background4WndBkrnd.

    En la pgina Edit:

    - Style4DropDownDW

    - DataWindow4 ddd_depto (el que se cre en el paso 40.2.6.)

    - Display Column4

    dept_nombre (nombre de departamento)- Data Column4dept_id (cdigode departamento)

    - Wdth of DropDown(ancho del DropDown)4 300%

    - Seleccionar VscrollBar

    OK

    File4Save. En la ventana Save DataWindow:

    Name:d_act_empleados

    OK

    Cerrar la ventana de edicin del DataWindow

    40.2.8. Seleccionar el DataWindow dw_act_empleados en la pgina

    Empleados. Hacer click con el botn derecho y seleccionar la opcin

    properties del men poup.

    DataWindow Object Name4browse...4d_act_empleados (el que se

    cre en 40.2.7)

    OK

    40.3. Para agregar una nueva pgina al control Tab, se hace click con el botn

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    6/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 32

    derecho sobre el control. En el men popup 4 Insert Tab Page

    40.3.1. Hacer click con el botn derecho dentro de la nueva pgina (la que

    tiene el texto none) y elegir propertiesen el men poup:

    Name:tabpage_actividades

    Tab Text:Actividades

    OK

    40.3.2. Insertar los dems controles en la ventana (como lo muestra la figura)

    Un DataWindow control. En las propiedades del nuevo DataWindow

    elegir name:dw_act_actividades y seleccionar VscrollBar.

    Los botones Nuevo (cb_nuevo_a), Borrar (cb_borrar_a), Actualizar

    (cb_actualizar_a), Cargar Datos (cb_cargar_a). Los nombres de los

    botones deben ser diferentes a los utilizados en la pgina Empleados.

    Los botones para desplazarse por las filas del DataWindow: Primero

    (cb_primero_a), Siguiente (cb_siguiente_a), Anterior (cb_anterior_a),

    Ultimo (cb_ultimo_a).

    40.3.3. Crear un DataWindow Object en el que se relacionen el cdigo y nombre

    de los empleados. (se usa el botn DataWindow de la barra de

    herramientas PowerBar)

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

    Data Source 4 SQL Select

    Presentation Style4 Grid

    En la ventana Select Tablesseleccionar la tabla empleado.4Open

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    7/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 33

    Seleccionar las columnas cdigo de empleado, nombre y apellido del

    empleado.

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    Colocar los encabezados apropiados.

    File4Save. En la ventana Save DataWindow:

    Name:ddd_empleado (ser utilizado como DropDownDatraWindow)

    OK

    Cerrar la ventana de edicin del DataWindow

    40.3.4. Crear un DataWindow Object en el que se relacionen el cdigo y nombrede los niveles.

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

    Data Source 4 SQL Select

    Presentation Style4 Grid

    En la ventana Select Tablesseleccionar la tabla nivel. 4Open

    Seleccionar las columnas cdigo de nivel y nombre de nivel.

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    Colocar los encabezados apropiados.

    File4Save. En la ventana Save DataWindow:

    Name:ddd_nivel (ser utilizado como DropDownDatraWindow)

    OK

    Cerrar la ventana de edicin del DataWindow

    40.3.5. Crear un DataWindow Object para actualizar los datos relacionados

    con los actividades de los empleados.

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    8/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 34

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

    Data Source 4 SQL Select

    Presentation Style4 Tabular

    En la ventana Select Tablesseleccionar la tabla Actividad. 4 Open

    Seleccionar todas las columnas de la tabla Actividad.

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    Elegir Properties en el menu poup (con el botn derecho sobre el

    DataWindow):

    En la pgina General: Color4 ButtonFace OK

    Para los encabezados de todas las columnas: Elegir Properties en el

    menu poup (con el botn derecho):

    En la pgina General: Border43D Raised. Text4modificar el texto

    En la pgina Font: Background4ButtonFace.

    OK Para la columna emp_id (cdigo del empleado): Elegir Propertiesen el

    menu poup (con el botn derecho):

    En la pgina General: Border43D Lowered.

    En la pgina Font: Background4WndBkrnd.

    En la pgina Edit:

    - Style4DropDownDW

    - DataWindow4 ddd_empleado (el que se cre en el paso 40.3.3.)

    - Display Column4 emp_id (cdigo del empleado)

    - Data Column4emp_id (cdigo del empleado)

    - Wdth of DropDown(ancho del DropDown)4 400%

    - Seleccionar VscrollBar

    OK

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    9/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 35

    Para la columna niv_id (cdigo del nivel): Elegir Properties en el menu

    poup (con el botn derecho):

    En la pgina General: Border43D Lowered.

    En la pgina Font: Background4WndBkrnd.

    En la pgina Edit:

    - Style4DropDownDW

    - DataWindow4 ddd_nivel (el que se cre en el paso 40.3.3.)

    - Display Column4 niv_id (cdigo del nivel)

    - Data Column4niv_id (cdigo del nivel)

    - Wdth of DropDown(ancho del DropDown)4 250%

    - Seleccionar VscrollBar OK

    File4Save. En la ventana Save DataWindow:

    Name:d_act_actividades

    OK

    Cerrar la ventana de edicin del DataWindow

    40.3.6. Seleccionar el DataWindow dw_act_actividades en la pgina

    Empleados. Hacer click con el botn derecho y seleccionar la opcin

    properties del men poup.

    DataWindow Object Name4browse...4d_act_actividades (el que se

    cre en 40.3.5)

    OK

    40.4. El procedimiento utilizado para agregar las dos pginas restantes

    (Departamentos y Niveles) es bastante similar al descrito anteriormente.

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    10/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 36

    40.5. Hasta ahora no se han escrito los programas (scripts) para ninguno de los

    eventos de los controles creados.

    40.5.1. En la ventana w_actualizar, seleccionar la pgina Empleados

    (tabpage_empleados)

    Hacer click con el botn derecho sobre la pgina y seleccionar la opcin

    script en el men popup.

    En el editor, seleccionar el evento constructor del listbox de la parte

    superior izquierda de la ventana. El siguiente es el cdigo para dicho

    evento:

    Para compilar el script: en el men; design4compile;o tambin Ctrl+L ;

    o al cerrar la ventana del editor, se compila automticamente.

    Para el botn que de desplazamiento hasta la primera fila (cb_primero):

    -------Evento: constructor--------------

    -------Control: tabpage_empleados-------

    //Se selecciona el Transaction Object, que proporciona la

    //informacin para la comunicacin con la base de datos y se

    //deshabilitan los botones de borrar y actualizar.

    dw_act_empleados.SetTransObject(SQLCA)

    cb_borrar.enabled = false

    cb_actualizar.enabled = false

    -------Evento: clicked--------------

    -------Control: cb_primero----------

    dw_act_empleados.SetFocus() // El datawindow toma el foco

    dw_act_empleados.ScrollToRow(1) // Se desplaza hasta la fila No. 1

    dw_act_empleados.SetColumn(1) // Se selecciona la primera columna

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    11/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 37

    Para el botn de desplazamiento a la siguiente fila (cb_siguiente):

    Para el botn de desplazamiento a la fila anterior(cb_anterior):

    Para el botn que de desplazamiento hasta la ultima fila (cb_ultimo):

    -------Evento: clicked---------------------Control: cb_siguiente----------

    long l_fila_actual

    dw_act_empleados.SetFocus()

    l_fila_actual = dw_act_empleados.getrow() //el nmero de la fila

    //seleccionada actualmente

    dw_act_empleados.ScrollToRow(l_fila_actual + 1) //se desplaza a la

    //fila siguiente

    dw_act_empleados.SetColumn(1) //se seleccona la primera columna

    -------Evento: clicked--------------

    -------Control: cb_anterior----------

    long l_fila_actual

    dw_act_empleados.SetFocus()

    l_fila_actual = dw_act_empleados.getrow() //el nmero de la fila

    //seleccionada actualmente

    dw_act_empleados.ScrollToRow(l_fila_actual - 1) //se desplaza a la//fila anterior

    dw_act_empleados.SetColumn(1) //se seleccona la primera columna

    -------Evento: clicked--------------

    -------Control: cb_ultimo----------

    long l_numfilas

    dw_act_empleados.SetFocus()

    l_numfilas = dw_act_empleados.RowCount() //se obtiene el nmero de

    //filas en el datawindow

    dw_act_empleados.scrolltorow(l_numfilas) //se desplaza hasta la ltima

    dw_act_empleados.setcolumn(1) //se selecciona la primera columna

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    12/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 38

    Para el botn Cargar Datos (cb_cargar):

    Para el botn de insertar un nuevo empleado (cb_nuevo)

    -------Evento: clicked--------------

    -------Control: cb_cargar----------

    long l_numfilas

    //se recibe la informacin de la base de datos en el datawindow

    // dw_act_empleados

    dw_act_empleados.retrieve()

    l_numfilas=dw_act_empleados.RowCount()

    dw_act_empleados.ScrollToRow(l_numfilas)

    //Si el nmero de filas en el datawindow es 0 entonces se deshabilita

    //el botn de borrar, de lo contrario, se habilita.

    if l_numfilas = 0 then

    cb_borrar.enabled = false

    elsecb_borrar.enabled = true

    end if

    -------Evento: clicked--------------

    -------Control: cb_nuevo------------

    dw_act_empleados.SetTransObject(SQLCA)

    long fila_nueva

    //la nueva filase inserta al final del datawindow

    fila_nueva = dw_act_empleados.InsertRow(0)

    //el datawindow toma el foco

    dw_act_empleados.SetFocus()

    //se desplaza hasta la nueva fila

    dw_act_empleados.ScrollToRow(fila_nueva)

    dw_act_empleados.SetColumn(1)

    cb_actualizar.enabled = true

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    13/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 39

    Para el botn de borrar un empleado (cb_borrar)

    Para el botn de actualizacin de datos, despus de haber realizado

    inserciones y/o borrados (cb_actualizar)

    -------Evento: clicked--------------

    -------Control: cb_borrar-----------

    long l_fila_actual

    dw_act_empleados.SetRedraw (false)

    //se guarda el nmero de la fila seleccionada, que es la que se

    //eliminar

    l_fila_actual = dw_act_empleados.getrow()

    //se elimina la fila seleccionada

    dw_act_empleados.DeleteRow (l_fila_actual)

    //si despus de borrarla no quedan filas en el datawindow,

    //se deshabilita el botn de borrar

    if dw_act_empleados.RowCount()=0 then

    cb_borrar.enabled = false

    elsedw_act_empleados.SetColumn(1)

    dw_act_empleados.SetFocus()

    end ifcb_actualizar.enabled = true

    dw_act_empleados.SetRedraw (true)

    -------Evento: clicked---------------------Control: cb_actualizar-----------

    dw_act_empleados.SetRedraw (false)

    //si la actualizacin de la base de datos no es exitosa, se dehacen//todos los cambios con la orden rollback.

    //De locontrario, se realizan todos los cambios con la orden commit.

    if dw_act_empleados.Update() = -1 then

    rollback;

    else

    commit;

    end if

    dw_act_empleados.SetRedraw (true)

    //Si despus de actualizar la base de datos no quedan filas en el

    //datawindow, se deshabilita el botn de actualizar.

    if dw_act_empleados.RowCount() = 0 then

    cb_actualizar.enabled = false

    else

    cb_actualizar.enabled = true

    end if

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    14/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 40

    40.6. Los scripts para los eventos de los controles de las pginas restantes

    (actividades, niveles y departamentos) son similares a los descritos en 40.5,

    modificando los nombres de los controles y los datawindows.

    40.7. Se agregar un nuevo botn, que permitir exportar los datos del

    datawindow a diferentes formatos. La apariencia de la ventana ser la siguiente:

    Agregar un nuevo botn, hacer click derecho sobre l y elegir la opcin

    propertiesdel men popup.

    Name4 cb_exportar

    Text4Exportar.

    OK

    Hacer click derecho sobre el botn Exportar y elegir la opcin Scriptdel men

    popup

    Elegir el evento clickeden la parte superior izquierda de la ventana del editor y

    escribir el siguiente programa:

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    15/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 41

    40.8. De manera similar, agregar un botn adicional para cerrar la ventana de

    actualizaciones (w_actualizaciones)

    Properties4Name4cb_cancelar

    Properties4Text4 Cancelar

    OK

    El script para el evento clickedde este botn es:

    integer i_tab

    i_tab = tab_actualizaciones.SelectedTab//la funcin SelectedTab retorna el nmero del tabpage seleccionado.

    CHOOSE CASE i_tab

    CASE 1 //el tabpage seleccionado es el 1 (empleados)

    w_actualizaciones.tab_actualizaciones.tabpage_empleados.dw_act_empleados.

    SaveAs("", EXCEL!, TRUE)

    //la funcin SaveAs permite guardar los datos que estn en un datawindow

    //en diferentes formatos de archivo. Esta funcin utiliza el cuadro de

    //dilogo "guardar archivo" y permite al usuario elegir el formato al que

    //desea exportar los datos. En este caso el formato por defecto es el de

    //la hoja de clculo EXCEL

    CASE 2 //el tabpage seleccionado es el 2 (actividades)w_actualizaciones.tab_actualizaciones.tabpage_actividades.dw_act_actividades.

    SaveAs("", EXCEL!, TRUE)

    CASE 3 //el tabpage seleccionado es el 3 (departamentos)

    w_actualizaciones.tab_actualizaciones.tabpage_departamento.dw_act_deptos.

    SaveAs("", EXCEL!, TRUE)

    CASE 4 //el tabpage seleccionado es el 4 (niveles)

    w_actualizaciones.tab_actualizaciones.tabpage_niveles.dw_act_niveles.

    SaveAs("", EXCEL!, TRUE)

    END CHOOSE

    Close (parent)

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    16/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 42

    41. Crear una ventana como la siguiente:

    En esta ventana se utilizar un nuevo control: TreeView. El TreeView es un control

    que permite desplegar informacin jerarquicamente. Cada item en un TreeView

    consiste de texto y una imagen, los cuales pueden ser manipulados durante una

    rutina de programa.

    El aspecto de la ventana ser similar al siguiente:

    Como puede verse, este TreeView tendr cuatro niveles. El primer nivel solo

    constar de un tem con el texto empresa. Los tems del segundo nivel

    corresponden a los departamentos de la empresa, el tercero a los empleados de

    cada departamento, y el cuarto a las actividades asignadas a los empleados.

    41.1. En la barra de herramientas:

    Botn Window4New

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    17/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 43

    Con el botn derecho sobre la nueva ventana, o con doble click, modificar

    las propiedades de la ventana:

    Window Type4 Popup.

    Las opciones Resizabley Maximize Boxno debern seleccionarse.

    41.2. Insertar un control TreeView en la ventana y darle el tamao adecuado.

    Seleccionar el control insertado y hacer click con el botn derecho del

    mouse sobre l.

    Name4 tv_depto_empleado

    Seleccionar la opcin Lines at Root Indentation410

    OK

    41.2.1. Insertar los dems controles en la ventana (como lo muestra la figura)

    Tres botones: Expandir Todo (cb_expandir), Contraer todo

    (cb_contraer), Cerrar (cb_cerrar)

    41.2.2. Guardar el trabajo: File4Save. El nombre de la nueva ventana ser

    w_explorador.

    41.2.3. Modificar la opcin actualizar del men, para que se abra la nueva

    ventana:

    En la barra de herramientas oprimir el botn Menu.

    Seleccionar el men ya realizado (p.ej. m_principal) 4OK

    Agregar la opcin Exploraren el men Personal

    Oprimir el botn Scripten la barra de herramientas

    Escribir open(w_explorador)

    Cerrar la ventana del editor de texto y la ventana de edicin del men.

    Guardar las modificaciones hechas al men.

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    18/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 44

    41.2.4. Correr la aplicacin y probar el funcionamiento del men y la nueva

    ventana.

    41.2.5. Crear un DataWindow Object en el que se relacionen el nombre de los

    departamentos. (se usa el botn DataWindow de la barra de herramientas

    PowerBar)

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

    Data Source

    4

    SQL Select Presentation Style4 Tabular

    En la ventana Select Tablesseleccionar la tabla departamento.4Open

    Seleccionar las columnas cdigo de departamento y nombre de

    departamento.

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    File4Save. En la ventana Save DataWindow:

    Name:d_depto

    OK

    Cerrar la ventana de edicin del DataWindow

    41.2.6. Crear un DataWindow Object en el que se relacionen el nombre de los

    empleados de un departamento determinado. (se puede usar uno de los ya

    existentes si cumple con esta condicin)

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

    Data Source 4 SQL Select

    Presentation Style4 Tabular

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    19/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 45

    En la ventana Select Tablesseleccionar la tabla empleado.4Open

    Seleccionar las columnas cdigo de empleado, apellido y nombre de

    empleado.

    En el men Designelegir la opcin Retrieval Arguments...

    En la ventana Specify Retrieval Arguments: name4dept_id,

    type4number

    OK

    Oprimir el Tab "Where"en la parte inferior de la pantalla:

    Column 4 "empleado"."dept_id" (Al hacer click en el espacio en

    blanco se puede elegir la columna deseada)

    Operator 4 = (Al hacer click en el espacio en blanco se puede elegirel operador deseado)

    Value : Hacer click con el boton derecho sobre el espacio en blanco,

    elegir argumentsen el men popup, y luego elegir :dept_id, que es el

    mismo argumento que se definin en Retrieva Arguments

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    File4Save. En la ventana Save DataWindow:

    Name:d_empleados_por_depto

    OK

    Cerrar la ventana de edicin del DataWindow

    41.2.7. Crear un DataWindow Object en el que se puedanalmacenar las

    actividades de un empleado dado. (se puede usar uno de los ya existentes si

    cumple con esta condicin)

    En la ventana Select DataWindow: 4New

    En la ventana New DataWindow:

    Data Source 4 SQL Select

    Presentation Style4 Tabular

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    20/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 46

    En la ventana Select Tables seleccionar la tabla actividad y la tabla

    empleado.4Open

    Seleccionar las columnas cdigo de empleado (de la tabla empleado), y

    descripcin de la actividad (de la tabla actividad).

    En el men Designelegir la opcin Retrieval Arguments...

    En la ventana Specify Retrieval Arguments: name4emp_id (cdigo del

    empleado), type4 number

    OK

    Oprimir el Tab "Where"en la parte inferior de la pantalla:

    Column 4 "empleado"."emp_id" (Al hacer click en el espacio en

    blanco se puede elegir la columna deseada) Operator 4 = (Al hacer click en el espacio en blanco se puede elegir

    el operador deseado)

    Value : Hacer click con el boton derecho sobre el espacio en blanco,

    elegir argumentsen el men popup, y luego elegir :emp_id, que es el

    mismo argumento que se definin en Retrieva Arguments

    Pasar a diseo de salida: En la barra de herramientas es el cono que

    dice "SQL"

    File4Save. En la ventana Save DataWindow:

    Name:d_activ_por_empleado

    OK

    Cerrar la ventana de edicin del DataWindow

    Guardar el trabajo adelantado hasta el momento File4Save.

    41.3. Declaracin de variable de instancia ids_datos

    En el men Declare4 Instance Variables.

    En la ventana Declare Instance Variables hacer click en el cuadro de

    texto y escribir: datastore ids_datos[4].

    OK

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    21/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 47

    La variable ids_datos es un array de cuatro posiciones de tipo

    DataStore, en el que se almacenarn los datos de cada nivel del

    TreeView. Estos datos se obtendrn de los DataWindow creados en

    41.2.6. y 41.2.7.

    41.4. Crear las Funciones lf_agregar_items y lf_config_item

    41.4.1. Funcin lf_agregar_items

    En el men Declare 4 Window Functions

    En la ventana Select Function in Window 4 New

    En la ventana New Function : Name4lf_agregar_items

    Access4Public

    Return4Integer

    Arguments:

    Name4 al_parent, Ttype4 Long, Pass By4 Value

    Oprimir Add

    Name4

    ai_nivel, Type4

    Integer, Pass By4

    Value Oprimir Add

    Name4 ai_filas, Type4 Integer, Pass By4 Value

    OK

    Se abre la ventana del editor. El cdigo para esta funcin es el siguiente:

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    22/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 48

    Cerrar la ventana del editor y guardar el trabajo adelantado

    Nota: Si se quieren modificar los argumentos de una funcin ya

    declarada, se debe abrir la ventana de edicin del cdigo de la funcin

    (la que se us en el paso anterior) y elegir la opcin Function

    Declarationdel men Design. Si la ventana del editor no est abierta no

    se puede acceder a esta opcin.

    41.4.2. Funcin lf_config_item

    En el men Declare 4 Window Functions

    //////////////////////////////////////////////////////////////////////

    // Funcin para agregar los items al TreeView usando los datos en el

    // DataStore

    // Los argumentos de la funcin son:

    // - long al_parent

    // - integer ai_nivel (el nivel en el que se agregarn los items)

    // - integer ai_filas (el nmero de items que se agregarn)

    //////////////////////////////////////////////////////////////////////

    Integer li_Cont

    //se declara un objeto TreeViewItem para manipular los valores del item

    //que se agregar

    TreeViewItem ltvi_Nuevo

    // Se agrega cada item

    For li_Cont = 1 To ai_filas

    // Se llama a la funcin lf_config_item para asignar los valores

    //del nuevo item a partir de los datos almacenados en el

    //DataStore

    lf_config_item(ai_nivel, li_Cont, ltvi_Nuevo)

    // Se agrega el item despus del ltimo hijo

    If tv_depto_empleado.InsertItemLast(al_Parent, ltvi_Nuevo) < 1

    Then

    // Si hay Error

    MessageBox("Error", "Error al insertar item", &

    Exclamation!)

    Return -1

    End If

    Next

    Return ai_filas

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    23/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 49

    En la ventana Select Function in Window 4 New

    En la ventana New Function :

    Name4lf_config_item

    Access4Public

    Return4(None)

    Arguments:

    Name4 ai_nivel, Type4 Integer, Pass By4 Value

    Oprimir Add

    Name4 ai_fila, Type4 Integer, Pass By4 Value

    Oprimir Add

    Name4 atvi_nuevo, Type4 TreeViewItem, Pass By4 Reference

    OK

    Se abre la ventana del editor. El cdigo para esta funcin es el siguiente:

    /////////////////////////////////////////////////////////////////////

    //

    // Se configuran los atributos para el nuevo item a partir de los datos

    // en el DataStore.

    // Los atributos de TreeViewItem que se usan son:

    // Label (el texto que se despliega en el TreeView)

    // Data (es la informacin que contiene dicho item)

    // Los argumentos de esta funcin son:// integer ai_nivel = el nivel del TreeViewItem en el TreeView

    // integer ai_fila = # de la fila del DataStore de la que se obtendr

    // la informacin

    // atvi_nuevo = TreeViewItem que se agrega al TreeView. Los valores de

    // sus atributos. (Label y Data) son los que se determinan a

    // continuacin

    //

    ///////////////////////////////////////////////////////////////////////

    Choose Case ai_nivel

    Case 1

    // El nico item de primer nivel tiene como Label la

    // palabra "empresa", en este caso no se usa niungn

    // DataStore

    atvi_nuevo.Label = "Empresa"atvi_nuevo.Data = "Empresa"

    //Contina en la siguiente pgina...

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    24/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 50

    Cerrar la ventana del editor y guardar el trabajo adelantado

    41.5. Escribir los scripts para los controles creados.

    41.5.1. En la ventana w_explorador:

    Hacer click con el botn derecho sobre la ventana y seleccionar la

    opcin script en el men popup.

    En el editor, seleccionar el evento opendel listbox de la parte superior

    izquierda de la ventana. El siguiente es el cdigo para dicho evento:

    Case 2

    // Label = nombre del departamento

    // Data = codigo de departamento

    atvi_nuevo.Label= ids_datos[2].Object.dept_nombre[ai_fila]

    atvi_nuevo.Data = ids_datos[2].Object.dept_id[ai_fila]Case 3

    // Label = apellido + nombre del departamento

    // Data = codigo de empleado

    atvi_nuevo.Label = ids_datos[3].Object.emp_apellido[ai_fila]&

    + ", " + ids_datos[3].Object.emp_nombre[ai_fila]

    atvi_nuevo.Data = ids_datos[3].Object.emp_id[ai_fila]

    Case 4

    // Label = descripcin de la actividad

    // Data = cdigo del empleado

    atvi_nuevo.Label =

    ids_datos[4].Object.actividad_act_descripcion[ai_fila]

    atvi_nuevo.Data =

    ids_datos[4].Object.empleado_emp_id[ai_fila]

    End Choose

    If ai_nivel < 4 Then

    atvi_nuevo.Children = True

    Else

    // Si el nivel es 4 (actividades) los items no tienen hijos)

    atvi_nuevo.Children = False

    End If

    atvi_nuevo.PictureIndex = ai_nivel

    atvi_nuevo.SelectedPictureIndex = ai_nivel

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    25/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 51

    Compilar el script: en el men Design4Compile Script(Ctrl+L).

    Seleccionar el evento close. El script para este evento es:

    /////////////////////////////////////////////////////////////

    // Se crean los DataStore que contendrn los //

    // datos almacenados en los datawindows espacificados //

    ////////////////////////////////////////////////////////////

    //d_depto se hace mediante un select a la tabla departamento.

    //En este datawindow se almacena la lista de los departamentos

    //de la empresa. Estos datos aparecern en el segundo nivel

    //del treeview.

    ids_datos[2] = Create DataStore

    ids_datos[2].DataObject = "d_depto"

    ids_datos[2].SetTransObject(sqlca)

    //d_empleados_por_depto contiene los empleados que trabajan en un

    //departamento. Para esto, se debe escoger la columna cdigo

    //de departamento (dept_id) como argumento de recuperacin (retrieval

    //arguments)

    //Los datos aqu recuperados sern los del tercer nivel del treeview

    ids_datos[3] = Create DataStore

    ids_datos[3].DataObject = "d_empleados_por_depto"ids_datos[3].SetTransObject(sqlca)

    //d_activ_por_empleado contiene las actividades asignadas a un

    //empleado. De forma similar, el retrieval argument para este

    //datawindow es la columna cdigo de empleado (emp_id)

    //Los datos aqu recuperados sern los del cuarto nivel del treeview

    ids_datos[4] = Create DataStore

    ids_datos[4].DataObject = "d_activ_por_empleado"

    ids_datos[4].SetTransObject(sqlca)

    //Se agrega el primer item (el nico) del primer nivel del treeview.

    //Los parmetros que se pasan son: parent = 0, nivel = 1, filas = 1

    lf_agregar_items(0, 1, 1)

    -------Evento: close--------------

    -------Control: w_explorador------

    Integer li_Cont

    // Se destruyen los DataStores usados en el ejemplo

    For li_Cont = 1 To 4

    Destroy ids_datos[li_Cont]

    Next

    Show(w_principal)

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    26/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 52

    Compilar el script (Ctrl + L) y cerrar la ventana del editor.

    41.5.2. En el TreeView tv_depto_empleado:

    Hacer click con el botn derecho sobre el TreeView y seleccionar la

    opcin script en el men popup.

    En el editor, seleccionar el evento itempopulate. El siguiente es el cdigo

    para dicho evento:

    -------Evento: itempopulate--------------

    -------Control: tv_depto_empleado--------

    ///////////////////////////////////////////////////////////////////////

    // Se expande el rbol con los hijos de cada item.

    // p.ej. los hijos de un item de departamento son los nombres de los

    // empleados

    ///////////////////////////////////////////////////////////////////////

    Integer li_nivel, li_parametro, li_DeptID, li_EmpID, li_filas

    // Se declara un TreeViewItem para el item actual

    TreeViewItem ltvi_actual

    SetPointer(HourGlass!)

    // Se determina el nivel del item que se encuentra seleccionado

    // actualmente en el TreeView

    GetItem(handle, ltvi_actual)

    li_nivel = ltvi_actual.Level + 1

    // Departamentos

    if li_nivel = 2 then

    ids_datos[li_nivel].SetTransObject(sqlca)

    ids_datos[li_nivel].Reset()

    ids_datos[li_nivel].SetTransObject(sqlca)

    // Se cargan los datos en el DataStore

    li_filas = ids_datos[li_nivel].Retrieve()

    End if

    // Empleados X Departamento

    if li_nivel = 3 Then

    li_DeptID = Integer(ltvi_actual.Data)ids_datos[li_nivel].Reset()

    ids_datos[li_nivel].SetTransObject(sqlca)

    // Se cargan los datos en el DataStore usando el argumento cdigo de

    //departamento

    li_filas = ids_datos[li_nivel].Retrieve(li_DeptID)

    End if

    //Contina en la siguiente pgina...

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    27/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 53

    Compilar el script (Ctrl + L) y cerrar la ventana del editor.

    41.5.3. En el botn Expandir Todo (cb_expandir):

    Hacer click con el botn derecho sobre el botn y seleccionar la opcin

    script en el men popup.

    En el editor, seleccionar el evento clicked. El siguiente es el cdigo para

    dicho evento:

    Compilar el script: en el men Design4Compile Script(Ctrl+L).

    Cerrar la ventana del editor.

    -------Evento: clicked--------------

    -------Control: cb_expandir---------

    Long ll_handle

    ll_handle = tv_depto_empleado.FindItem ( RootTreeItem!, 0 )

    tv_depto_empleado.ExpandAll ( ll_handle )

    // Actividades X Empleado

    If li_nivel = 4 Then

    li_EmpID = Integer(ltvi_actual.Data)

    ids_datos[li_nivel].Reset()

    ids_datos[li_nivel].SetTransObject(sqlca)

    // Se cargan los datos en el DataStore usando el argumento cdigo

    // de empleado

    li_filas = ids_datos[li_nivel].Retrieve(li_EmpID)

    End If

    lf_agregar_items(handle, li_nivel, li_filas)

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    28/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 54

    41.5.4. En el botn Contraer Todo (cb_contraer):

    Hacer click con el botn derecho sobre el botn y seleccionar la opcin

    script en el men popup.

    En el editor, seleccionar el evento clicked. El siguiente es el cdigo para

    dicho evento:

    Compilar el script: en el men Design4Compile Script(Ctrl+L).

    Cerrar la ventana del editor.

    41.5.5. Para el botn Cerrar (cb_cerrar)

    Compilar el script: en el men Design4Compile Script(Ctrl+L).

    Cerrar la ventana del editor.

    41.6. Guardar el trabajo adelantado y correr la aplicacin para comprobar el

    funcionamiento del TreeView.

    -------Evento: clicked--------------

    -------Control: cb_cerrar---------

    close(w_explorador)

    -------Evento: clicked--------------

    -------Control: cb_contraer---------

    Long ll_handle

    ll_handle = tv_depto_empleado.FindItem ( RootTreeItem!, 0 )

    tv_depto_empleado.CollapseItem ( ll_handle )

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    29/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 55

    42. Modificar la ventana creada en el paso 41 de la siguiente forma:

    El control que se aadir se denomina ListView. Un ListView muestra informacinen forma de lista al usuario. Cada tem del ListView consiste de texto y un dibujo.

    En este caso, el ListView mostrar los tems del nivel inferior al que se encuentre

    seleccionado en el rbol. Los botones Lista, Detalles e Iconos Grandes,

    cambian la forma de presentacin de los tems en el ListView. Cuando el usuario

    haga doble click sobre uno de los tems del ListView, se desplegarn los tems del

    nivel inferior, y se expandir la porcin correspondiente en el rbol.

    Los tems se ordenarn de acuerdo cuando el usuario oprima las cabeceras de las

    columnas, de forma similar a como ocurre, por ejemplo, en el explorador de

    windows.

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    30/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 56

    42.1. Insertar un control ListView en la ventana y darle el tamao adecuado.

    Seleccionar el nuevo control y hacer click con el botn derecho del mouse

    sobre l.

    Name4 lv_dept_empleados

    Seleccionar la opcin Show header

    View4Report(Detalles)

    Sort4Unsorted

    OK

    42.1.1. Insertar los dems controles en la ventana (como lo muestra la figura) Tres botones: Lista (cb_lista), Detalles (cb_detalles), Iconos Grandes

    (cb_grandes)

    42.1.2. Guardar el trabajo adelantado: File4Save.

    42.2. Declaracin de variable de instancia ii_columnas

    En el men Declare4 Instance Variables.

    En la ventana Declare Instance Variables hacer click en el cuadro de

    texto y escribir: integer ii_columnsas.

    OK

    La variable ii_columnas es un entero que se utilizar para contar el

    nmero de columnas que se agregan al ListView dependiendo del nivel

    actual del rbol.

    42.3. Crear las Funciones lf_agregar_items y lf_config_item

    De ahora en adelante se utilizarn los DataWindow y DataStore creados durante

    el paso 41 en los nuevos scripts. (ids_datos[], d_depto, d_empleados_por_depto y

    d_activ_por_empleado)

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    31/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 57

    42.3.1. Funcin wf_agregar_lv_items

    En el men Declare 4 Window Functions

    En la ventana Select Function in Window 4 New

    En la ventana New Function :

    Name4wf_lv_agregar_items

    Access4Public

    Return4Integer

    Arguments:

    Name4 ai_nivel, Type4 Integer, Pass By4 Value

    Oprimir Add

    Name4 ai_filas, Type4 Integer, Pass By4 Value

    OK

    Se abre la ventana del editor. El cdigo para esta funcin es el siguiente:

    -------funcin wf_agregar_lv_items--------------

    ///////////////////////////////////////////////////

    //

    //Funcin para agregar items al ListView

    //usando los datos del DataStore

    //

    // Argumentos:

    // integer ai_nivel (el nivel en que se insertar)

    // integer ai_filas (nmero de items a insertar)

    //

    ///////////////////////////////////////////////////

    Integer li_Cont

    ListViewItem llvi_nuevo

    // Se borran todas las columnas existentes en el

    // ListView

    For li_Cont = 1 To ii_columnas

    lv_dept_empleados.DeleteColumn(1)

    Next

    Contina en la siguiente pgina...

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    32/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 58

    Compilar el script (Ctrl + L) y cerrar la ventana del editor.

    42.3.2. Funcin wf_config_lv_item

    En el men Declare 4 Window Functions

    En la ventana Select Function in Window 4 New

    En la ventana New Function :

    Name4wf_config_lv_item

    Access4Public

    Return4(None)

    Arguments:

    ...continuacin

    -------funcin wf_lv_agregar_items--------------

    // Se agregan las columnas al ListView

    Choose Case ai_nivel

    Case 2

    lv_dept_empleados.AddColumn("Nombre", Left!, 500)

    lv_dept_empleados.AddColumn("ID", Right!, 150)

    ii_columnas = 2

    Case 3

    lv_dept_empleados.AddColumn("Apellido", Left!, 700)

    lv_dept_empleados.AddColumn("Nombre", Left!, 700)

    lv_dept_empleados.AddColumn("ID", Right!, 150)

    ii_columnas = 3

    Case 4

    lv_dept_empleados.AddColumn("Descripcin", Left!, 900)

    lv_dept_empleados.AddColumn("ID Nivel", Right!, 250)

    ii_columnas = 2

    End Choose

    // Se agrega cada item al ListViewFor li_Cont = 1 To ai_filas

    // Se llama a la fucin para configurar los valores de los

    // items del ListView a partir de los datos del DataStore

    wf_config_lv_item(ai_nivel, li_Cont, llvi_nuevo)

    // Se agrega cada item after the last child

    If lv_dept_empleados.AddItem(llvi_nuevo) < 1 Then

    MessageBox("Error", "Error al agregar item",

    Exclamation!)

    Return -1

    End If

    Next

    Return ai_filas

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    33/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 59

    Name4 ai_nivel, Type4 Integer, Pass By4 Value

    Oprimir Add

    Name4 ai_fila, Type4 Integer, Pass By4 Value

    Oprimir Add

    Name4 alvi_nuevo, Type4 ListViewItem, Pass By4 Reference

    OK

    Se abre la ventana del editor. El cdigo para esta funcin es el siguiente:

    Compilar el script (Ctrl + L) y cerrar la ventana del editor.

    -------funcin wf_config_lv_item--------------

    ////////////////////////////////////////////////////////////

    // Se configuran los atributos Label y Data para el nuevo// item del ListView a partir de los datos en el DataStore.

    //

    // Argumentos:

    // integer ai_nivel (el nivel del tem a configurar)

    // integer ai_fila (el nmero del item a configurar)

    // listviewitem alvi_nuevo (el item a configurar)

    ////////////////////////////////////////////////////////////

    Choose Case ai_nivel

    Case 2

    // Label = nombre del departamento | cdigo dedepartamento

    // Data = codigo de departamento

    alvi_nuevo.Label = ids_datos[2].Object.dept_nombre[ai_fila]+"~t"+ &

    string(ids_datos[2].Object.dept_id[ai_fila])

    alvi_nuevo.Data = ids_datos[2].Object.dept_id[ai_fila]

    Case 3

    // Label = apellido empleado | nombre empleado | cdigo empleado

    // Data = codigo de empleado

    alvi_nuevo.Label = ids_datos[3].Object.emp_apellido[ai_fila]+"~t"+ &

    ids_datos[3].Object.emp_nombre[ai_fila] + "~t" + &

    string (ids_datos[3].Object.emp_id[ai_fila])

    alvi_nuevo.Data = ids_datos[3].Object.emp_id[ai_fila]

    Case 4

    // Label = descripcin de actividad | cdigo del nivel

    // Data = codigo de empleado (no se utiliza)

    alvi_nuevo.Label =

    ids_datos[4].Object.actividad_act_descripcion[ai_fila] + "~t" + &

    string(ids_datos[4].Object.actividad_niv_id[ai_fila])alvi_nuevo.Data = ids_datos[4].Object.empleado_emp_id[ai_fila]

    End Choose

    alvi_nuevo.PictureIndex = ai_nivel

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    34/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 60

    42.4. Escribir los scripts para los nuevos controles.

    42.4.1. En el TreeView tv_depto_empleado:

    Hacer click con el botn derecho sobre el TreeView y seleccionar la

    opcin script en el men popup.

    En el editor, seleccionar el evento selectionchanged. El siguiente es el

    cdigo para dicho evento:

    -------control: tv_depto_empleado----------

    -------evento: selectionchanged--------------

    ///////////////////////////////////////////////////

    // Este evento se ejecuta cuando cambia el tem// selecionado en el rbol.

    // Se cargan los datos desde el DataStore y

    // se agregan los items del nivel inferior al

    // ListView

    /////////////////////////////////////////////////

    Integer li_nivel, li_DeptID, li_EmpID, li_filas

    // Se declara un TreeViewItem para el item actual

    TreeViewItem ltvi_actual

    SetPointer(HourGlass!)

    // Se determina el nivel del item que se

    // encuentra seleccionado actualmente en el TreeView

    GetItem(newhandle, ltvi_actual)

    li_nivel = ltvi_actual.Level + 1

    // Departamentos

    if li_nivel = 2 then

    ids_datos[li_nivel].SetTransObject(sqlca)

    ids_datos[li_nivel].Reset()

    ids_datos[li_nivel].SetTransObject(sqlca)

    // Se cargan los datos del DataStore

    li_filas = ids_datos[li_nivel].Retrieve()

    End if

    Conina en la siguiente pgina ...

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    35/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 61

    Cerrar la ventana del editor y guardar el trabajo adelantado

    42.4.2. En el ListView lv_dept_empleados:

    Hacer click con el botn derecho sobre el ListView y seleccionar la

    opcin script en el men popup.

    En el editor, seleccionar el evento doubleclicked. El siguiente es el

    cdigo para dicho evento:

    -------control: tv_depto_empleado----------

    -------evento: selectionchanged--------------

    ... continuacin

    // Empleados X Departamento

    if li_nivel = 3 Then

    li_DeptID = Integer(ltvi_actual.Data)

    ids_datos[li_nivel].Reset()

    ids_datos[li_nivel].SetTransObject(sqlca)

    // Se cargan los datos del DataStore usando

    //el argumento cdigo de departamento

    li_filas = ids_datos[li_nivel].Retrieve(li_DeptID)

    End if

    // Actividades X Empleado

    If li_nivel = 4 Then

    li_EmpID = Integer(ltvi_actual.Data)ids_datos[li_nivel].Reset()

    ids_datos[li_nivel].SetTransObject(sqlca)

    // Se cargan los datos del DataStore usando

    // el argumento cdigo de empleado

    li_filas = ids_datos[li_nivel].Retrieve(li_EmpID)

    End If

    // Se borran todos los items del ListView

    lv_dept_empleados.DeleteItems()

    // La funcin wf_agregar_lv_items agrega un nmero

    // de items igual a "li_filas" en el ListView, que

    // pertenecen al nivel "li_nivel"

    wf_agregar_lv_items(li_nivel, li_filas)

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    36/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 62

    Compilar el script (Ctrl + L) y cerrar la ventana del editor.

    -------control: lv_dept_empleados----------

    -------evento: doubleclicked---------------

    Long ll_Padre, ll_Item

    Boolean lb_EncontradoTreeViewItem ltvi_Item

    ListViewItem llvi_Actual

    If index 0 Then

    // Se ha encontrado el item

    lb_Encontrado = True

    Else

    // Se revisa el siguiente item

    ll_Item = tv_depto_empleado.FindItem(NextTreeItem!, ll_Item)

    End IfLoop

    If lb_Encontrado Then

    // Al cambiar el elemento seleccionado en el TreeView,

    // se ejecuta el cdigo del evento SelectionChanged

    // para el TreeVier tv_depto_empleado

    tv_depto_empleado.SelectItem(ll_Item)

    End If

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    37/38

    Entrenamiento en PowerBuilder 6.5

    Ing. Ismael Castaeda Fuentes Pgina 63

    42.4.3. En el ListView lv_dept_empleados:

    Hacer click con el botn derecho sobre el ListView y seleccionar la

    opcin script en el men popup.

    En el editor, seleccionar el evento columnclick. El siguiente es el cdigo

    para dicho evento:

    Compilar el script (Ctrl + L) y cerrar la ventana del editor.

    42.4.4. En el botn Lista (cb_lista):

    Hacer click con el botn derecho sobre el botn y seleccionar la opcin

    script en el men popup.

    En el editor, seleccionar el evento clicked. El siguiente es el cdigo para

    dicho evento:

    Compilar el script: en el men Design4Compile Script(Ctrl+L).

    Cerrar la ventana del editor.

    -------control: lv_dept_empleados----------

    -------evento: columnclick-----------------

    // Los items en el ListView se ordenan ascendentemente

    // por la columna presionada por el usuario

    // "column" es el argumento del evento columnclick

    // es el nmero de la columna sobre la que se ha hecho click

    lv_dept_empleados.SetRedraw(false)

    lv_dept_empleados.Sort(Ascending! , column)lv_dept_empleados.SetRedraw(true)

    -------Evento: clicked--------------

    -------Control: cb_lista------------

    // Muestra los tems del ListView en forma de una lista sencilla

    lv_dept_empleados.view = ListViewList!

  • 8/4/2019 entrenamiento_powerbuilder_parte2

    38/38

    42.4.5. En el botn Detalles (cb_detalles):

    Hacer click con el botn derecho sobre el botn y seleccionar la opcin

    script en el men popup.

    En el editor, seleccionar el evento clicked. El siguiente es el cdigo para

    dicho evento:

    Compilar el script: en el men Design4Compile Script(Ctrl+L).

    Cerrar la ventana del editor.

    42.4.5. En el botn Iconos grandes (cb_grandes):

    Hacer click con el botn derecho sobre el botn y seleccionar la opcin

    script en el men popup.

    En el editor, seleccionar el evento clicked. El siguiente es el cdigo para

    dicho evento:

    Compilar el script: en el men Design4Compile Script(Ctrl+L).

    Cerrar la ventana del editor.

    42.5. Correr la aplicacin y probar su funcionamiento.

    -------Evento: clicked--------------

    -------Control: cb_detalles---------

    // Muestra los tems del ListView en forma de una lista detallada.

    // Esta es la forma de presentacin por defecto que se escogi al

    // crear el control ( en propiedades de lv_dept_empleados: view =

    // report )

    lv_dept_empleados.view = ListViewReport!

    -------Evento: clicked--------------

    -------Control: cb_grandes---------

    // Muestra los items del ListView en forma de conos grandes

    lv_dept_empleados.view = ListViewLargeIcon!