Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизПроблема с процедурой Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c