Page 1 of 1

Aproperties Tsay, Timage, tBtnbmp

PostPosted: Thu Feb 02, 2012 7:01 pm
by J. Ernesto
Don Antonio Linares, Daniel Garcia Gil

En un dialog tengo tres tipos de control, Tsay, Tbtnbmp, Timage, usados para desplegar fotos tipo jpg o png, mostradas bajo un criterio de selección.

Al hacer click o doble click sobre una foto debo recuperar el indice del aControls para extrraer el nombre del archivo mostrado y hacer una tarea especifica, lo
lo mismo al hacer click sobre un BtnBmp, cual propiedad de aproperties debo usar para este caso?

Y cómo determino el indice en aControls donde se hizo el click?

y por último donde consigo documentacion sobre aproperties de las claases de fivewin.


Saludos

PD: Hasta ahora he logrado ver lo siguiente.....

@ 000, 142 LISTBOX oBrw ;
FIELDS ;
TRANSFORM ( n, "999,999" ) ,;
oDlg:aControls [ n ]:ClassName () ,;
oDlg:aControls [ n ]:cToolTip ,;
IIF ( oDlg:aControls [ n ]:ClassName () = "TIMAGE",;
oDlg:aControls [ n ]:cBMPFILE ,;
oDlg:aControls [ n ]:cVarName ) ,;
oDlg:aControls [ n ]:Cargo ,;
oDlg:aControls [ n ]:SetText ,;
oDlg:aControls [ n ]:cCaption ;
HEADERS ;
"Indice" ,;
"ClassName" ,;
"cToolTip" ,;
"cBmpFile" ,;
"Cargo" ,;
"SetText" ,;
"cCaption" ;
FIELDSIZES ;
060 ,;
100 ,;
100 ,;
100 ,;
100 ,;
100 ,;
100 ;
SIZE 300, 45 PIXEL FONT oFont2 OF oDlg ;
COLOR nRGB ( 220, 220, 000 ), nRGB ( 000, 065, 033 ) ; && Letras / fondo Verde

oBrw:SetArray ( oDlg:aControls )

oBrw:bGotop := { | | n := 1 }
oBrw:bGoBottom := { | | n := EVAL ( oBrw:bLogicLen ) }
oBrw:bSkip := { | nwant, nold | nold := n , n += nwant ,;
n := MAX ( 1, MIN ( n, EVAL ( oBrw:bLogicLen ) ) ), n - nOld }
oBrw:bLogicLen := { | | LEN ( oDlg:aControls ) }
oBrw:nClrBackFocus := nRGB ( 250, 250, 016 ) && Color del Fondo Amarillo
oBrw:nClrForeFocus := nRGB ( 016, 032, 250 ) && Color del Texto Azul
oBrw:nLineStyle := 5 && Try different line styles !!!
oBrw:lCellstyle := .T. && Dibujar malla

Re: Aproperties Tsay, Timage, tBtnbmp

PostPosted: Thu Feb 02, 2012 9:39 pm
by Antonio Linares
Ernesto,

Prueba asi:
Code: Select all  Expand view

local nAt := AScan( oDlg:aControls, { | oControl | oControl:hWnd == GetFocus() } )
local oControl := oDlg:aControls[ nAt ]

do case
    case oControl:ClassName() == "TBTNBMP"
           return oControl:cBmpFile1

    case oControl:ClassName() == "TIMAGE"
            return oControl:cBmFile
endcase  
 

Re: Aproperties Tsay, Timage, tBtnbmp

PostPosted: Fri Feb 03, 2012 9:29 pm
by J. Ernesto
Don Antonio

Aun sin resolver, segui su comentario, pero, cuando el control es de la clase tBTMBMP, ok puedo buscar el hilo del archivo que se muestra, pero cuando es con la clase TImage, sequeda con el nAt del tBTMBMP anterior, que otro camino busco..

Gracias

Re: Aproperties Tsay, Timage, tBtnbmp

PostPosted: Fri Feb 03, 2012 9:33 pm
by J. Ernesto
en este link hay una imagen, las fotos que se ven es con TIMAGE, los cuadros vacios es con TBTNBMP

http://www.subirimagenes.com/otros-pant ... 93709.html

Saludos

Re: Aproperties Tsay, Timage, tBtnbmp

PostPosted: Fri Feb 03, 2012 9:52 pm
by J. Ernesto

Re: Aproperties Tsay, Timage, tBtnbmp

PostPosted: Mon Feb 06, 2012 12:31 pm
by Antonio Linares
Ernesto,

Eso se debe a que un control TImage no toma el foco (normalmente) ya que el usuario no suele interaccionar con él.

Si estas usando un diálogo definido en un RC prueba a ponerle el estilo WS_TABSTOP que haria que pudiese tomar el foco.

Otra solución es modificar el código que te he propuesto pero que cambie GetFocus() por otra condición que pueda ayudarnos a identificar el control. Por ejemplo, podrias anotar en su DATA Cargo un valor que te ayude a localizarle:

local nAt := AScan( oDlg:aControls, { | oControl | oControl:Cargo == ... } )

otra solución es comprobando su nombre de Clase:

local nAt := AScan( oDlg:aControls, { | oControl | oControl:ClassName() == "TIMAGE" } )

posibilidades siempre hay muchas :-)