Crear procedimiento click para diferentes labels
Buenos días Experto:
He creado un programa que me permite definir un formulario y crear en el tantos labels y pictures, dependiendo de un listado de nombres que busca en un campo de una dterminada tabla. Por ejemplo, el campo de mi tabla se llama "imagen" y en el almacena un determinado numero de imágenes, a ejemplo: imag1.tif;imag2.tif;imag3.tif... En lo descrito anteriormente tengo tres imágenes, por tanto, cuando creo un formulario, se me crean ademas 3 labels y 3 picture, cada una correspondiente a la imagen descrita. Hasta allí no tengo problema. Ahora lo que quiero hacer es que cuando dé al evento click en cualquiera de las labels (tipo hipervínculo), se me abra la imagen correspondiente a ese label. El codigohasta ahora realizado es el siguiente:
OPEN DATABASE C:\Digitalizacion_Diputacion\DATA\archivo.dbc
PUBLIC ruta,bb
ruta="C:\1995_Tratamiento_Imagenes(COMPLETO)\"
bb=""
USE libros
GO BOTTOM
PUBLIC oMyObject, nomimagen,num as Number
nomimagen=libros.imagen&&"001.TIFF;002.TIFF;003.TIFF;004.TIFF;005.TIFF;006.TIFF;007.TIFF;008.TIFF"
num=ALINES(MyArray, STRTRAN(nomimagen,";",CHR(13)))
oMyObject = CREATEOBJECT("frmTest")
oMyObject.SHOW
DEFINE CLASS frmTest AS FORM
Height = 400
DIMENSION aMyArray[num]
PROCEDURE Init
*********LABEL***
*****************
FOR i = num to 1 STEP -1
THIS.AddObject('THIS.aMyArray','LABEL')
ENDFOR
****** FOR EACH - NEXT, PARA VISIBILIDAD ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.Visible = .T.
NEXT
****** FOR EACH - NEXT element PARA PROPIEDAD FONT BOLD *****&&*6
FOR EACH oLabel IN THIS.aMyArray
oLabel.FontBold = .T.
NEXT olabel
FOR EACH oLabel IN this.aMyArray
oLabel.MousePointer=15
NEXT
j = 1
****** FOR EACH - ENDFOR PARA POSICION TOP ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.top = j * 80
j = j + 1
ENDFOR
****** FOR EACH - ENDFOR element ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.FontItalic = .T.
ENDFOR olabel
j = 1
****** EXIT ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.Caption = MyArray(j) &&"test" + str(j)
olabel.click()
j = j+1
IF j = (num+1)
EXIT
ENDIF
NEXT
***FIN LABEL****
***************
***IMAGEN******
***************
FOR i = num to 1 STEP -1
THIS.AddObject('THIS.aMyArray','IMAGE')
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.Visible = .T.
NEXT
j = 1
****** FOR EACH - ENDFOR ******
FOR EACH oimage IN THIS.aMyArray
oimage.top = j * 100
j = j + 1
ENDFOR
j =1
FOR EACH oimage IN THIS.aMyArray
oimage.height = 100
j = j + 1
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.width = 74
j = j + 1
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.Stretch = 1
j = j + 1
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.borderstyle = 1
j = j + 1
ENDFOR
j=1
FOR EACH oimage IN THIS.aMyArray
oimage.left = 60
j = j + 1
ENDFOR
&&contenido de cada picture
j = 1
FOR EACH oimage IN THIS.aMyArray
oimage.picture = ruta + MyArray(j)
j = j+1
IF j = (num+1)
EXIT
ENDIF
NEXT
***FIN IMAGEN******
********************
ENDPROC
&&no se como hacer procedimiento click para cada label, se supone que con lo descrito lineas abajo me permitiria abrir la imagen
PROCEDURE click
num=ALINES(MyArray, STRTRAN(nomimagen,";",CHR(13)))
j=1
FOR EACH Label IN this.aMyArray
LOCAL aa,LcFile,loShell
aa=ruta
lcFile = aa
loShell = CREATEOBJECT("Shell.Application")
j = j+1
loShell.ShellExecute(lcFile)
RELEASE loShell
nEXT
endproc
ENDDEFINE
Por favor experto, ayudame con esto.
Un saludo cordial.
He creado un programa que me permite definir un formulario y crear en el tantos labels y pictures, dependiendo de un listado de nombres que busca en un campo de una dterminada tabla. Por ejemplo, el campo de mi tabla se llama "imagen" y en el almacena un determinado numero de imágenes, a ejemplo: imag1.tif;imag2.tif;imag3.tif... En lo descrito anteriormente tengo tres imágenes, por tanto, cuando creo un formulario, se me crean ademas 3 labels y 3 picture, cada una correspondiente a la imagen descrita. Hasta allí no tengo problema. Ahora lo que quiero hacer es que cuando dé al evento click en cualquiera de las labels (tipo hipervínculo), se me abra la imagen correspondiente a ese label. El codigohasta ahora realizado es el siguiente:
OPEN DATABASE C:\Digitalizacion_Diputacion\DATA\archivo.dbc
PUBLIC ruta,bb
ruta="C:\1995_Tratamiento_Imagenes(COMPLETO)\"
bb=""
USE libros
GO BOTTOM
PUBLIC oMyObject, nomimagen,num as Number
nomimagen=libros.imagen&&"001.TIFF;002.TIFF;003.TIFF;004.TIFF;005.TIFF;006.TIFF;007.TIFF;008.TIFF"
num=ALINES(MyArray, STRTRAN(nomimagen,";",CHR(13)))
oMyObject = CREATEOBJECT("frmTest")
oMyObject.SHOW
DEFINE CLASS frmTest AS FORM
Height = 400
DIMENSION aMyArray[num]
PROCEDURE Init
*********LABEL***
*****************
FOR i = num to 1 STEP -1
THIS.AddObject('THIS.aMyArray','LABEL')
ENDFOR
****** FOR EACH - NEXT, PARA VISIBILIDAD ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.Visible = .T.
NEXT
****** FOR EACH - NEXT element PARA PROPIEDAD FONT BOLD *****&&*6
FOR EACH oLabel IN THIS.aMyArray
oLabel.FontBold = .T.
NEXT olabel
FOR EACH oLabel IN this.aMyArray
oLabel.MousePointer=15
NEXT
j = 1
****** FOR EACH - ENDFOR PARA POSICION TOP ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.top = j * 80
j = j + 1
ENDFOR
****** FOR EACH - ENDFOR element ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.FontItalic = .T.
ENDFOR olabel
j = 1
****** EXIT ******
FOR EACH oLabel IN THIS.aMyArray
oLabel.Caption = MyArray(j) &&"test" + str(j)
olabel.click()
j = j+1
IF j = (num+1)
EXIT
ENDIF
NEXT
***FIN LABEL****
***************
***IMAGEN******
***************
FOR i = num to 1 STEP -1
THIS.AddObject('THIS.aMyArray','IMAGE')
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.Visible = .T.
NEXT
j = 1
****** FOR EACH - ENDFOR ******
FOR EACH oimage IN THIS.aMyArray
oimage.top = j * 100
j = j + 1
ENDFOR
j =1
FOR EACH oimage IN THIS.aMyArray
oimage.height = 100
j = j + 1
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.width = 74
j = j + 1
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.Stretch = 1
j = j + 1
ENDFOR
FOR EACH oimage IN THIS.aMyArray
oimage.borderstyle = 1
j = j + 1
ENDFOR
j=1
FOR EACH oimage IN THIS.aMyArray
oimage.left = 60
j = j + 1
ENDFOR
&&contenido de cada picture
j = 1
FOR EACH oimage IN THIS.aMyArray
oimage.picture = ruta + MyArray(j)
j = j+1
IF j = (num+1)
EXIT
ENDIF
NEXT
***FIN IMAGEN******
********************
ENDPROC
&&no se como hacer procedimiento click para cada label, se supone que con lo descrito lineas abajo me permitiria abrir la imagen
PROCEDURE click
num=ALINES(MyArray, STRTRAN(nomimagen,";",CHR(13)))
j=1
FOR EACH Label IN this.aMyArray
LOCAL aa,LcFile,loShell
aa=ruta
lcFile = aa
loShell = CREATEOBJECT("Shell.Application")
j = j+1
loShell.ShellExecute(lcFile)
RELEASE loShell
nEXT
endproc
ENDDEFINE
Por favor experto, ayudame con esto.
Un saludo cordial.
1 respuesta
Respuesta de ingesoft
1