Power Builder - Seleccionar filas en DW

 
Vista:

Seleccionar filas en DW

Publicado por Armando (6 intervenciones) el 17/02/2006 16:00:15
Hola amigos del foro, tengo un dw y quisiera seleccionar toda una fila y q esta cambie de color cuando yo me desplaze con el mause, espero me puedan ayudar gracias de antemano a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Seleccionar filas en DW

Publicado por Guillermo (72 intervenciones) el 17/02/2006 16:18:49
Armando, una de las opciones que tenes para hacer que la fila cambie de color cuando te desplazas con el mouse o con el teclado es esta:

Abri tu dw, y entra en las propiedades de cada campo del mismo, entra en la pestaña de Font, en la opcion Background Color dale un click a la opcion programable y copia el siguiente codigo:

if (getrow() = currentrow(), RGB(255,255,255),RGB(166,202,240 ))

Donde el primer color es el blanco y el segundo color es el color de tu dw.

Como te dije antes hay varias formas de hacer lo mismo, esta es una opcion

Saludos,

Guillermo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Seleccionar filas en DW

Publicado por Armando (6 intervenciones) el 17/02/2006 16:27:55
Gracias, por el codigo muy bueno, estaba chequeando y hay un evento Mouse - Over como implementar ese evento para mi dw gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Evento MauseOver en DW

Publicado por Armando (6 intervenciones) el 17/02/2006 16:48:22
Amigos me pueden ayudar en como hacer un MauseOver en mi DW, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evento MauseOver en DW

Publicado por amilcar (407 intervenciones) el 17/02/2006 17:16:47
para marcar una fila tambien puedes usar

dw_1.selectrow(0,false) todas desmarcadas
dw_1.selectrow(4,true) fila 4 marcada

si lo pones en algun evento de tu dw, fijate si ese evento devuelvo row
por ejemplo el evento clicked, dependiendo de lo q desees

dw_1.selectrow(0,false) todas desmarcadas
dw_1.selectrow(row,true) fila 4 marcada

un saludo desde argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Marcar fila sin click ni doble click

Publicado por Armando (6 intervenciones) el 17/02/2006 17:24:44
Gracias amigos, Amilcar gracias por tu ayuda ya tengo la manera como seleccionar y marcar la fila con color y a esta.

Pero yo deseo marcar la fila sin darle click, ni doble click al DW, solo sobre pasando el mause.. como se hace en las paginas web. no se si podra lo trato de intentar y nada.

Encontre un truco de MauseOver en la pagina http://powerbuilder.iespana.es/

Realizar un "Mouse - Over" sobre un componente y en algunos post aca en el foro bueno no se como hacer eso haber si me siguen ayudando gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Marcar fila sin click ni doble click

Publicado por Jorge (900 intervenciones) el 17/02/2006 21:14:31
Hola
A ver si te sirve esto:::
En elvento dwmousemove de tu dw en cuestion

This.SetRedraw(False)
This.selectrow(0,false)
This.selectrow(row,true)
This.SetRedraw(True)
This.SetRowFocusIndicator(hand!)

Comentame si te sirvio
Saludos Cordiales desde ARGENTINA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Marcar fila sin click ni doble click

Publicado por Jorge (900 intervenciones) el 17/02/2006 21:42:17
Perdon no controlaba la banda y al estar el mouse en el header
seleccionaba todas las columnas
y el evento que te mencione dwmousemove tenes que crearlo
asignadole el pbm_dwnmousemove

Disculpa por la omision


Choose Case Mid(GetBandatPointer( ),1,6)
Case "detail"
This.SetRedraw(False)
This.selectrow(0,false)
This.selectrow(row,true)
This.SetRedraw(True)
// This.SetRowFocusIndicator(hand!)
End Choose
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar filas con MouseMove

Publicado por Jancarlo (890 intervenciones) el 17/02/2006 18:19:07
Hola Guillermo...te mando un ejemplo para seleccionar las filas pasando el cursor por encima.

//Crea el evento MouseMove en el DW. (pbm_mousemove). Luego agregas esto:

string ls_detail
long ll_row

ls_detail=GetBandatpointer( )

if left(lower(ls_detail),7)='detail ' then //No borres el espacio en blanco
ll_row=long(right(ls_detail,len(ls_detail) - 7))
if ll_row>0 then
if isSelected(ll_row) then return
Selectrow(0,false)
Selectrow(ll_row,true)
end if
end if

Cualquier duda nos comentas........

Suerte !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Seleccionar filas con MouseMove

Publicado por Guillermo (72 intervenciones) el 17/02/2006 19:10:16
Gracias Jancarlo, pero el que estaba buscando el codigo era Armando.

Saludos,

Guillermo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

MouseMove Listo.. pero...!

Publicado por Armando (6 intervenciones) el 17/02/2006 22:26:16
Hola Gracias Amigos...

Event Name: MauseMove
Event ID: pbm_dwnmousemove

Asigne el sgte codigo:

long ll_row
string ls_detail

ls_detail = GetBandatpointer( )
ll_row = long(right(ls_detail,len(ls_detail) - 7))

Choose Case Mid(GetBandatPointer( ),1,6)
Case "detail"
This.SetRedraw(False)
This.selectrow(0,false)
This.selectrow(ll_row,true)
This.SetRedraw(True)
//This.SetRowFocusIndicator(hand!)
End Choose

Asi me salio.. pero cuando paso...el mause por todo el DW se seleccionan todas las filas q hago para ir contra eso.. y por q la manito no bajo... (Hand!)...

Nota: Para q sirve GetBandatpointer( ), SetRedraw,

Y tambien Jancarlo amigo..

Para q haces esto:
ll_row = long(right(ls_detail,len(ls_detail) - 7))

Me pueden explicar por favor.. gracias por su ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MouseMove Listo.. pero...!

Publicado por Jancarlo (890 intervenciones) el 18/02/2006 17:33:59
Hola Armando...el código que te mande debería funcionar a punto. Cuando mencionas que se te seleccionan todos los campos es por que no estas validando que la fila actual sea mayor a cero como te lo habia dejado:

if ll_row>0 then ......

Que significa esta parte ?

ll_row=long(right(ls_detail,len(ls_detail) - 7))

Pues tiene como propósito extraer la fila actual por donde se este pasando el mouse ya que la función GetBandAtPointer() te devuelve la banda actual por donde te encuentras seguido por el número de fila. Algo asi por ejemplo

detail[tab]1 //Estas en la fila 1 del detalle

Te vuelvo a colocar el código completo que te deje anteriormente:

//Crea el evento MouseMove en el DW. (pbm_mousemove). Luego agregas esto:

string ls_detail
long ll_row

ls_detail=GetBandatpointer( )

if left(lower(ls_detail),7)='detail ' then //No borres el espacio en blanco
ll_row=long(right(ls_detail,len(ls_detail) - 7))
if ll_row>0 then
if isSelected(ll_row) then return
Selectrow(0,false)
Selectrow(ll_row,true)
end if
end if

Cualquier duda nos comentas........

Suerte !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

MouseMove Listo

Publicado por Armando (6 intervenciones) el 20/02/2006 14:56:04
Ambas soluciones son lo q queria.. gracias.. amigos

Aca lo dejo para q otro compañero lo utilice...

Primer Forma:

long ll_row
string ls_detail

ls_detail = GetBandatpointer()
ll_row = long(right(ls_detail,len(ls_detail) - 7))
if ll_row>0 then
Choose Case Mid(GetBandatPointer(), 1 ,6)
Case "detail"
This.SetRedraw(False)
This.SelectRow(0, False)
This.SelectRow(ll_row, True)
This.SetRedraw(True)
This.SetRowFocusIndicator(hand!)
End Choose
end if

Segunda Forma:
string ls_detail
long ll_row

ls_detail=GetBandatpointer()

//if left(lower(ls_detail),7) = 'detail ' then //No borres el espacio en blanco
ll_row=long(right(ls_detail,len(ls_detail) - 7))
if ll_row>0 then
if isSelected(ll_row) then return
Selectrow(0,false)
Selectrow(ll_row,true)
end if
//end if

Le puse el comentario por q no me salia.. pero comentandolo todo perfecto...
Jancarlo para q me sirve esa linea...
if left(lower(ls_detail),7) = 'detail ' then

Gracias a Jancarlo y a Jorge a ambos mil gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MouseMove Listo

Publicado por Jorge (900 intervenciones) el 20/02/2006 16:56:43
De nada Armado

para eso esta el foro aprendemos en cada uno de los post.

Saludos cordiales desde Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MouseMove Listo.. pero...!

Publicado por Jorge (900 intervenciones) el 20/02/2006 14:11:05
Armando

Si utilizas el Ivento ID pbm_dwnmousemove el parametro row
te va a dar la fila actual que el puntero pase

por ello te puse this.

el Mid es para filtrar el retorno de la funcion GetBandatPointer( ), que
te retorna la banda Header, detail, summary, footer

//Choose Case Mid(GetBandatPointer( ),1,6)
// Case "detail"
// This.SetRedraw(False)
// This.selectrow(0,false)
// This.selectrow(row,true)
// This.SetRedraw(True)
// End Choose

Lo que Jancarlo te dice tb es correcto solo que creo que de esta
manera tinenes menos codigo y trabajas directamente sobre
la dw no sobre toda la Windows

Suerte y Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MouseMove Listo.. pero...!

Publicado por richiexxx1 (1 intervención) el 14/07/2014 20:33:37
hola use los codigos pero la manito no sigue al pasar el mause por las filas .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar