H
huangying100
Unregistered / Unconfirmed
GUEST, unregistred user!
思路:在数据库中存储了图片的路径和名称/以及事件名,在panel中动态创建图片(一般5-10),但图片一多就变得很慢.请高手看看怎么解决好?代码如下:
//hzf2005-6-15 以下动态生成按图片及其事件
//自定义快捷方式
procedure TfmMain.BindImage(flid:integer;
yhmc:string);
var
PAddr: pointer;
M: TMethod;
K,I:integer;
begin
I:=0;
for k:=0 to Panel1.ControlCount-1do
panel1.Controls[0].Free;
UserMenuInfo.Parameters[0].Value:=flid;
UserMenuInfo.Parameters[1].Value:='sa';
UserMenuInfpen;
while not UserMenuInfo.Eof do
begin
//资料设置
with TImage.Create(Panel1)do
begin
Parent := Panel1;
Left := 74+128*(I);
//以下事件绑定
PAddr := nil;
PAddr := TfmMain.MethodAddress(UserMenuInfo.FieldByName('tcm').AsString);
if PAddr <> nil then
begin
M.Code := PAddr;
M.Data := fmMain;
OnClick := TNotifyEvent(m);
end;
//以上事件绑定
Height := 64;
Width := 64;
Cursor:=crHandPoint;
transparent:=true;
Picture.LoadFromFile(gsProgramPath+UserMenuInfo.FieldByName('tpdz').AsString);
Top := 10;
// Name := Format('Image%d', [I + 1]);
// Caption := Format('Image%d', [I + 1]);
Show;
end;
I:=I+1;
UserMenuInfo.Next;
end;
UserMenuInfo.Close;
Panel1.Refresh
end;
//hzf2005-6-15 以下动态生成按图片及其事件
//自定义快捷方式
procedure TfmMain.BindImage(flid:integer;
yhmc:string);
var
PAddr: pointer;
M: TMethod;
K,I:integer;
begin
I:=0;
for k:=0 to Panel1.ControlCount-1do
panel1.Controls[0].Free;
UserMenuInfo.Parameters[0].Value:=flid;
UserMenuInfo.Parameters[1].Value:='sa';
UserMenuInfpen;
while not UserMenuInfo.Eof do
begin
//资料设置
with TImage.Create(Panel1)do
begin
Parent := Panel1;
Left := 74+128*(I);
//以下事件绑定
PAddr := nil;
PAddr := TfmMain.MethodAddress(UserMenuInfo.FieldByName('tcm').AsString);
if PAddr <> nil then
begin
M.Code := PAddr;
M.Data := fmMain;
OnClick := TNotifyEvent(m);
end;
//以上事件绑定
Height := 64;
Width := 64;
Cursor:=crHandPoint;
transparent:=true;
Picture.LoadFromFile(gsProgramPath+UserMenuInfo.FieldByName('tpdz').AsString);
Top := 10;
// Name := Format('Image%d', [I + 1]);
// Caption := Format('Image%d', [I + 1]);
Show;
end;
I:=I+1;
UserMenuInfo.Next;
end;
UserMenuInfo.Close;
Panel1.Refresh
end;