Fórum Criar Menos Procedure #346130
16/09/2007
0
do windows. As imagems estão em um arquivo .RES no qual vai ser estraida com a procedure abaixo...
////////////////////////////////////////////////////////
procedure Image1Jpg;
Var PathToSave:String;
Res : TResourceStream;
Begin
//PathToSave := ExtractFilePath(Application.ExeName);
If not FileExists(PathToSave) Then Begin
Res := TResourceStream.Create(Hinstance, ´1JPG´, ´JPGFILE´);
Try
Res.SavetoFile(GetEnvironmentVariable(´WINDIR´)+´\web\1.jpg´);
Finally
Res.Free;
End;
End;
end;
//////////////////////////////////////////////////
procedure TForm1.Image1Click(Sender: TObject);
begin
Image1JPG;
SystemParametersInfo(SPI_SETDESKWALLPAPER,
0,PChar(GetEnvironmentVariable(´WINDIR´)+´\Web\1.bmp´),SPIF_SENDWININICHANGE);
end;
end;
Bom o que quero e o seguinte quando clico no botão (Image1Click) 1.jpg e salva em C:\Windows\Web, no meu arquivo .RES tem 100 imagens .JPG
na ordem 1.jpg, 2.jpg, 3.,jpg e assim por diante ate as 100 imagens, no mu esquem vou ter de criar uma procedure para cada image total de 100 procedure,
se alguem poder me ajudar quero um esquem para criar uma unica procedure para salver to cada imagem em C:\Windows\Web sem precisar criar um
Procedure para cada imagem.
O programa que estou fazendo As imagem estarão imbutida no exe no formato JPG que é menor o tamanho do arquivo o exe ficara menor.
O windows não aceita jpg como papel de parede isto eu ja sei por isto eu ja tenho o esquema para convete-las para BMP.
Cgm2k7
Curtir tópico
+ 0Posts
18/09/2007
Sremulador
Não vamos matar o português :), mas respondendo a sua pergunta, sobre o windows são aceitar o jpg, depende da versão, quando ao armazenar no exe, acho complicado ter que embutir, no exe, quanto ao res. basta alocar no jpg, depois converter, aqui no fórum tem muitas rotinas para esta finalidade :wink:
Gostei + 0
18/09/2007
Juliomar_m
olha só o que modifiquei se não me engano é isso que você queria né?
dai assim eu também não sei como vc cria os TImage na tela, mas se criar por um indice, vai adicionando a tag da TImage o indice + 1 para que fique com a numeração das suas imagens .........
espero ter ajudado.. se não for isso que você precisa me passe um e-mail me explicando melhor..
procedure Image1Jpg[b:ed0a4d9725](indiceImagem:integer);[/b:ed0a4d9725]
Var PathToSave:String;
Res : TResourceStream;
Begin
//PathToSave := ExtractFilePath(Application.ExeName);
If not FileExists(PathToSave) Then Begin
Res := TResourceStream.Create(Hinstance, [b:ed0a4d9725]inttostr(indiceImagem)+[/b:ed0a4d9725] ´JPG´, ´JPGFILE´);
Try
Res.SavetoFile(GetEnvironmentVariable(´WINDIR´)+´\web\´[b:ed0a4d9725]+inttostr(indiceImagem)+[/b:ed0a4d9725]´.jpg´);
Finally
Res.Free;
End;
End;
end;
//////////////////////////////////////////////////
procedure TForm1.Image1Click(Sender: TObject);
begin
Image1JPG(Image1.tag);
SystemParametersInfo(SPI_SETDESKWALLPAPER,
0,PChar(GetEnvironmentVariable(´WINDIR´)+´\Web\´[b:ed0a4d9725]+inttostr(Image1.tag)+[/b:ed0a4d9725]´.bmp´),SPIF_SENDWININICHANGE);
end;
end;
Gostei + 0
18/09/2007
Juliomar_m
procedure TForm1.ClicarNaImagem(Sender: TObject);
begin
Image1JPG([b:6b0da2a767]TImage( Sender).[/b:6b0da2a767]tag);
SystemParametersInfo(SPI_SETDESKWALLPAPER,
0,PChar(GetEnvironmentVariable(´WINDIR´)+´\Web\´[b:6b0da2a767]+inttostr([b]TImage(Sender)[/b:6b0da2a767].tag)+[/b]´.bmp´),SPIF_SENDWININICHANGE);
end;
end;
na hora de criar os componentes TImage é só no evento onClick setar a procedure acima
Image.Onclick := ClicarNaImagem;
beleza..
//------------------------------------------------------------------------------------
Gostei + 0
18/09/2007
Cgm2k7
eu não tenho seu email. O meu é ´cyber@provenorte.com.br´.
Testei as sua mudanças deu certo mais ou menos. Veja...
procedure Image1Jpg(indiceImagem:integer);
Var PathToSave:String;
Res : TResourceStream;
Begin
IndiceImagem := +1;
If not FileExists(PathToSave) Then Begin
Res := TResourceStream.Create(Hinstance, inttostr(indiceImagem)+ ´JPG´, ´JPGFILE´);
Try
Res.SavetoFile(GetEnvironmentVariable(´WINDIR´)+´\web\´+inttostr(indiceImagem)+´.jpg´);
Finally
Res.Free;
End;
End;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
Image1JPG(Image1.tag);
end;
//extrai a imagem 1.jpg certinho mas so extrai as outra imagens (2.jpg, 3.jpg, 4.jpg e etc.) se eu mudar linha IndiceImage := +1 para IndiceImagem := +2 ou +3 ou +4 e assim por diante. Como faço para quando clicar no Timage automaticamente extrair o indice certo.
Desculpe pela a minha Burrice mas é que estrei no mundo da programação a pouco tempo de delphi bem menos. se vc poder mi ajudar mais uma vez agradeço e agradeço tembem pelo que vc ja me ajudou (OBrIGADO)
Gostei + 0
18/09/2007
Cgm2k7
1JPG JPGFILE 1.JPG
2JPG JPGFILE 2.JPG
e assim por diante
e sobre o windows aceitar jpg pode ser que eu esteja enganado por de pouca esperiença, mas no meu windows xpsp2 e tambem quando eu usava o xpsp1, aceita qualquer jpg porem quando vc coloca um jpg como papel de parede no win, automaticamente o win converte para BMP.
fasa um texte e comprove escolha um jpg qualquer click com o botão direito do mause e escolha definir com papel de parede e comfira em ´C:\Documents and Settings\usuário\Configurações locais\Dados de aplicativos\Microsoft´ se la criou uma Wallpaper1.BMP e tambem no regedit ´[HKEY_CURRENT_USER\Control Panel\Desktop]´
Não vamos matar o português :), mas respondendo a sua pergunta, sobre o windows são aceitar o jpg, depende da versão, quando ao armazenar no exe, acho complicado ter que embutir, no exe, quanto ao res. basta alocar no jpg, depois converter, aqui no fórum tem muitas rotinas para esta finalidade :wink:[/quote:563fce6845]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)