Imagem na Tela Principal do Sistema

Delphi

17/04/2015

Boa Tarde tenho tido duvida em uma coisa e gostaria que tirassem a minha duvida.
Tenho a tela principal do meu sistema com uma imagem quando dou dois cliques na tela me abre uma tela de configuração da tela principal com um componente image um edit e tres button (Pesquisar , Salvar e Sair) e queria saber como resolvo tres problemas.

1 - no button pesquisar quero abrir uma outra tela com um memo com todas as imagens da pasta Logos localizada dentro do meu sistema e ao lado do memo uma timage layout para ver a imagem e ao clicar em selecionar o timage da tela de configuração recebe a imagem.

2 - no button salvar como eu faço para alterar a imagem do sistema principal com a mesma imagem que eu escolhi na configuração e como eu faço para manter ela como imagem principal.

3 - no edit como eu coloco o Caminho ali dentro do componente: Ex: C/SConsult/Logos/Image.JPG
Thiago Santos

Thiago Santos

Curtidas 0

Respostas

Thiago Santos

Thiago Santos

17/04/2015

consegui resolver o problema 1 e o 3
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

Já que você resolveu o primeiro e o terceiro, vou tentar te ajudar no segundo.

Se você salvou as informações do edit do item 3 em algum lugar, basta colocar o código abaixo na hora de iniciar o form

image1.loadfromfile(edit3.text);






Isso deve funcionar!
Att
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

na verdade não está salvando em local algum é simplesmente uma função que o usuário terá no meu sistema e como irá funcionar:

o usuário clica em configurar tela imagem principal

abre um outro form com um edit tres botoes (busca, salva e fecha), um timage, um openpicturedialog.

clicando no button busca abre o openpicturedialog para selecionar a imagem

a imagem irá ser visualizada no image dentro deste form

clicando em salvar ela irá mudar na tela principal e mantenho ela até que seja trocada novamente

como que eu faria isso?

Obrigado
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

Para definir uma image no image, basta usar o código acima.

A imagem não será alterada, ate que a aplicação seja finalizada, ou mudada pelo próprio usuário.
Se você quiser que essa imagem volte quando o sistema for re aberto, ai que salvar o caminho da imagem em algum lugar e criar uma rotina para subir toda vez que iniciar o sistema, ou seja, usar o código que eu passei.



Att
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

no caso o codigo eu coloco no form principal ou no form que configura a imagem

obg
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

Sim. Vou escrever um exemplo abaixo, suponhamos que o edit que o caminho da imagem será salvo, esteja sempre disponível.


form1 = seu form principal
editimg = edit onde está a imagem
image1 - lugar onde será exibido a imagem
form2 = form onde muda a imagem

No evento show do form1, coloque:
image1.picture.loadfromfile(form2.editimg.text);


No botão que salva a imagem, alem do opendialog, colque o código
form1.image1.picture.loadfromfile(form2.editimg.text);



A principio, utilize apenas imagem jpeg, ai depois você adiciona os uses dos formatos desejados.
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

o salvar a imagem do form2 (configuração) o form1 (principal) deu certo. só não está dando certo no evento show carregar a imagem ao reiniciar a execução

olha os dois codigos ai:

form configuração da imagem - frmPrincipal.Image1.Picture.LoadFromFile(frmConfigImgPrincipal.edtCamImgPrincipal.Text);

evento show do form principal - Image1.Picture.LoadFromFile(frmConfigImgPrincipal.edtCamImgPrincipal.Text);

quando eu entro que o segundo código está inserido ai da uma janelinha de erro com tres opçoes break continue.

ai eu comento o código do principal.

como resolvo isso ai

Obrigado
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

Você colocou para abrir a configuração do edit que salva o endereço antes? Aparentemente, ele não esta abrindo nada porque edit esta vazio.
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

como assim porque sempre o edit está vazio ele só recebe alguma coisa quando seleciona a imagem

como eu faço para deixar registrado o caminho no edit da ultima seleção.

e se ai tem como configurar para salvar a imagem na tela principal
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

Tem n soluções para isso, você pode colocar em um arquivo ini, salvar em uma tabela no banco de dados, ou salvar em um arquivo xml.

Exemplo de arquivo xml

- Coloque no formconfig um clientdataset
- Abra o client dataset, dando 2 cliques, e na janela que abriu, botão direito, New Field.
- De um nome para esse campo, colque como string e coloque um valor superior a 80.
- Feito isso, note que você voltou para a janela anterior, basta selecionar o novo campo criado e arrastar para o form em questão.
Até aqui, foi feito a criação de um campo para salvar os dados. A partir de agora, salve o caminho da imagem, nesse edit (Delete o antigo, e coloque o nome dele nesse novo).

Após isso, no botão que carrega a imagem, coloque o seguinte código:
var
caminho : string;
begin
caminho := ExtractFilePath(Application.Exename) + 'nomedoarquivo.xml'; // Caminho, é a variavel que irá informar o lugar onde o arquivo será salvo. //ExtractFilePath(Application.Exename), pega o lugar onde o executavel do sistema está.


if FileExists(caminho) then // Irá verificar a existência do arquivo, evitando erro caso o mesmo não exista.
begin
ds.edit;
editimg.text := opendialog.filename; // pega o caminho da imagem
ds.post;
ds.savetofile(caminho); //salva no caminho da variavel
end
else
begin
ds.creatdataset; // nesse caso, o arquivo não foi encontrado. Esse codigo cria o "arquivo".
ds.append;
editimg.text := opendialog.filename;
ds.post;
ds.savetofile(caminho);
end



Nota: Incremente o código acima. Eu fiz de cabeça, se houver erro na hora de compilar, provavelmente, o codigo em questão é muito parecido.


Agora, no evento show do form, basta colocar o seguinte código.


var
caminho : string;
begin
caminho := ExtractFilePath(Application.Exename) + 'nomedoarquivo.xml'; // nesse caso, eu dupliquei a variavel, mais nada impede você de criar uma variavel universal.

if FileExists(caminho) then
begin
ds.loadfromfile(caminho); //funciona muito parecido com a imagem, só que com arquivo. Aqui, ele vai carregar o arquivo salvo anteriormente.
end
else
begin
showmessage('Imagem não pode ser carregada'); // Nesse caso, o arquivo não foi encontrado, e esse mensagem aparece, mais você pode trabalhar melhor nisso.
end



Att
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

vou tentar ve aki se funciona na verdade não entendi muito mas pelo que eu vi

eu vou no form de config e cria um data set

ai no load no edit coloco o codigo 1

e no evento show do form principal coloco o codigo2

é isso?
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

Vamos lá!

No código 1, "Após isso, no botão que carrega a imagem, coloque o seguinte código:"
Você vai colocar no botão que faz o usuário selecionar uma imagem.

E segundo é no show, create do form principal.
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

é dificil isso mais acho que depois que pega o jeito vai longe.

então eu abro o form configurar imagem, cria um clientdataset e dentro dele crio um campo edit e excluo o que eu possuo

ai passo o código 1 no button pesquisar imagem. só que o bs dá erro e no caso iria salvar no campo o caminho de imagens

como que faço isso dentro do meu sistema

tenho o edtCaminhoImgPrincipal
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

é dificil isso mais acho que depois que pega o jeito vai longe.

então eu abro o form configurar imagem, cria um clientdataset e dentro dele crio um campo edit e excluo o que eu possuo

ai passo o código 1 no button pesquisar imagem. só que o bs dá erro e no caso iria salvar no campo o caminho de imagens

como que faço isso dentro do meu sistema

tenho o edtCaminhoImgPrincipal
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

o que é o ds?
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

Tem n soluções para isso, você pode colocar em um arquivo ini, salvar em uma tabela no banco de dados, ou salvar em um arquivo xml.

Exemplo de arquivo xml

- Coloque no formconfig um clientdataset
- Abra o client dataset, dando 2 cliques, e na janela que abriu, botão direito, New Field.
- De um nome para esse campo, colque como string e coloque um valor superior a 80.
- Feito isso, note que você voltou para a janela anterior, basta selecionar o novo campo criado e arrastar para o form em questão.
Até aqui, foi feito a criação de um campo para salvar os dados. A partir de agora, salve o caminho da imagem, nesse edit (Delete o antigo, e coloque o nome dele nesse novo).

Após isso, no botão que carrega a imagem, coloque o seguinte código:
var
caminho : string;
begin
caminho := ExtractFilePath(Application.Exename) + 'nomedoarquivo.xml'; // Caminho, é a variavel que irá informar o lugar onde o arquivo será salvo. //ExtractFilePath(Application.Exename), pega o lugar onde o executavel do sistema está.


if FileExists(caminho) then // Irá verificar a existência do arquivo, evitando erro caso o mesmo não exista.
begin
ds.edit; //ds é o nome do meu clientedataset
editimg.text := opendialog.filename; // pega o caminho da imagem
ds.post;
ds.savetofile(caminho); //salva no caminho da variavel
end
else
begin
ds.creatdataset; // nesse caso, o arquivo não foi encontrado. Esse codigo cria o "arquivo".
ds.append;
editimg.text := opendialog.filename;
ds.post;
ds.savetofile(caminho);
end



Nota: Incremente o código acima. Eu fiz de cabeça, se houver erro na hora de compilar, provavelmente, o codigo em questão é muito parecido.


Agora, no evento show do form, basta colocar o seguinte código.


var
caminho : string;
begin
caminho := ExtractFilePath(Application.Exename) + 'nomedoarquivo.xml'; // nesse caso, eu dupliquei a variavel, mais nada impede você de criar uma variavel universal.

if FileExists(caminho) then
begin
ds.loadfromfile(caminho); //funciona muito parecido com a imagem, só que com arquivo. Aqui, ele vai carregar o arquivo salvo anteriormente.
end
else
begin
showmessage('Imagem não pode ser carregada'); // Nesse caso, o arquivo não foi encontrado, e esse mensagem aparece, mais você pode trabalhar melhor nisso.
end



Att


Ds é meu clientdataset
Nota: Se der um erro de mida.dll, basta acrescentar no uses dos form midaslib, que resolve o problema.
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

meu código coloquei assim:

caminho := ExtractFilePath(Application.ExeName) + 'nomedoarquivo.jpg';
if FileExists(caminho) then
Begin
ds.edtCamImgPrincipal;
edtCamImgPrincipal.Text := OpenPictureDialog1.FileName;
ds.post;
ds.savetofile(caminho);
End
else
Begin
ds.creatdataset;
ds.Append;
editimg.Text := OpenPictureDialog1.FileName;
ds.post;
ds.savetofile(caminho);
End;

e como adiciona a uses midaslib

pois sou novo em delphi e ai estou conhecendo agora os caminhos desta ferramenta.

Obrigado ai
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

olha o meu codigo ai não deu certo

caminho := ExtractFilePath(Application.ExeName) + 'nomedoarquivo.jpg';
if FileExists(caminho) then
Begin
ClientDataSet1.Edit;
edtCamImgPrincipal.Text := OpenPictureDialog1.FileName;
ClientDataSet1.Post;
ClientDataSet1.savetofile(caminho);
End
else
Begin
ClientDataSet1.CreateDataSet;
ClientDataSet1.Append;
edtCamImgPrincipal.Text := OpenPictureDialog1.FileName;
ClientDataSet1.post;
ClientDataSet1.savetofile(caminho);
End;

Valeu.....
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

ainda não consegui realizar
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

caminho := ExtractFilePath(Application.ExeName) + 'nomedoarquivo.jpg';
if FileExists(caminho) then
Begin
ClientDataSet1.loadfromfile(caminho); //Faltou essa linha
 If (OpenPictureDialog1.execute()) then
   begin
            ClientDataSet1.Edit;
            edtCamImgPrincipal.Text := OpenPictureDialog1.FileName;
            ClientDataSet1.Post;
            ClientDataSet1.savetofile(caminho);
            image1.picture.loadfromfile(edtCamImgPrincipal.Text); // essa também 
    end
End
else
Begin
ClientDataSet1.CreateDataSet;
If (OpenPictureDialog1.execute()) then
   begin
            ClientDataSet1.Append;
            edtCamImgPrincipal.Text := OpenPictureDialog1.FileName;
            ClientDataSet1.Post;
            ClientDataSet1.savetofile(caminho);
            image1.picture.loadfromfile(edtCamImgPrincipal.Text);
    end

End;
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

esse codigo pertence ao form configuração correto?
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

agora preciso que esse caminho permaneça ao sair e entrar novamente na tela de configuração e salvar para que essa imagem fique na tela do sistema principal também ao abrir e fechar
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

17/04/2015

O caminho permanece salvo, basta otimizar o código (já postado) no evento show do from.
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

como que é feito isso porque no evento show do form principal não reconhece o data set do form configurar

como que eu faço isso
GOSTEI 0
Thiago Santos

Thiago Santos

17/04/2015

boa tarde amigos até hoje não consegui realizar tal função
GOSTEI 0
POSTAR