Oto moja przyszla przegladarka jpg, mam problem z wywolaniem procedury KLIK za pomoca OnImageClick w procedurze rysuj, co powieniem zrobic zeby to dzialalo? Ogolnie chodzi mi o to zeby po kliknieciu na miniaturce pobrac sciezke do pliku.
Mam jeszcze jeden problem, jak zrobic zeby "ubic" wczytane obrazki do TScrollBox w chwili wybrania innego folderu na TShellTreeView, na razie dziala to tak, ze "na kupe" tworzone miniaturki zakrywaja te z poprzedniego folderu.
Tu mozna pobrac: http://lan.wseia.edu.pl/~konrad18527/temp/min2.rar
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, XPMan, ComCtrls, ShellCtrls, jpeg, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
ShellTreeView1: TShellTreeView;
Label2: TLabel;
Button2: TButton;
Image1: TImage;
Edit1: TEdit;
ScrollBox1: TScrollBox;
procedure ShellTreeView1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
pliki:array [0..80] of string;
pliki1:array [0..10,0..100] of string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Klik(sciezka:string);
begin
ShowMessage(sciezka);
end;
procedure rysuj(lewo:integer; wysokosc:integer; sciezka:string);
var
Image: TImage;
begin
Image := TImage.Create(form1.ScrollBox1);
Image.Parent:=form1.ScrollBox1;
Image.Width := 100;
Image.Height := 100;
Image.Proportional := true;
Image.Center := true;
Image.showHint := true;
Image.Left := Lewo;
Image.Top := Wysokosc;
Image.Visible := true;
Image.Picture.LoadFromFile(sciezka);
Image.OnClick := Klik(sciezka);
end;
procedure TForm1.ShellTreeView1Click(Sender: TObject);
var
sr: TSearchRec;
listaplikow: Tstringlist;
a,i, b, k: integer;
begin
Label2.Caption := ShellTreeView1.Path;
i:=0;
listaplikow:=TStringlist.create;
if FindFirst(ShellTreeView1.Path+'\*.jpg',$0000003F,sr)=0 then
begin
repeat
if (sr.Name[1]<>'.') then pliki[i] := ShellTreeView1.Path+'\'+sr.name;
i := i + 1;
until findnext(sr)<>0;
end;
sysutils.findclose(sr);
listaplikow.free;
i:=0;
for b:=0 to 80 do
for a:=0 to 5 do
if pliki[i] <> ''then
begin
pliki1[a][b] := pliki[i];
i:=i+1;
rysuj((a*110)+20,b*110,pliki1[a][b]);
end;
end;
end.