Hvordan laver jeg en knap der kan vise
billeder (jpg) det ene efter det andet i en image1.picture ?
De må gerne vises i samme størrelse ?
Jeg har set om jeg kunne finde noget men det er ikke
lykkes ude på www.
Jeg tænkte første gang at at en timer kunne vise dem
en ad gangen med en interval, men det viser
sig er være noget vanskeligere end beregnet !
tarsankode
Hvor får den billederne fra? Filer eller fra an database? Hvis filer er tilfældet hvad hedder billederne så?
Og hvordan skal de skifte? Når der er gået noget tid eller når man trykker på en knap eller lignende?
Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------
Billeder ligger på HD i samme mappe som programmet.
De hedder fx mig.jpg , tarsan.jpg
og så skulle de gerne vises med image1.loadfromfile('mig.jpg');
Eller sådan noget ligende.
Måske skulle man bare med musen kunne klikke på billedet (image1.picture) så skiftede det til næste billed (jpg)
Måske mangler der en index ?
Kan det gøres med en if sætning ?
tarsankode
Okay tror jeg har en ide så. Prøv dette:
Start med at loade alle filer i mappen ind i en StringList med denne kode:
function LoadFiles(Dir, Ext: String): TStringlist;
var SearchRec: TSearchRec;
begin
Result:= TStringlist.Create;
FindFirst(Dir+'*'+Ext, faAnyFile, SearchRec);
Result.Add(LeftStr(SearchRec.Name, pos(Ext,SearchRec.Name)-1)+SearchRec.Name);
while (FindNext(SearchRec)=0) do begin
Result.Add(LeftStr(SearchRec.Name, pos(Ext,SearchRec.Name)-1)+SearchRec.Name);
end;
FindClose(SearchRec);
end;
Funtionen bruges således
Stringlist.AddStrings(LoadFiles(ExtractFilePath(application.ExeName), 'jpg'));
Dernæst er det bare at tælle hvad du er nået til i onClick:
if i = Stringlist.Count then i = 0;
Image1.Picture.LoadFromFile(Stringlist.Strings[i]); // der skal altså stå [ i ] efter strings dog uden mellerummene :S
i:= i +1;
Ville mene dette skulle virke. Har dog ikke lige testet.
Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------
[Redigeret d. 02/06-05 13:50:47 af Rune Jensen (RoZ)]
Det ser godt nok svært ud for en newbien.
Men den stopper :
Result.Add(LeftStr(SearchRec.Name
[Error] mitlivpas.pas(46): Undeclared identifier: 'LeftStr'
Jeg har fundet sådan en :
var
imgnr :integer;
Randomize;
imgnr := random(4);
for i := 0 to 3 do begin
//Label1.Caption:=IntToStr(ImgNr);
case imgnr of
0:image1.picture.loadfromfile('mig2.jpg');
1:image1.picture.loadfromfile('mig12.jpg');
2:image1.picture.loadfromfile('mig.jpg');
3:image1.picture.loadfromfile('se.jpg');
end;
inc(imgnr);
if imgnr = 4 then imgnr := 0;
Image1.Refresh;
image1.Picture.LoadFromFile('migigen.jpg');
//Label1.Refresh;
sleep(1500);
end;
Den virker sådan set udmærket bort set fra at jeg ikke kan lave noget tekst eller andet til den i fx en label, en tekst til hvert billed.
Den kan heller ikke lave billederne i samme størrelse ?
Endelig virker den noget mærkelig da den nogle gange
mister et billed.
Jeg kan heller ikke selv styre et billed ad gangen ?
tarsankode