Criar Menos Procedure
Ola pessoal estou aqui de novo com mais uma duvida aqui estou criando um programa para trocar o papelde parede
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.
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
Curtidas 0
Respostas
Sremulador
16/09/2007
Ola pessoal estou aqui de novo com mais uma duvida aqui estou criando um programa para trocar o papelde parede
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.
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
Juliomar_m
16/09/2007
Opa
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;
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
Juliomar_m
16/09/2007
há também já estava quase esquecendo se você precisa que o evento seja dinamico também é só criar uma procedure mais ou menos assim
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..
//------------------------------------------------------------------------------------
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..
//------------------------------------------------------------------------------------
Opa
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:6b0da2a767](indiceImagem:integer);[/b:6b0da2a767]
Var PathToSave:String;
Res : TResourceStream;
Begin
//PathToSave := ExtractFilePath(Application.ExeName);
If not FileExists(PathToSave) Then Begin
Res := TResourceStream.Create(Hinstance, [b:6b0da2a767]inttostr(indiceImagem)+[/b:6b0da2a767] ´JPG´, ´JPGFILE´);
Try
Res.SavetoFile(GetEnvironmentVariable(´WINDIR´)+´\web\´[b:6b0da2a767]+inttostr(indiceImagem)+[/b:6b0da2a767]´.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:6b0da2a767]+inttostr(Image1.tag)+[/b:6b0da2a767]´.bmp´),SPIF_SENDWININICHANGE);
end;
end;
GOSTEI 0
Cgm2k7
16/09/2007
amigo juliomar_m
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)
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
Cgm2k7
16/09/2007
acho que vc não entendeu minhas imagens estão em um arquivo .res NESTA seguença veja
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]
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]´
[quote:563fce6845=´cgm2k7´]Ola pessoal estou aqui de novo com mais uma duvida aqui estou criando um programa para trocar o papelde parede
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.
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