Array
(
)

Arquivos em DB SQL / Mostrar ícone de acordo c/ extensão

Robotpost
   - 11 abr 2006

Olá pessoal, blz?

Estou com duas dúvidas, vamos ver se conseguem me ajudar:
Tenho uma tabela num banco de dados SQL Server, onde armazeno arquivos de clientes, de qualquer tipo(jpeg, pdf, doc, txt, xls, gif, etc...), e preciso listar estes arquivos num DBGrid, ou num DBListBox, ou em algum componente que permita isso...
A dúvida é a seguinte:

Tem como exibir o arquivo em algum componente do delphi, mas com o ícone do arquivo de acordo com a extensão?
Exemplo:
Eu coloco um arquivo .htm, aparece com aquele ícone do Internet Explorer, eu coloco um arquivo .xls, aparece o ícone de arquivos do Excel, etc...

A outra é:
Existe alguma forma de abrir um arquivo que esteja em uma tabela do SQL Server, editá-lo, e salvá-lo novamente dentro da tabela, sem a necessidade do usuário ter que extrair o arquivo do banco, para poder editá-lo, e então jogar no banco novamente?
Isso ajudaria um bocado, porque os usuário reclamam que o programa não fica usual assim, tendo que extrair, editar, localizar o cliente, e então substituir o arquivo antigo do banco, pelo que acabou de ser editado.

É isso pessoal, agradeço antecipadamente a atenção e a ajuda.

Abraços!

Fernando


Paulocesar1301
   - 12 abr 2006

Meu Caro,


Citação:
Tem como exibir o arquivo em algum componente do delphi, mas com o ícone do arquivo de acordo com a extensão?


Tenho algo bem semelhante aqui... o que fiz foi um ´.res´ e na minha tabela eu tenho 2 campos (um com o próprio arquivo e outro com sua extensão) e al ler o registro, ele testa a extensão e carrega do ´.res´ o tipo correspondente:

No ´.res´
#Código


ICONEJPG ICON "C:\QualquerCaminho\jpeg.ico"
ICONEGIF ICON "C:\QualquerCaminho\gif.ico"
ICONEPPT ICON "C:\QualquerCaminho\ppt.ico"
...



Robotpost
   - 12 abr 2006

Olá amigo.
Vc poderia me dar uma idéia de como trabalhar com arquivos .res?
O que vc faz?Armazena as imagens nele é isso?

Abraços e obrigado pela ajuda.

Fernando


Paulocesar1301
   - 12 abr 2006

Em etapas:

1-Crie um arquivo texto e troque a extensão para ´.rc´;
» Coloque no ´.res´:
#Código


ICONEJPG ICON "C:\QualquerCaminho\jpeg.ico"
ICONEGIF ICON "C:\QualquerCaminho\gif.ico"
ICONEPPT ICON "C:\QualquerCaminho\ppt.ico"

» Tipos: ICON, BITMAP, RCDATA, etc...
Obs.: RCDATA serve para qualquer coisa !

2-Crie um ´.bat´ dentro da mesma pasta onde salvou o ´.rc´ com o seguinte código:
#Código

echo off
C:\Arquiv~1\Borland\Delphi6\Bin\brcc32.exe "C:\CaminhoDoRC\meures.rc"
pause

Obs.: O pause é só para ver se tuco correu bem ou se gerou algum erro
» Na mesma pasta será criado um arquivo ´.res´

3-Copie, caso já não esteja, o arquivo ´.res´ para a pasta onde está seu projeto;
4-Coloque uma indicação do ´.res´ em seu projeto:
#Código

...
implementation

{$R meures.res}
{$R *.dfm}


5-Em seu projeto, você pode extrair o arquivo ou carregar seu conteúdo:
» Extraindo:
#Código

Var ResStream: TResourceStream;

Try
Try
ResStream := TResourceStream.CreateFromID (HInstance, 1, RT_RCDATA);
ResStream.SaveToFile(PastaDestino + ´arqbmp.bmp´);
Finally
ResStream.Free;
End;
Except
ResStream.Free;
End;

» Depois é só ler o arquivo como outro qualquer;

» Lendo direto do ´.res´:
#Código

Image1.Picture.Icon.Handle := LoadIcon(HInstance, ´ICONEJPG´);


... acho que não esqueci de nada ...

Abraços e Bons Códigos :wink:


Robotpost
   - 12 abr 2006

Olá amigo.

Muito obrigado, vc abriu a minha mente c/ esta explicação.. rs
Vai ser de enorme utilidade, obrigado mesmo!

Fernando


Paulocesar1301
   - 12 abr 2006

:lol: Agente fazemos o que agente podemos :lol: