Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-11-2004
dagsoft dagsoft is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
dagsoft Va por buen camino
Question Como Cambiar El Papel Tapiz De Windows

Holas, Espero que me puedan ayudar programo en delphi 6 me aria falta saves como cambiar el fondo de pantalla(wallpaper o paperl tapiz) de windows, yo lo hago con SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar('direccion'),SPIF_UPDATEINIFILE); //en direccion va la direccion de donde se encuantra la imagen por ejemplo: C:\dagsoft.bmp, pero mi problema es el siguiente: " Este codigo es solamente para establecer como wallpaper archivos .Bmp y me hace falta poner un jpg

Si alguien sabe como poner con delphi como fondo de pantalla un archivo *.jpg o *.gif que me diga please


Saludos DG
Responder Con Cita
  #2  
Antiguo 06-11-2004
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Realmente tiene que ser mas sencillo que esto, pero he tratado de ser algo recursivo con el asunto... , convirtiendo de Jpg a Bmp y luego cambiando el papel tapiz.

Sacando los dos trucos del trucomania

Primero hay que añadir Jpeg a tu unidad.

Código Delphi [-]
procedure convertir;
var
  MyJPEG : TJPEGImage;
  MyBMP : TBitmap;
begin
   MyJPEG := TJPEGImage.Create;
   with MyJPEG do 
   begin
      LoadFromFile('C:\logo.JPG');//logo es la imagen JPG
      MyBMP := TBitmap.Create;
      with MyBMP do 
      begin
         Width := MyJPEG.Width;
         Height := MyJPEG.Height;
         Canvas.Draw(0,0,MyJPEG);
         SaveToFile('C:\logo.bmp');//La imagen a guardar.
         Free;
      end;
    Free;
   end;
end;

Y...

Código Delphi [-]
procedure cambiartapiz;
begin 
   convertir;
   SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar('C:\logo.bmp'),SPIF_UPDATEINIFILE);
end;


es un ejemplo...Espero te sirva de algo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 06-11-2004 a las 17:36:40.
Responder Con Cita
  #3  
Antiguo 06-11-2004
dagsoft dagsoft is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
dagsoft Va por buen camino
Unhappy

Muchas Gracias, Esto me va a servir temporalmente porque cuando vos pasas un *.png, *.gif o *.jpg se pierde toda calidad, aparte si pasas de un gif a un *.bmp perdes los movimientos.

Entendes?=
Espero que me entindas
Saludos Daniel
Muchas Gracias
Responder Con Cita
  #4  
Antiguo 06-11-2004
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Entendes?=
Espero que me entindas
Si claro que entiendo lo que te sucede sobre todo con lo de los *.gif, lo que no entiendo es, ¿no se supone que el formato de BMP es de mas calidad que el de jpg, debido a que se maneja pixel por pixel?...// Es que regularmente cuando convierto una imagen Gif o Jpg o Png a BMP no pasa nada malo(En cuanto a lo de calidad de imagen se trata), pero si hago lo contrario si se daña la calidad un poco.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 08-11-2004
dagsoft dagsoft is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
dagsoft Va por buen camino
Problemas y gracias

sip tenes razón!!!!

gracias pero tengo problema con el codigo que me mandaste me marca error en

MyJPEG : TJPEGImage;
MyBMP : TBitmap;
me dice
[Error] Unit1.pas(178): Undeclared identifier: 'TJPEGImage'
[Error] Unit1.pas(181): Missing operator or semicolon
y en esta parte no puedo poner asi
LoadFromFile(edit1.Text + ListBox1.Items.Strings[listbox1.ItemIndex]);//logo es la imagen JPG

ya que:
  • en el edit1: se encuentra la direccion
  • y en la lista(en el item de la lista encuentro el nombre)
Gracias de nuevo

Saludos DG
Espero que me puedan ayudar
Responder Con Cita
  #6  
Antiguo 08-11-2004
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por dagsoft
[Error] Unit1.pas(178): Undeclared identifier: 'TJPEGImage'
Bueno, el error es porque no haz agregado la unidad Jpeg a la unidad donde estas poniendo dicho codigo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 09-11-2004
dagsoft dagsoft is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
dagsoft Va por buen camino
Exclamation si!

sip lo declare

saludos dg
Responder Con Cita
  #8  
Antiguo 09-11-2004
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Ahhh, ya se que sucede... eso espero.

Lo que sucede es que yo utilice como ejemplo un procedimiento llamado Convertir porque no sabia donde lo pondrias, ahora me imagino que el lo habras puesto en un formulario y en ese caso el cuerpo del procedimiento seria asi:

Código Delphi [-]
procedure TForm1.Convertir;//Form1 es el nombre del formulario
          begin
             //El resto que ya te he dicho con anterioridad...
          end;

Seguramente esto si es
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #9  
Antiguo 09-11-2004
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Ahhh, se me olvidaba, supongo que lo mismo sucedera con el procedimiento cambiartapiz;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #10  
Antiguo 09-11-2004
dagsoft dagsoft is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
dagsoft Va por buen camino
Question Sigo con el papel tapiz sory

Holas de new gracias por segir respondiendo el problema es que recien me inicio en delphi 6 no se casi nada mira este es el codigo de todo el programa y ahora me marca este error
[Error] Unit1.pas(175): Undeclared identifier: 'Convertir'
[Error] Unit1.pas(177): Undeclared identifier: 'TJPEGImage'

espero que me puedas ayudar si encontras algun error al codigo o algo que se puede hacer de otra forma que sea mejor porfavor ayudame y decime

Saludos Daniel. Desde ya mucha gracias
si queres agregame a tu msn mi dire es: daniel_gerbaudo@hotmail.com



---------------------Codigo del programa completo-------------------------

unit Unit1;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
IniFiles, ThemeMgr, ComCtrls, ExtCtrls, DateUtils, JvSearchFiles,
JvComponent, JvBaseDlg, JvBrowseFolder;

type
TForm1 = class(TForm)
JvBrowseForFolderDialog1: TJvBrowseForFolderDialog;
JvSearchFiles1: TJvSearchFiles;
ThemeManager1: TThemeManager;
GroupBox1: TGroupBox;
Edit1: TEdit;
Button1: TButton;
GroupBox2: TGroupBox;
ListBox1: TListBox;
GroupBox3: TGroupBox;
Edit2: TEdit;
UpDown1: TUpDown;
ComboBox1: TComboBox;
CheckBox1: TCheckBox;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CheckBox1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure JvSearchFiles1FindFile(Sender: TObject; const AName: String);
private
{ Private declarations }
procedure CambiarFondo;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
inifile: TIniFile;
stemp: string;
begin
inifile := TIniFile.Create( ChangeFileExt(Application.ExeName,'.ini') );
try
stemp := inifile.ReadString('preferences','dir','');

if (stemp <> '') then
begin
Edit1.Text := stemp;
JvBrowseForFolderDialog1.Directory := stemp;
end;

ListBox1.ItemIndex := inifile.ReadInteger('preferences','idx',-1);

finally
inifile.Free;
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
inifile: TIniFile;
begin
inifile := TIniFile.Create( ChangeFileExt(Application.ExeName,'.ini') );
try
inifile.WriteString('preferences','dir',Edit1.Text);



if (ListBox1.ItemIndex <> -1) then
begin
inifile.WriteInteger('preferences','idx',ListBox1.ItemIndex);
end;
finally
inifile.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if (JvBrowseForFolderDialog1.Execute) then
begin
Edit1.Text := JvBrowseForFolderDialog1.Directory;
end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
if (DirectoryExists(Edit1.Text)) then
begin
ListBox1.Items.BeginUpdate;

ListBox1.Items.Clear;

JvSearchFiles1.RootDirectory := Edit1.Text;

JvSearchFiles1.Search;

ListBox1.Items.EndUpdate;
end
else
ListBox1.Items.Clear;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Edit2.Enabled := CheckBox1.Checked;
UpDown1.Enabled := CheckBox1.Checked;
ComboBox1.Enabled := CheckBox1.Checked;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
dt1, dt2: TDateTime;
begin

dt1 := StrToDateTime('25/10/2004 03:30:00 p.m.'); //buscar última fecha de cambio
dt2 := Now;

case ComboBox1.ItemIndex of
0: //si está puesto por horas...
begin
if (DateUtils.HoursBetween(dt2,dt1) >= StrToInt(Edit2.Text)) then //comparar horas
begin
CambiarFondo;
end;
end;
1: //si está puesto por días...
begin
if (DateUtils.DaysBetween(dt1,dt2) >= StrToInt(Edit2.Text)) then
begin
CambiarFondo;
end;
end;
2: //si está puesto por semanas...
begin
if (DateUtils.WeeksBetween(dt1,dt2) >= StrToInt(Edit2.Text)) then
begin
CambiarFondo;
end;
end;
3: //si está puesto por meses...
begin
if (DateUtils.MonthsBetween(dt1,dt2) >= StrToInt(Edit2.Text)) then
begin
CambiarFondo;
end;
end;
end;

end;

procedure TForm1.CambiarFondo;
begin

SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar('C:\logo.bmp'),SPIF_UPDATEINIFILE);

end;

procedure TForm1.JvSearchFiles1FindFile(Sender: TObject;
const AName: String);
begin
ListBox1.Items.Add( ExtractFileName(AName) );
end;

procedure TForm1.Convertir;//Form1 es el nombre del formulario
var
MyJPEG : TJPEGImage;
MyBMP : TBitmap;
begin
MyJPEG := TJPEGImage.Create;
with MyJPEG do
begin
LoadFromFile( edit1.text + ListBox1.items.strings[ListBox1.Itemindex]);//logo es la imagen JPG
MyBMP := TBitmap.Create;
with MyBMP do
begin
Width := MyJPEG.Width;
Height := MyJPEG.Height;
Canvas.Draw(0,0,MyJPEG);
SaveToFile('C:\logo.bmp');//La imagen a guardar.
Free;
end;
Free;
end;
end;

end.
Responder Con Cita
  #11  
Antiguo 09-11-2004
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Desafortunamdamente no tengo mucho tiempo ahora para analizar el codigo y menos si no se ve muy claro... te recomiendo usar las etiquetas nuevas [delphi] para que se vea todo mejor...


Por el momento solo decirte que el error esta en que no haz puesto el encabezado del procedure, debes hacerlo en el private o el public, o alguno de esos, segun te convenga.

Bye.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #12  
Antiguo 09-11-2004
dagsoft dagsoft is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
dagsoft Va por buen camino
Question Ok Te Renvio El Codigo

Che te reenvio el codigo con la etiqueta DELPHI, por favor visame el codigo y mandame los errores que puedas corregir

Código Delphi [-]
unit Unit1;
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
IniFiles, ThemeMgr, ComCtrls, ExtCtrls, DateUtils, JvSearchFiles,
JvComponent, JvBaseDlg, JvBrowseFolder;
 
type
TForm1 = class(TForm)
JvBrowseForFolderDialog1: TJvBrowseForFolderDialog;
JvSearchFiles1: TJvSearchFiles;
ThemeManager1: TThemeManager;
GroupBox1: TGroupBox;
Edit1: TEdit;
Button1: TButton;
GroupBox2: TGroupBox;
ListBox1: TListBox;
GroupBox3: TGroupBox;
Edit2: TEdit;
UpDown1: TUpDown;
ComboBox1: TComboBox;
CheckBox1: TCheckBox;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CheckBox1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure JvSearchFiles1FindFile(Sender: TObject; const AName: String);
private
{ Private declarations }
procedure CambiarFondo;
public
{ Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var
inifile: TIniFile;
stemp: string;
begin
inifile := TIniFile.Create( ChangeFileExt(Application.ExeName,'.ini') );
try
stemp := inifile.ReadString('preferences','dir','');
 
if (stemp <> '') then
begin
Edit1.Text := stemp;
JvBrowseForFolderDialog1.Directory := stemp;
end;
 
ListBox1.ItemIndex := inifile.ReadInteger('preferences','idx',-1);
 
finally
inifile.Free;
end;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
inifile: TIniFile;
begin
inifile := TIniFile.Create( ChangeFileExt(Application.ExeName,'.ini') );
try
inifile.WriteString('preferences','dir',Edit1.Text);
 
 
 
if (ListBox1.ItemIndex <> -1) then
begin
inifile.WriteInteger('preferences','idx',ListBox1.ItemIndex);
end;
finally
inifile.Free;
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if (JvBrowseForFolderDialog1.Execute) then
begin
Edit1.Text := JvBrowseForFolderDialog1.Directory;
end;
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (DirectoryExists(Edit1.Text)) then
begin
ListBox1.Items.BeginUpdate;
 
ListBox1.Items.Clear;
 
JvSearchFiles1.RootDirectory := Edit1.Text;
 
JvSearchFiles1.Search;
 
ListBox1.Items.EndUpdate;
end
else
ListBox1.Items.Clear;
end;
 
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Edit2.Enabled := CheckBox1.Checked;
UpDown1.Enabled := CheckBox1.Checked;
ComboBox1.Enabled := CheckBox1.Checked;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
dt1, dt2: TDateTime;
begin
 
dt1 := StrToDateTime('25/10/2004 03:30:00 p.m.'); //buscar última fecha de cambio
dt2 := Now;
 
case ComboBox1.ItemIndex of
0: //si está puesto por horas...
begin
if (DateUtils.HoursBetween(dt2,dt1) >= StrToInt(Edit2.Text)) then //comparar horas
begin
CambiarFondo;
end;
end;
1: //si está puesto por días...
begin
if (DateUtils.DaysBetween(dt1,dt2) >= StrToInt(Edit2.Text)) then
begin
CambiarFondo;
end;
end;
2: //si está puesto por semanas...
begin
if (DateUtils.WeeksBetween(dt1,dt2) >= StrToInt(Edit2.Text)) then
begin
CambiarFondo;
end;
end;
3: //si está puesto por meses...
begin
if (DateUtils.MonthsBetween(dt1,dt2) >= StrToInt(Edit2.Text)) then
begin
CambiarFondo;
end;
end;
end;
 
end;
 
procedure TForm1.CambiarFondo;
begin
 
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar('C:\logo.bmp'),SPIF_UPDATEINIFILE);
 
end;
 
procedure TForm1.JvSearchFiles1FindFile(Sender: TObject;
const AName: String);
begin
ListBox1.Items.Add( ExtractFileName(AName) );
end;
 
procedure TForm1.Convertir;//Form1 es el nombre del formulario
var
MyJPEG : TJPEGImage;
MyBMP : TBitmap;
begin
MyJPEG := TJPEGImage.Create;
with MyJPEG do
begin
LoadFromFile( edit1.text + ListBox1.items.strings[ListBox1.Itemindex]);//logo es la imagen JPG
MyBMP := TBitmap.Create;
with MyBMP do
begin
Width := MyJPEG.Width;
Height := MyJPEG.Height;
Canvas.Draw(0,0,MyJPEG);
SaveToFile('C:\logo.bmp');//La imagen a guardar.
Free;
end;
Free;
end;
end;
 
end

Saludos Daniel
nos vemos muchas gracias desde ya

Última edición por jhonny fecha: 10-11-2004 a las 19:41:28.
Responder Con Cita
  #13  
Antiguo 10-11-2004
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, me he tomado el atrevimiento de editar el POST porque la etiqueta delphi estaba mal puesta y el post seguia viendose mal. (aunque aun sigue viendose algo mal).

Una recomendacion compañero: No escribas en mayusculas, la verdad esque hace que el texto sea dificil de leer, y tampoco utilices eso de "gRaCiaS" y esas cosas...(eso fue otra cosa que edite en tu POST).

En resumen por favor leete la Guia de estilo http://www.clubdelphi.com/foros/guiaestilo.php

Otra recomendación, aca en el foro hacemos todo lo posible por ayudar a las personas y de hecho ya te he dado la solución.

Lee bien, y haz el esfuercito

Espero me entiendas y no me mal interpretes.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #14  
Antiguo 11-11-2004
dagsoft dagsoft is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
dagsoft Va por buen camino
Thumbs up Gracias

MUchas gracias amigo

Saludos Daniel
te entinedo bien
ByE
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:17:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi