DATAGRID O FLEXGRID??????

masterdimar
07 de Junio del 2003
Necesito mostrar datos (que provienen de un recordset) en una grilla, datagrid o flexgrid (eso me dirán uds.) y que el usuario pueda hacer doble click en cualquier parte de una fila, y que el dato que figura en la primer columna de esa fila se almacene en una variable.
Es posible esto???? en caso contrario...... ¿qué otra solución proponen?
Les agradecería mucho que me contesten. Hasta siempre

opuz
07 de Junio del 2003
te recomiendo que uses un dbgrid y en el evento dblclick() pongas lo siguiente
variable = dbgrid1.colums(0)

Telemann
07 de Junio del 2003
Te propongo que utilices mejor el List-view en modo Report, si es que la grilla que quieres mostrar no requiere edición manual celda a celda. El control list-view te proporciona la colección ColunmHeaders para definir las columnas, deberás configurarlas antes que nada:

listview1.view= lvwReport
listview1.columnheaders.add ,,"Columna1"
listview1.columnheaders.add ,,"Columna2"


Telemann
07 de Junio del 2003
Perdón, se me ha escapado.

Te propongo que utilices mejor el List-view en modo Report, si es que la grilla que quieres mostrar no requiere edición manual celda a celda. El control list-view te proporciona por un lado la colección ColunmHeaders para definir las columnas, y por el otro la colección ListItems para definir las filas. Primero deberás configurar las columnas del list-view:

listview1.view = lvwReport
listview1.columnheaders.add ,,"Columna1"
listview1.columnheaders.add ,,"Columna2"

para cada columna correspondiente a los campos de la consulta que desees mostrar.

Luego abres el objeto ADODB.Recordset que utilices y en un bucle que recorra los registros añades las filas de la siguiente manera:

Dim oItem as ListItem

Telemann
07 de Junio del 2003
Sigo, lo siento, es la costumbre de tabular.
Decía, añades fila a fila cada registro en el list-view de la siguiente manera:

Dim oItem as ListItem

' Asumimos RecSet como el objeto Recordset a utilizar, abierto y con registros:

RecSet.MoveFirst
do

'Inserción de la fila al list-view:

set oItem= ListView1.ListItems.Add ,,""

' Primera Columna:
oItem.Text = "" & RecSet.Fields("Columna1").Value

' (insertar una cadena en blanco delante del valor del campo evitará un error si el valor es nulo)

' Segunda Columna:
oItem.SubItems(1) = "" & RecSet.Fields("Columna2").Value

' etc

RecSet.MoveNext
loop until RecSet.EOF

El evento ItemClick del ListView te proporciona como parámetro el Item que el usuario clickea. Accederás a la primera columna simplemente con la propiedad

Item.Text

Fuera del evento ItemClick, puedes acceder a ella con

ListView1.SelectedItem.Text

por ejemplo, desde el evento ListView1_DobleClick (que no es sensible a la fila, si no al control entero).

Cabe considerar que las colecciones SubItems y ListSubItems que pertenecen a los objetos ListItem, se refieren siempre a partir de la segunda columna. Nótese que

<ListItem>.SubItems(1)

equivale a

<ListItem>.ListSubItems(1).Text

y se refiere a la celda de la segunda columna. La primera columna siempre es

<ListItem>.Text

Consulta la ayuda de estas colecciones y del control, verás que ofrecen bastantes posibilidades. Otro truco: cuando llenes el list-view de datos, hazlo invisible antes hasta que termine el bucle, irá muchísimo más rapido si el recordset es relativamente grande. Un saludo.

dayana
07 de Junio del 2003
informacion completa de LISTVIEW