![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Случайный выбор. [D5, Win95/98]
Asdweb © (2004-08-20 15:44:00)Как сделать так, чтобы Timage выбирал случайный рисунок из
папки по истечению таймера?
Спасибо
TUser (2004-08-21 20:26:00) [1]
> не помню как пользоваться генератором случайных чисел
И как пользоваться файнд фёрстами.
Я бы делал так
i:=0;
try
if FindFirst = 0 then
repeat
if (sr.Attr and ...) = sr.Attr then
inc (i);
until Findnext <> 0;
finally
FindClose;
end;
i:=round(Random(i));
try
if FindFirst = 0 then
repeat
if (sr.Attr and ...) = sr.Attr then begin
dec (i);
if i = 0 then
Image1.Bitmap.LoadFromFile('...'+sr.Name);
end;
until Findnext <> 0;
finally
FindClose;
end;
Можно грузить результат в стринг лист, потом брать случайную строчку - это уже на любитетя.
saimon (2004-08-21 18:48:00) [2]Можно, но только ооооооооочень осторожно!!!!!!!!! ;)
(Если я тя правильно понял, то ты хочешь что-б они менялись через опр. промежуток времени??? Да??? тогода см. ниже)
Почему? Нагрузка будет на систему сильноватая, если менять эти обои слишком часто (если комп не мощный или ОЗУ мало). И после смены обоев надо (если не ошибаюсь) обновить рабочий стол (как не помню).
Как это сделать??? Просто, слепи свой код с кодом Afteam'a (Afteam (20.08.04 15:53) [2]).
Удачи...
Asdweb (2004-08-20 21:07:00) [3]А можно ли также сменить фон рабочего стола?
мой код смены фона таков:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
St : string;
begin
St := 'C:\1.Bmp';
SystemParametersInfo(SPI_SETDESKWALLPAPER,UINT(St),nil,SPIF_SENDCHANGE);
end;
end.
Asdweb (2004-08-20 21:02:00) [4]Спасибо!
Afteam (2004-08-20 15:54:00) [5]Sorry.
FindClose(F) забыл :-)
Afteam (2004-08-20 15:53:00) [6]1) ставишь таймер
2) в обработчике таймера пишешь что то типа:
var
L: TStringList;
R: Integer;
F: TSearchRec;
begin
L := TStringList.Create;
R := FindFirst('*.bmp', faAnyFile, F);
while R <> 0 do begin
if not(F.Attr and faDirectory) then
L.Add(F.Name);
R := FindNext(F);
end;
// не помню как пользоваться генератором случайных чисел...
Randomize;
Image1.Picture.LoadFromFile(L[Rnd(L.Count-1)]);
L.Free;
end;
Anatoly Podgoretsky (2004-08-20 15:52:00) [7]Random