Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Проблема с процедурой   Найти похожие ветки 

 
Adios ©   (2006-03-08 20:27) [0]

у меня в программе есть процедура которая устанавливает обои на рабочий стол, 2 типа файлов: .bmp и .jpg, процедура копирует картинку в юзертемп, а если это .jpg то сначала конвертирует её в .bmp, а потом устанавливает в качестве обоев, проблема в следующем: если картинка .bmp, то проблем нет, а если .jpg, то нажатие на кнопку вообще убирает обои с рабочего стола, но если сначала выбрать в качестве обоев .bmp, то потом и .jpg работает нормально, вот процедура:

procedure Tmenu1.choiseClick(Sender: TObject);
begin
FileExt := ExtractFileExt(FileListBox1.Filename);
 if FileExt=".jpg" then
 begin
 JPEGtoBMP(filelistbox1.FileName);
 end;
 if FileExt=".bmp" then
 begin
 f:=FileListBox1.Filename;
 f1:=c_GetTempPath+"\"+"wallpapers"+".bmp";
 Copyfile(PChar(f),PChar(f1),false);
 end;
wallpapers("wallpapers");
panel1.SetFocus;
end;
========================================
procedure wallpapers(const FileName: TFileName);
begin
reg := TRegIniFile.Create("Control Panel\\Desktop" );
with reg do begin
sWallpaperBMPPath:=f1;
bTile:=false;
WriteString( "", "Wallpaper", sWallpaperBMPPath );
if( bTile )then begin
WriteString("", "TileWallpaper", "1" );
end
else begin
WriteString("", "TileWallpaper", "0" );
end;
end;
reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE );

end;
============================================
procedure JPEGtoBMP(const FileName: TFileName);
var
 jpeg: TJPEGImage;  
 bmp:  TBitmap;  
begin  
   jpeg := TJPEGImage.Create;
 try
   jpeg.CompressionQuality := 100;
   jpeg.LoadFromFile(filename);
   bmp := TBitmap.Create;
   try
     bmp.Assign(jpeg);
     bmp.SaveTofile(ChangeFileExt(c_GetTempPath+"\"+"wallpapers", ".bmp"));
   finally
     bmp.Free
 end;
 finally
   jpeg.Free
end;
end;


 
Adios ©   (2006-03-09 09:47) [1]

чё никто не знает чтоли?, люди, очень надо знать почему клинит!


 
ЮЮ ©   (2006-03-09 10:02) [2]


> а если это .jpg то сначала конвертирует её в .bmp, а потом
> устанавливает в качестве обоев,


А потом не будет, ибо JPEGtoBMP никак не мееняет FileExt, т.е  условие FileExt=".bmp" всегда ложно для .jpg


 
Adios ©   (2006-03-10 19:47) [3]

на всякий случай отвечу на свой вопрос сам:

> procedure Tmenu1.choiseClick(Sender: TObject);
> begin
> FileExt := ExtractFileExt(FileListBox1.Filename);
>  if FileExt=".jpg" then
>  begin                                <=  f1:=c_GetTempPath+"\"+"wallpapers"+".bmp";
>  JPEGtoBMP(filelistbox1.FileName);
>  end;
>  if FileExt=".bmp" then
>  begin
>  f:=FileListBox1.Filename;
>  f1:=c_GetTempPath+"\"+"wallpapers"+".bmp";
>  Copyfile(PChar(f),PChar(f1),false);
>  end;
> wallpapers("wallpapers");
> panel1.SetFocus;
> end;

<= там я забыл объявить переменнуб в которой содержится путь к обоям "f1", поэтому если сначала устанавливать jpg то процедуре негде взять путь к обоям, а если сначала ставить bmp, то переменная объявляется и потом jpg тоже работает нормально.



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
2-1142101123
jenya_rus
2006-03-11 21:18
2006.03.26
Извлечь имена файлов из папки??? :0


2-1141645383
Lexa79
2006-03-06 14:43
2006.03.26
Вопрос


15-1141491463
Yegorchic
2006-03-04 19:57
2006.03.26
PHP и .gif


2-1141732556
Grey.pmr
2006-03-07 14:55
2006.03.26
Как включить в текст программы на Делфи прогу на паскале?


5-1127479324
Priest
2005-09-23 16:42
2006.03.26
Сделать недоступным пункт меню редактора компонента