Página 1 de 2
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 11:47
por guanabara
Bom dia a todos, estou aqui de novo com uma nova dúvida, tenho uma pasta no seguinte caminho C:\imagens\tif e dentro dela milhares de arquivos com a extensão *.TIF, gostaria de um comando que listasse todos esses arquivos em uma grid e conforme eu selecionasse os itens dessa grid me mostrasse a foto selecionada... Tentei o Adir só que não consegui colocar o resultado dele na grid, segue exemplo do formulário que ainda não funciona.
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 12:24
por Pablo César
guanabara escreveu:tenho uma pasta no seguinte caminho C:\imagens\tif e dentro dela milhares de arquivos com a extensão *.TIF, gostaria de um comando que listasse todos esses arquivos em uma grid e conforme eu selecionasse os itens dessa grid me mostrasse a foto selecionada...
Comando só ? Isso parece mágica... rs (desculpe, parece aqueles clientes resumem com um "programinha" tudo o que eles querem... rs). Isso é relativamente fácil. Você precisará do ADIR como você mesmo mencionou. Adicione os nomes no grid e depois faça uma função no ON CHANGE do grid, que a medida mudar de arquivo você apena visualize ao lado.
Aqui tem um bom exemplo: C:\MiniGUI\SAMPLES\Advanced\FreeImage
E outro exemplo, mas elaborado é este:
http://hmgforum.com/viewtopic.php?p=6734#p6734
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 12:42
por alxsts
Olá!
A função ADir() é obsoleta desde os tempos do Clipper. Recomenda-se utilizar Directory():
Código: Selecionar todos
#include "directry.ch"
PROCEDURE FileList()
LOCAL aFList := DIRECTORY( "C:\Harbour\*.*" )
LOCAL a1File
FOR EACH a1File IN aFList
? SPACE( 4 ),;
PAD( a1File[ F_NAME ], 13 ),; /* File name */
TRAN( a1File[ F_SIZE ], "999,999,999" ),; /* File size */
a1File[ F_DATE ],; /* File date */
a1File[ F_TIME ],; /* File time */
a1File[ F_ATTR ] /* File attribute */
NEXT
RETURN // FileList()
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 12:48
por Pablo César
Ahhh esqueci de complementar: coloque o path completo para abertura das imagens, senão não vai encontrá-las...
Listar Arquivos em uma Grid (HMG)
Enviado: 17 Mar 2013 15:38
por guanabara
Boa tarde, desculpe em dizer "gostaria de um comando" , não quis dizer como se fosse "só" um comando, sei que são vários comandos e funções para chegar onde quero, foi força de expressão. Sempre esqueço de dizer que é pra HMG mas vou verificar pois instalei o Minigui também, estou algum tempo pesquisando sobre isso e não localizei nada. Obrigado pela força de todas num domingão deste....
Pablo a solução pelo C:\MiniGUI\SAMPLES\Advanced\FreeImage não consegui rodar, é muito complexo pra mim, não consegui compilar... a solução pelo site:
http://hmgforum.com/viewtopic.php?p=6734#p6734 o link para o download está quebrado....
alxsts, iseri o código, não deu erro algum mas também não me retornou informação nenhuma, como faço, tentei inserir ITEMS FileList() na grid, só que a grid ainda permanece vazia... Como faço....
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 16:42
por Pablo César
Oi Wellington,
Fiz um tutorial passo a passo de como fazer um exemplo simples e creio que vai atender as suas expectativas. Na verdade é um segundo vídeo, pois o primeiro eu não tinha disponíveis os arquivo tif e o cursor no vídeo não estava aparecendo, mas fiz um roteiro e regravei para ser apresentado aqui (acho que um dos primeiros vídeo tutoriais utilizando a IDE da HMG).
O vídeo encontra-se neste tópico
Espero que tenham gostado, agora é com você, digitar tudo o que tem no vídeo, acho que é pouca coisa graças a IDE que faz a maior parte.
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 18:10
por guanabara
Que legal :{ , não achei o vídeo do tutorial, não está anexo, fica aonde.....
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 18:37
por Pablo César
Veja agora na minha mensagem anterior, o link do vídeo. Talvez tenha que baixar o vídeo pela questão da qualidade no 4Shared.
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 18:46
por guanabara
Já to baixando 20 minutos de ensinamento, sabedoria e esquema tático de programação via HMG IDE... Ancioso..... heheheheh...... X:) Eh carroça de Wirelless, Agora sim, sessão das 10...
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 19:50
por Pablo César
Lamento pelo inconveniente, mas com o Sr. Toledo iremos buscar uma forma mais prática de visualizar os vídeos.
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 21:05
por guanabara
Que massa esse vídeo, adorei, nunca havia visto alguém programar, ao vivo, aprendi muita coisa que não sabia, parabéns, não entendi "Lamento pelo inconveniente....", o que quis dizer....
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 21:31
por Pablo César
Quê bom que você gostou Wellington. Sobre o inconveniente, referia-me a ter que baixar o vídeo ao invés de poder rodá-lo.
Listar Arquivos em uma Grid
Enviado: 17 Mar 2013 22:43
por guanabara
Que nada, poderia demorar a noite toda que eu iria aguardar, demora porque minha net é muito lenta, ela é via Wirelless que vem de algum prédio do centro da cidade, aqui na periferia de Araçatuba-SP não tem Speedy (ADSL da Vivo) e nem NET (Internet a Cabo), vou descobrir onde o Sr. Toledo mora (meu conterrâneo) e vou passar por lá uma tarde inteira, daí não fico mais te perturbando... hehehehe... Lá tem speedy de no minimo 10MB e conhecimento farto para concluir meus programinhas doidos... heheheheh...
Listar Arquivos em uma Grid
Enviado: 18 Mar 2013 10:50
por Pablo César
Agora só falta saber se você conseguiu o código pelo vídeo que apresentei. Era isso mesmo ?
Você até pode ampliar com maiores recursos, ao invés de limitar o tipo de arquivo tif para outros do tipo: jpg, bmp, pdf, texto enfim. Para cada extensão utilizar uma forma de abrir ou visualizar. Mas também terá que mudar a pasta onde os arquivos se encontram. Outra coisa que fiquei em dúvida se o tamanho do elemento IMAGE foi suficiente, senão ficou muito pequeno. Daí você pode ampliar a janela e consequentemente o tamanho do IMAGE.
Listar Arquivos em uma Grid
Enviado: 18 Mar 2013 14:29
por guanabara
Pablo César escreveu:Agora só falta saber se você conseguiu o código pelo vídeo que apresentei. Era isso mesmo ?
Baixei, assisti o vídeo e fui fazendo igualzinho você fez, era mesmo o que eu queria sim. Já estou editando as fotos..
Pablo César escreveu:Você até pode ampliar com maiores recursos, ao invés de limitar o tipo de arquivo tif para outros do tipo: jpg, bmp, pdf, texto enfim. Para cada extensão utilizar uma forma de abrir ou visualizar. Mas também terá que mudar a pasta onde os arquivos se encontram.
Por enquanto meu trabalho se baseia em arquivos *.Tif, mas entendi como mudar para visualizar arquivos de imagem com outra extensão.
Pablo César escreveu: Outra coisa que fiquei em dúvida se o tamanho do elemento IMAGE foi suficiente, senão ficou muito pequeno. Daí você pode ampliar a janela e consequentemente o tamanho do IMAGE.
Já alterei as dimensões da imagem e consigo visualiza-la perfeitamente.
Outra coisa, inseri um textbox para que eu possa digitar um novo nome para o arquivo e que apos o enter o mesmo renomei-e e mova para uma pasta com o mesmo nome, tá funcionando perfeitamente, só que quando chega mais o menos em 150 registros modificados a imagem da tela não é mais substituida pela próxima imagem, as linhas do grid se movimentam mais a imagem permanece a mesma, não consegui descobrir o erro, tem algum clear paras as imagens zerarem, deve ser isso, deve ter sobrecarregado de imagens....
Segue código alterado:
Código: Selecionar todos
#include <hmg.ch>
#include "Directry.ch"
Function Main(cPath)
Public aFiles:={}, aTemp, nTam, I
If cPath=Nil
cPath:="C:\IMAGENS\TIF"
Endif
aTemp:=Directory(cPath + "\*.tif")
nTam:=Len(aTemp)
For I=1 To nTam
AaDd(aFiles,{aTemp[I,1]})
Next
DEFINE WINDOW Form_1 AT 211 , 242 WIDTH 698 HEIGHT 449;
TITLE "Visualizador de Imagens" ICON NIL MAIN
DEFINE GRID Grid_1
ROW 10
COL 10
WIDTH 300
HEIGHT 670
ITEMS aFiles
VALUE 1
WIDTHS { 300 }
HEADERS {'Nome do Arquivo'}
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
ONCHANGE Exibir(cPath, This.Value)
ONENTER nil
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONDBLCLICK nil
ONHEADCLICK Nil
ONQUERYDATA Nil
MULTISELECT .F.
ALLOWEDIT .F.
VIRTUAL .F.
DYNAMICBACKCOLOR Nil
DYNAMICFORECOLOR Nil
COLUMNWHEN Nil
COLUMNVALID Nil
COLUMNCONTROLS Nil
SHOWHEADERS .T.
CELLNAVIGATION .F.
NOLINES .F.
HELPID Nil
IMAGE Nil
JUSTIFY Nil
ITEMCOUNT Nil
BACKCOLOR NIL
FONTCOLOR NIL
HEADERIMAGES Nil
ROWSOURCE Nil
COLUMNFIELDS Nil
ALLOWAPPEND .F.
ALLOWDELETE .F.
BUFFERED .F.
DYNAMICDISPLAY Nil
ONSAVE Nil
LOCKCOLUMNS NIL
END GRID
DEFINE IMAGE Image_1
ROW 80
COL 330
WIDTH 1500
HEIGHT 1500
PICTURE ""
HELPID Nil
VISIBLE .T.
STRETCH .F.
ACTION Nil
END IMAGE
DEFINE TEXTBOX Text_1
ROW 40
COL 500
WIDTH 680
HEIGHT 30
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
ONCHANGE nil
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONENTER RENOMEAR()
HELPID Nil
TABSTOP .T.
VISIBLE .T.
READONLY .F.
RIGHTALIGN .F.
DISABLEDBACKCOLOR Nil
DISABLEDFONTCOLOR Nil
CASECONVERT NONE
BACKCOLOR NIL
FONTCOLOR NIL
INPUTMASK Nil
FORMAT Nil
UPPERCASE .T.
VALUE ""
END TEXTBOX
DEFINE LABEL NomeAgencia
ROW 40
COL 360
WIDTH 200
HEIGHT 30
VALUE "Nome da Agencia:"
FONTNAME "Arial"
FONTSIZE 10
TOOLTIP ""
FONTBOLD .T.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
HELPID Nil
VISIBLE .T.
TRANSPARENT .F.
ACTION Nil
AUTOSIZE .F.
BACKCOLOR Nil
FONTCOLOR Nil
END LABEL
END WINDOW
MAXIMIZE WINDOW FORM_1
Exibir(cPath,1)
Form_1.Text_1.SetFocus
Form_1.Center
Form_1.Activate
Return nil
Function Exibir(cPath,nItem)
Public cImagem:= GetProperty("Form_1","Grid_1","Item",nItem)[1]
If IsControlDefined(Image_1,Form_1)
SetProperty("Form_1","Image_1","Picture",cPath + "\" + cImagem)
Endif
Return Nil
Function Renomear()
Public cProcura:=GetProperty("form_1","text_1","Value")
If Empty ( Form_1.Text_1.Value )
MsgInfo("Nome do Arquivo Em Branco, Digite o novo nome do arquivo confor imagem abaixo...")
Return
EndIf
DIRMAKE(CProcura)
RENAMEFILE('C:\IMAGENS\TIF\' + cimagem, 'C:\IMAGENS\'+ cProcura +'\' + cProcura + ' - ' + cImagem + '.JPG')
SetProperty("Form_1","Text_1","Value", "")
Valor:=GetProperty("form_1","GRID_1","Value")
SetProperty("Form_1","GRID_1","VALUE", VALOR + 1)
SetProperty("Form_1","Image_1","Picture", "")
Msgbox((STR(VALOR))) // PARA VER EM QUAL REGISTRO PAROU DE TROCAR AS IMAGENS //
Return Nil