Vous êtes sur la page 1sur 18

Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

Actividad de Aprendizaje Nº 03

ESTRUCTURAS, CONTROLES LISTVIEW Y TREEVIEW.


Objetivos:
 Explicar el concepto de Estructuras y de los controles ListView y Treeview.
 Realizar la manipulación de datos matriciales con estructuras.
 Diseñar aplicaciones utilizando controles ListView y Treeview.

Contenidos:
Estructuras:
Control ListView:
Control TreeView:

ESTRUCTURAS.
Es una estructura de datos que permite almacenar información referido a los atributos de un objeto.
Son colecciones de una o más variables, del mismo tipo o no, agrupadas bajo una misma
denominación. Esto permite que nos podamos referir a ellas utilizando solo sus nombres. Existen
dos tipos: Estructura de nivel de objeto (asociado a un objeto determinado) y Estructuras Globales
(no está asociado a ningún objeto dentro de la aplicación).
Una estructura es una colección de una o más variables relacionadas de uno o más tipos de datos
agrupados bajo un mismo nombre. En algunos lenguajes, como Pascal y Cobol, las estructuras
son llamadas registros. Las estructuras permiten agrupar a entidades relacionadas como una
unidad en vez de individualmente.

Existen dos clases de estructuras:

Estructuras a nivel de objeto:


 Están asociadas con un tipo particular de objeto como una ventana o menú. Estas estructuras
son usadas en scripts para el mismo objeto. También se puede definir la estructura para que
pueda ser accesible desde otros scripts.

Estructuras Globales:
 No están asociadas con ningún objeto en su aplicación. Podemos hacer referencia a estas
estructuras desde cualquier parte de su aplicación.

CARACTERISTICAS:
 Es similar como si fuera una tabla en una Base de datos, solo con la diferencia que los datos
que guardemos en la estructura solo funcionan en tiempo de ejecución(se guardan en memoria)
 Tiene campos, y cada campo tiene nombre y tipo de dato similar a una tabla en Base de datos.
 La estructura es declarada en ámbito global o de instancia.

Introducción a la Programación -. Pág. 30.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

De esta manera podemos pasar datos de ventana a ventana, y de esta manera habrá una
comunicación entre ellas.

Por ejemplo si quisiéramos almacenar información de una persona en una sola variable no se
podría porque aquí existen varios de tipos de datos.
NOMBRE DEL DATO TIPO DE DATO
DNI Char
NOMBRES String
SEXO Char
FECHA DE NACIMIENTO Date
EDAD Integer
TALLA Decimal

Para realizar ello, utilizamos una variable tipo estructura a partir del objeto estructura de
PowerBuilder.

Clic en del ToolBar

Introducción a la Programación -. Pág. 31.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

Ejemplo 2: Crearemos nuestro ejemplo la estructura llamada S_PRODUCTOS, y haremos lo


siguiente.

Construimos una ventana w_ventana1 de la siguiente forma

La forma de declararlos en nuestra ventana en Power Builder es de la siguiente manera:

Introducción a la Programación -. Pág. 32.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

Construimos la ventana con el nombre w_ventana2 que recibirá los datos en tiempos de ejecución.

El código de la ventana es:

Introducción a la Programación -. Pág. 33.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

Control TreeView

integer fila1,fila2,fila11,fila12
//
fila1=tv_1.InsertItemLast(0,"Matematicas",1)
fila2=tv_1.InsertItemLast(0,"Fisica",1)
//
fila11=tv_1.InsertItemLast(fila1,"Cuatro Operaciones Basicas",2)
fila12=tv_1.InsertItemLast(fila1,"Operaciones Avanzadas",2)
//
tv_1.InsertItemLast(fila11,"Suma",3)
tv_1.InsertItemLast(fila11,"Resta",3)
tv_1.InsertItemLast(fila11,"Multiplicación",3)
tv_1.InsertItemLast(fila11,"División",3)
//
tv_1.InsertItemLast(fila12,"Potenciación",3)
tv_1.InsertItemLast(fila12,"Radicación",3)

Introducción a la Programación -. Pág. 34.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

treeviewitem tv_nuevo
dec n1,n2,res
n1=dec(sle_1.text)
n2=dec(sle_2.text)
tv_1.getitem(newhandle,tv_nuevo)
if tv_nuevo.level=3 then
choose case tv_nuevo.label
case "Suma"
res=n1+n2
st_4.text=string(res)
case "Resta"
res=n1 - n2
st_4.text=string(res)
case "Multiplicación"
res=n1*n2
st_4.text=string(res)
case "División"
if n2=0 then
Messagebox("Error","División por cero")
return
else
res=n1/n2
st_4.text=string(res)
end if
end choose
//
end if

El control ListView

Permite listar la información en una amplia variedad de formatos. Si se tiene en cuenta el control
de cuadro de lista de imágenes como un simple control de cuadro de lista que añade una serie de
imágenes, se puede pensar en el ListView como un cuadro de lista de imágenes con un par de
series de imágenes. Se utiliza el control ListView cuando se necesita para mostrar una colección
de elementos que constan de una etiqueta y un icono. Este control le permite presentar un
conjunto de información en una de cuatro maneras:

 Large icon - Los elementos aparecen en forma de iconos, cada uno con una etiqueta debajo de
ella. El usuario puede arrastrar los iconos dentro de la vista.

Introducción a la Programación -. Pág. 35.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

 Pequeño icono - Los artículos aparecen como iconos pequeños, cada uno con la etiqueta
hacia la derecha. El usuario también puede arrastrar estos iconos dentro de la vista.

 Lista - Los artículos aparecen como iconos pequeños, cada uno con la etiqueta hacia la
derecha, en una columna y presentación ordenada.

Introducción a la Programación -. Pág. 36.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

 Informe - Los elementos aparecen en una lista de varias columnas, con la columna más a la
izquierda que muestra el icono y la etiqueta. Puede definir tantas columnas adicionales como
sea necesario y especificar los datos correspondientes a aparecer en cada columna.

- Para utilizar la vista del informe de este control, se debe especificar al menos una
columna. Esto sólo puede hacerse a través de una función PowerScript,
AddColumn (). De lo contrario, nada va a mostrar.

Introducción a la Programación -. Pág. 37.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

Propiedades ListView

Al abrir la hoja de propiedades de un control ListView se presentan una variedad de páginas de


fichas que le permiten personalizar el control.

En la pestaña General, puede especificar las siguientes propiedades:

 AutoArrange (Boolean) - Automáticamente coloca los iconos en grande / pequeño vista de


iconos.
 ButtonHeader (Boolean) - El encabezado en la vista de informe aparece como botones en
lugar de sólo etiquetas.
 DeleteItems (booleanas) - Permite al usuario borrar los elementos de la lista mediante la
tecla Suprimir.
 EditLabels (Boolean) - Permite al usuario modificar las etiquetas de los elementos.
 ExtendedSelect (Boolean) - Permite al usuario seleccionar varios elementos de la lista.
 FixedLocations (Boolean) - Detiene el usuario de arrastrar grandes iconos pequeños / a
nuevas posiciones.
 LabelWrap (Boolean) - Específica si el texto del elemento es la palabra envuelta o verlo
como una sola línea.
 Desplazamiento (Boolean) - Específica si el control se pueden desplazar.
 ShowHeader (Boolean) - Específica si el encabezado debe aparecer en la vista del
informe.

Introducción a la Programación -. Pág. 38.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

 SortType (grSortType) - Especifica el orden de clasificación de los elementos de la lista. Si


SortType es UserDefinedSort!, Se activa el evento Sort.
 Ver (ListViewView) - Cambia el tipo de visualización de los cuatro estilos.

Además de especificar la forma en que desea que el ListView va aparecer y comportarse, puede
especificar los datos e imágenes usadas para crear el aspecto del control. Hay varias páginas con
pestañas que le ayudan a hacer esto: Gran Imagen, Imagen pequeña, estatales y elementos. Los
tres primeros ayudan a especificar las imágenes (iconos) que se utilizan para los distintos puntos
de vista en el que el ListView se puede mostrar. Las imágenes generalmente se establecen en el
pintor y se asignan a los elementos en tiempo de ejecución, aunque también se pueden asignar en
tiempo de diseño si la información del artículo es estática. En cada una de las páginas de ficha
imagen, puede especificar las imágenes que se utilizarán, el color de la máscara de las imágenes,
así como su altura y anchura.

- Las imágenes del estado se utilizan en el control para indicar que una acción ha
sido o está a punto de llevarse a cabo sobre el tema. Aparecerá el cuadro de
estado en la esquina inferior izquierda del icono principal. Por ejemplo, el elemento
seleccionado se puede tener una idea del estado asociada con el que aparecerá a
la izquierda de la imagen del artículo e indicar que el elemento actual será parte de
una deleción grupo.

El control ListView también utiliza imágenes de superposición, que son las imágenes que aparecen
en la parte superior de la imagen del producto y se utilizan para transmitir información adicional
sobre el estado del elemento. Imágenes de superposición se discuten más en la siguiente sección.

Funciones ListView

Ahora que ha examinado las propiedades que están disponibles para su uso en el desarrollo de un
control ListView, vamos a explorar las funciones asociadas y cómo interactúan con las
propiedades.

Introducción a la Programación -. Pág. 39.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

Antes de hacer eso, el tipo de datos ListViewItem necesita ser introducido. Esta estructura se utiliza
para mantener la información sobre cada elemento del control ListView. Tiene las siguientes
propiedades:

 CutHighLighted (Boolean) - El elemento se resalta y es el destino de una operación de


corte.
 Datos (Cualquiera) - El valor de los datos que desea asociar con el elemento.
 DropHighLighted (Boolean) - El elemento se resalta y es el destino de un arrastrar y soltar.
 HasFocus (Boolean) - El elemento tiene el foco.
 Itemx (entero) - X del punto de coordenadas en el control ListView.
 ItemY (entero) - Y del punto de coordenadas en el control ListView.
 Label (String) - La etiqueta de texto del artículo.
 OverlayPictureIndex (entero) - El número de índice de la imagen en la lista de imágenes de
superposición.
 PictureIndex (entero) - El índice dentro de la lista de imágenes del control que se utilizará
como icono del elemento.
 Seleccionado (Boolean) - El artículo ha sido seleccionado.
 StatePictureIndex (entero) - El índice en la lista de imágenes de estado del control.

Debido a la estructura de la ListView puede ser algo compleja, el tipo de datos de ListViewItem
ayuda a simplificar el proceso. En lugar de crear las llamadas a funciones complejas con
numerosos argumentos opcionales, el tipo de datos ListViewItem permite especificar la información
que necesita, que luego se puede insertar en el control ListView. Estas son algunas de las
funciones-ListView específica:

 AddItem ( lviItem ) - Añade un elemento de tipo ListViewItem al control ListView. Devuelve


el índice al que se añadió el artículo.
 AddItem ( szLabel , nPictureIndex ) - Esta forma de la función sólo se utiliza para
establecer el nombre, su imagen para el elemento. Para especificar más información,
utilice el formato anterior. Esta función también devuelve el índice en el que se añadió el
artículo.
 Organizar () - Organiza los iconos en filas y es eficaz en gran icono y sólo pequeños
puntos de vista de iconos.
 DeleteItem ( nIndex ) - Elimina el elemento en el índice especificado. Esta función no hace
que los otros elementos para cambiar el índice.
 DeleteItems () - Elimina todos los elementos de un control ListView.
 EditLabel ( nIndex ) - Coloca el elemento especificado en el modo de edición. El control
ListView también tiene una propiedad booleana (EditLabel) que permite a todos los
elementos que se pueden editar. Al establecer esta propiedad en false, puede utilizar la
función EditLabel () para aislar ciertas etiquetas para editar o para la edición en puntos
controlados.
 FindItem( nIndex , Dirección , bFocused , bSelected , bCutHighlighted , bDrophighlighted ) -
Esta función busca el siguiente elemento que coincide con los criterios especificados con
los cuatro parámetros booleanos. Puede especificar la dirección de la búsqueda en
relación con el índice mediante el establecimiento de Dirección a uno de los siguientes:!!
DirectionAll, DirectionUp, DirectionDown, DirecciónIzquierda o DirecciónDerecha!. Los
criterios de búsqueda son las siguientes: ¿El elemento tiene el foco ( bFocused ), es el
elemento seleccionado ( bSelected ), es el tema del destino de una operación de corte
(bCutHighLighted ), y es el punto blanco de una drag-and-drop operación
( bDropHighlighted ). Al igual que otras funciones de búsqueda PowerScript, éste comienza
en el índice especificado más 1, por lo que empezar desde el principio, el índice debe ser
0.
 FindItem ( nIndex , szSearchLabel , bPartial , bWrap ) - Se usa para buscar el siguiente
elemento que tiene la misma etiqueta que szSearchLabel . bPartial permite la búsqueda a

Introducción a la Programación -. Pág. 40.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

realizar una coincidencia parcial, y bWrap hace que el índice de vuelta al primer punto
después la llamada de función. nIndex es el índice después de lo cual debe comenzar la
búsqueda (recuerde poner a 0 para incluir el primer elemento de la búsqueda). La función
devuelve el índice del elemento si se encuentra uno, y -1 si se produce un error.
 GetItem ( nIndex , nColumn , szValue ) - Esta función se utiliza cuando el control ListView
se establece en el estilo de la vista Informe. nColumn representa el índice de las columnas
del informe y, junto con nIndex, proporciona una referencia cruzada en el control para
extraer el valor en szValue .
 GetItem ( nIndex , lviItem ) - Esta función recupera un objeto ListViewItem completa
en lviItem desde el índice especificado en el control.
 InsertItem ( nIndex , lviItem ) - Le permite especificar una estructura ListViewItem completa
para ser insertado en el índice especificado.
 InsertItem ( nIndex , szLabel , nPictureIndex ) - Esto le permite simplemente especifica un
nombre, su imagen para el elemento que desea insertar en el índice especificado.
 SetItem ( nIndex , nColumn , szValue ) -. Esta función se utiliza cuando el control ListView
se establece en el estilo de la vista Informe nColumn representa el índice de las columnas
del informe, y junto con nIndexproporciona una referencia cruzada en el control para
ajustar el valor a szValue .
 SetItem ( nIndex , lviItem ) - Ajusta el elemento en el índice de los valores de una
estructura ListViewItem.
 Sort ( SortType ) - Este ordena los elementos del control ListView utilizando un valor
enumerado de tipo grSortType: ascendente, descendente, Celebridad, o UserDefinedSort!
¡¡¡.
 Sort ( SortType , nColumn ) - Cuando el control ListView está en modo de informe, esta
función le permite ordenar en una columna específica.
 AddLargePicture ( szPicture ), AddSmallPicture ( szPicture ) y AddStatePicture ( szPicture )
- Estas funciones se suman la imagen especificada en la lista de imágenes
correspondiente.
 DeleteLargePicture ( nIndex ), DeleteSmallPicture ( nIndex ) y DeleteStatePicture ( nIndex )
- Estas funciones borrar la imagen que se especifica en la lista de imagen correspondiente.
 DeleteLargePictures (), DeleteSmallPictures (), y DeleteStatePictures () - Estas funciones
borran todas las imágenes de la lista de imágenes correspondiente.
 SetOverLayPicture ( nOverlayIndex , nImageIndex ) - Esta función se utiliza para asignar
una imagen superpuesta a un índice de lista de imágenes grandes o pequeñas. En lugar
de mantener una lista de imágenes adicional, las superposiciones se asignan a la lista de
imágenes principal del control.
 AddColumn ( szLabel , alineación , nWidth ) - Esto añade una nueva columna con la
etiqueta especificada, alineación y ancho.
 DeleteColumn ( nIndex ) - Esto borra la columna correspondiente al índice especificado.
 DeleteColumns () - Esto borra todas las columnas.
 GetColumn ( nIndex , szLabel , alineación , nWidth ) - Esto extrae información sobre la
columna en el índice especificado.
 InsertColumn ( nIndex , szLabel , alineación , nWidth ) - Se inserta una nueva columna en
el índice solicitado, con la etiqueta, la alineación y el ancho especificado.
 SetColumn ( nIndex , szLabel , alineación , nWidth ) - Esta función ajusta los valores de
etiqueta, alineación y ancho de la columna especificada. Las columnas muestran sólo en el
estilo de la vista Informe para el control.
 TotalColumns () - Devuelve el número de columnas en el control.
 GetOrigin ( nX , nY ) - Esta función se utiliza para encontrar la coordenadas X e Y de la
esquina superior izquierda del elemento ListView. Los parámetros nX y nY se utilizan para
recibir las coordenadas.
 SelectedIndex () - Devuelve el índice del elemento seleccionado en el control ListView. Si
más de un elemento está seleccionado, la función devuelve el índice del primer
elemento. De lo contrario, devuelve -1 en caso de un error o cuando no hay elementos
seleccionados.

Introducción a la Programación -. Pág. 41.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

La función SelectedIndex () sólo se diseñó para los controles que permiten selecciones
individuales, y usted debe escribir su propio bucle de revisar individualmente la propiedad estatal
de cada elemento.

 TotalItems () - Esta función devuelve el número total de elementos en el control.


 TotalSelected () - Esta función devuelve el número total de elementos seleccionados en el
control.

Llenar un control ListView

Sobre la base de todas las propiedades y funciones tanto del control ListView y la estructura
ListViewItem, la siguiente pregunta es, ¿cómo se ensamblan todas estas piezas en un control
utilizable? Aunque a primera vista esto puede parecer complejo, es un proceso bastante
sencillo. El siguiente código del evento Constructor muestra cómo podría llenar un control
ListView de un almacén de datos:

ListViewItem llvi_cust
int li_numrows, i
lds_cust almacén de datos
SetPointer (HourGlass!)
lds_cust = CREAR almacén de datos

/ / Borrar la vista de lista de cualquier artículo antes


this.DeleteItems ()

/ / Establecer las columnas de la vista de informe


this.AddColumn ("Compañía", Izquierda!, 700)
this.AddColumn ("Contacto", Izquierda!, 500)
this.AddColumn ("Teléfono", Izquierda!, 400)

/ / Recuperar los clientes


lds_cust.dataobject = "d_customer"
lds_cust.SetTransObject (SQLCA)
li_numrows = lds_cust.Retrieve ()

/ / Si hay filas recuperadas, ciclo a través de todas las filas

Si li_numrows> 0 Then
/ / Llenar la vista de lista
Para i = 1 a li_numrows
llvi_cust.label = lds_cust.object.company_name [i] + "~ t" + &
lds_cust.object.contact [i] + "~ t" + &
String (lds_cust.object.phone [i], "(@ @ @) @ @ @ - @ @ @ @")
llvi_cust.data = lds_cust.object.id [i]
llvi_cust.PictureIndex = 1
THIS.Additem (llvi_cust)
Próximo
End If

Destruye lds_cust

Introducción a la Programación -. Pág. 42.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

ListViewItem llvi_cust

int li_numrows, i

SetPointer (HourGlass!)

DATASTORE empleados

empleados=CREATE DATASTORE

// Borrar la vista de lista de cualquier artículo antes

this.DeleteItems ()

// Establecer las columnas de la vista de informe

this.AddColumn ("CODIGO", left!, 500)

this.AddColumn ("NOMBRE", left!, 1500)

this.AddColumn ("SUELDO", left!, 400)

this.AddColumn ("PUNTO DE VENTA", left!, 800)

this.AddColumn ("ZONA", left!, 400)

// Recuperar los clientes

empleados.dataobject = "odw_empleados"

empleados.SetTransObject (SQLCA)

li_numrows = empleados.Retrieve ()

// Si hay filas recuperadas, ciclo a través de todas las filas

if li_numrows> 0 Then

// Llenar la vista de lista

for i = 1 to li_numrows

llvi_cust.label = empleados.object.codemp [i] + " " + &

empleados.object.nomemp[i] + " " + &

String (empleados.object.sueldo[i])+" "+&

empleados.object.puntodeventa[i]+" "+&

empleados.object.zona[i]

Introducción a la Programación -. Pág. 43.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

llvi_cust.data =empleados.object.codemp[i]

llvi_cust.PictureIndex = 1

this.Additem (llvi_cust)

Next

End If

Destroy empleados

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

ListViewItem llvi_cust

int li_numrows, i

SetPointer (HourGlass!)

DATASTORE empleados

empleados=CREATE DATASTORE

// Borrar la vista de lista de cualquier artículo antes

this.DeleteItems ()

// Establecer las columnas de la vista de informe

this.AddColumn ("CODIGO", left!, 500)

this.AddColumn ("NOMBRE", left!, 1500)

this.AddColumn ("SUELDO", left!, 400)

this.AddColumn ("PUNTO DE VENTA", left!, 800)

this.AddColumn ("ZONA", left!, 400)

// Recuperar los clientes

empleados.dataobject = "odw_empleados"

empleados.SetTransObject (SQLCA)

li_numrows = empleados.Retrieve ()

// Si hay filas recuperadas, ciclo a través de todas las filas

Introducción a la Programación -. Pág. 44.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

for i=1 to li_numrows

this.AddItem("CODIGO",1)

next

if li_numrows> 0 Then

// Llenar la vista de lista

for i = 1 to li_numrows

this.SetItem(i,1,string(empleados.object.codemp[i]))

this.SetItem(i,2,string(empleados.object.nomemp[i]))

this.SetItem(i,3,String (empleados.object.sueldo[i]))

this.SetItem(i,4,string(empleados.object.puntodeventa[i]))

this.SetItem(i,5,string(empleados.object.zona[i]))

// llvi_cust.data =empleados.object.codemp[i]

// llvi_cust.PictureIndex = 1

// this.Additem (llvi_cust)

Next

End If

Destroy empleados

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

Lo primero que se hace en este código es que el control ListView suprimidos los artículos
anteriores utilizando la función () DeleteItems. Si desea dar al usuario la posibilidad de mostrar el
control ListView utilizando los cuatro puntos de vista diferentes, tiene que especificar cómo
aparecerá el control cuando en la vista Informe. Los primeros tres puntos de vista (iconos grandes,

Introducción a la Programación -. Pág. 45.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

iconos pequeños, y Lista) todos utilizan el texto suministrado por la propiedad Label y las imágenes
especificadas para los distintos iconos.

La función AddColumn () se utiliza para definir cada una de las columnas que aparecerán en el
control ListView. En este código, se crean tres columnas que muestra el nombre de la empresa,
nombre de contacto y número de teléfono. Se especifica cada columna como alineado a la
izquierda, y el último argumento indica el tamaño de cada columna. Las columnas deben ser
definidas antes de poder usar la vista Informe del ListView.

Después de recuperar los datos en el almacén de datos, es necesario dar la vuelta a través de
todas las filas recuperadas, ya que cada uno será un nuevo elemento en el control ListView. Para
agregar un elemento en el control ListView, es necesario definir una variable de tipo ListViewItem y
asignar valores a sus propiedades.

La primera propiedad es la etiqueta, que es el texto que se muestra en el control ListView para
cada elemento. En este caso, la propiedad Label de llvi_cust se rellena con una cadena delimitado
por tabuladores que contiene el nombre de la empresa, nombre de contacto y número de
teléfono. En Large Icon, Icon Pequeño y ListView, el nombre de la empresa es la única información
que se mostrará. El resto de la información se utiliza cuando el control ListView muestra se
especifican en la vista Informe.

 El orden de los valores colocados en la propiedad Label debe coincidir con el orden que ha
definido las columnas usando la función () AddColumns.

La propiedad de datos se utiliza para almacenar la información de fondo que no se muestra al


usuario, pero se puede utilizar en el código. En este ejemplo, el ID de cliente se almacenan de
modo que pueda ser utilizado como un elemento clave en cualquier otro recuperaciones de datos
que pueda necesitar para llevar a cabo. La propiedad PictureIndex se utiliza para indicar los
grandes y pequeños iconos que se utilizan para los iconos (extraídos de los iconos especificados
en el pintor de ventana). Después de todas las propiedades se han establecido para el
ListViewItem, es necesario insertar la variable ListViewItem en el control ListView. Esto se hace
utilizando la función AddItem (), pasándole la estructura ListViewItem llvi_cust.

A partir de este punto, se puede realizar cualquier otra acción que usted desee, ya sea para utilizar
el ListView como una lista de selección o como un medio para editar datos. Si desea cambiar la
vista del ListView, todo lo que necesita hacer es especificar uno de los tipos de datos enumerados
para la propiedad View del control, como

this.View = ListViewReport!

Eventos ListView

Además de las funciones y propiedades antes mencionadas, es posible que tenga que utilizar uno
de los muchos eventos específicos del control ListView:

 BeginDrag - Se activa cuando el usuario utiliza el botón izquierdo del ratón y empieza a
arrastrar. El mango del ListViewItem el usuario está tratando de arrastrar está disponible
como un argumento de evento.
 BeginLabelEdit - Se activa cuando el usuario empieza a editar una etiqueta del
elemento. La edición se puede prevenir mediante la devolución de un valor de 1 a partir de
este evento. El índice del elemento que se encuentra disponible como un argumento.
 BeginRightDrag - Se activa cuando el usuario utiliza el botón derecho del ratón y comienza
a arrastrar. El mango del ListViewItem el usuario está tratando de arrastrar está disponible
como un argumento de evento.

Introducción a la Programación -. Pág. 46.- Mg. Carlos Eugenio Vega Moreno


en Power Builder
Universidad Nacional del Santa Ingeniería de Sistemas e Informática Computación II

 ColumnClick - Se activa cuando el usuario hace clic en una columna. La columna se pasa
como un parámetro.
 DeleteAllItems - activa cuando se eliminan todos los elementos de la lista.
 DeleteItem - Se activa cuando se elimina un elemento por el usuario utilizando una función
PowerScript.
 EndLabelEdit - Se activa cuando el usuario ha terminado de editar una etiqueta. Puede
devolver 1 para descartar el cambio. El índice del elemento y la nueva etiqueta están
disponibles como parámetros.
 InsertItem - Se activa cuando se añade un elemento. El nuevo índice es disponible como
un parámetro.
 ItemChanged - Se activa cuando algo en el tema ha cambiado. Estos son los parámetros
disponibles para determinar el cambio:
 Índice - El elemento que está cambiando
 FocusChange - El estado del foco que está cambiando
 HasFocus - El nuevo estado del foco
 SelectionChange - La selección del elemento que está cambiando
 Seleccionado - El nuevo estado de la selección
 OtherChange - En otro cambio que afecta al artículo
 ItemChanging - Se activa cuando algo en el elemento está en el proceso de cambio. Puede
devolver 1 para evitar el cambio. Los mismos parámetros que el evento ItemChanged
están disponibles.
 RightClicked - Se activa cuando el control es clic derecho.
 RightDoubleClicked - Se activa cuando el control se hace doble-clic derecho.
 Ordenar - Se activa cuando la función Sort () se llama utilizando un argumento de
UserDefinedSort!. Para definir su propio criterio de ordenación de los elementos, es
necesario establecer la propiedad SortType a UserDefinedSort! y luego devolver el
siguiente valor de retorno para los dos parámetros:

-1 - Índice1 es menos de Index2


0 - Index1 es igual a Index2
1 - Índice1 es mayor que Index2

Introducción a la Programación -. Pág. 47.- Mg. Carlos Eugenio Vega Moreno


en Power Builder

Vous aimerez peut-être aussi