Académique Documents
Professionnel Documents
Culture Documents
Actividad de Aprendizaje Nº 03
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.
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.
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.
Construimos la ventana con el nombre w_ventana2 que recibirá los datos en tiempos de ejecución.
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)
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.
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.
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.
Propiedades ListView
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.
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:
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:
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.
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.
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
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
ListViewItem llvi_cust
int li_numrows, i
SetPointer (HourGlass!)
DATASTORE empleados
empleados=CREATE DATASTORE
this.DeleteItems ()
empleados.dataobject = "odw_empleados"
empleados.SetTransObject (SQLCA)
li_numrows = empleados.Retrieve ()
if li_numrows> 0 Then
for i = 1 to li_numrows
empleados.object.puntodeventa[i]+" "+&
empleados.object.zona[i]
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
this.DeleteItems ()
empleados.dataobject = "odw_empleados"
empleados.SetTransObject (SQLCA)
li_numrows = empleados.Retrieve ()
this.AddItem("CODIGO",1)
next
if li_numrows> 0 Then
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,
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.
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.
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: