|

楼主 |
发表于 2008-11-11 17:35:03
|
显示全部楼层
1我也不想动态创建呀,只是有时候需要到.
2.说对了
3.不是切换慢的问题,是没切换过来.
感觉是代码写得不够完整.
下面是我写的
Var
MyStaticText : Array of TStaticText;
MyBizImage : Array of TBizImage;
----------------------------------------------------------
procedure TMainForm.ShowHome();
//**********动态显示家庭成员***************
Var
i,j,k,h:Integer;
begin
i:=-1;
for j:=0 to ScrollBox1.ControlCount-1 do
begin
ScrollBox1.Controls[0].Free;
end;
SetLength(MyStaticText,30); //设置长度
SetLength(MyBizImage,30);
ICount:=DataSetBroker2.DataSet.RecordCount;
DataSetBroker2.DataSet.First;
while not DataSetBroker2.DataSet.Eof do
begin
i:=i+1;
MyBizImage := TBizImage.Create(self);
MyBizImage.Name:='MyBizImage'+SysUtils.inttostr(i);
MyBizImage.PictureURL:='Biz:\SQWSFWGLXT_X_\ANYT.Library\RYGC.jpg';
MyBizImage.AutoSize:=True;
MyBizImage.Parent:=ScrollBox1;
MyBizImage.OnDblClick := MyBizImageOnDblClick;
MyBizImage.OnMouseDown := MyBizImageOnMouseDown;
MyBizImage.OnMouseUp := MyBizImageOnMouseUp;
MyBizImage.OnMouseMove := MyBizImageOnMouseMove;
MyBizImage.Tag := i;
//MyBizImage.OnClick := MyBizImageOnClick;
MyStaticText := TStaticText.Create(self);
MyStaticText.Font.Color:=13998704;
MyStaticText.Caption:=DataSetBroker2.DataSet.FieldByName('XM').AsString;
MyStaticText.Parent:=ScrollBox1;
MyStaticText.Name:='MyStaticText'+SysUtils.inttostr(i);
MyStaticText.Font.Style:=[TFontStyle.fsBold];
MyStaticText.Tag:=i;
MyStaticText.OnMouseMove:=MyStaticTextOnMouseMove;
//余数为1在第一列;余数为2在第二列;余数为3在第三列;余数为0在第四列
//整数为0在第1行;整数为1在第2行;整数为2在第3行;整数为3在第4行......
h:=Trunc(i/4); //取整 行
K:=i mod 4 ; //取余 列
if i<4 then
begin
MyBizImage.Top:=30;
MyBizImage.Left:=30+i*130;
MyStaticText.Top:=90;
MyStaticText.Left:=45+i*130;
end else
begin
MyBizImage.Top:=30+80*h;
MyBizImage.Left:=30+k*130;
MyStaticText.Top:=90+80*h;
MyStaticText.Left:=45+k*130;
end;
DataSetBroker2.DataSet.Next;
end;
end;
------------------------------------------
procedure TMainForm.MyBizImageOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
iMouse :=TBizImage(Sender).Tag;
MyBizImage[iMouse].Cursor := -21;
MyBizImage.PictureURL:='Biz:\SQWSFWGLXT_X_\ANAX.Library\RYGC.jpg'; //变后的图B
end;
----------------------------------------------------
procedure TMainForm.BizFormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
MyBizImage[iMouse].PictureURL:='Biz:\SQWSFWGLXT_X_\ANYT.Library\RYGC.jpg'; //变回原图A
end;
觉得是鼠标在按忸图片1和按忸图片2之间移得快了一点点,然后来不急触发BizFormMouseMove事件把前一个变回原图
代码就这么多了,例子就不要导出来了吧.希望你们帮忙测试下可以解决不?
- -!已经决定不要这MyBizImageOnMouseMove的做法了.
不过还想知道结果,不想下次再遇到,谢谢 |
|