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.
Respuesta
1
No entiendo el termino se abra, se muestre en el fox o se abra en otro programa editor de imágenes, pásame el form a [email protected]
Para poder verlo en modo ejecución .
Buenas tardes experto.
Gracias por tu rponta respuesta, te he enviado los archivos desde mi email: [email protected].
Un saludo y muchas gracias.
No llegaron los archivos mandalos comprimidos
Hola experto:
Te los he enviadopor email en formato .rar.
Saludos :)
Ok lo siento no tengo en fox 9
Ok lo siento no tengo en fox 9, pero es fácil si ya pudiste crear el numero de labels según los archivos contenidos en una tabla o cursor o matriz y allí están los nombres de los archivos por que no crear un evento shellexecute sumándole a la ruta aa el nombre del archivo por que por lo que veo solo esta la ruta. Por q defines aa=ruta y lcFile=aa y el nombre del archivo donde esta si aa es la ruta yo le sumaria aa al nombre del archivo para abrirlo lcFile=aa+'\'+ myarray(j).
Si mi lógica esta correcta esa seria la solución.
Buenas experto:
Lo que quería exactamente era definir el procedimiento click según las labels que se crean. De todas maneras seguiré buscando.
Un saludo y muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas