起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 246|回复: 10

【结贴】BizImage的MouseMove问题**

[复制链接]
发表于 2008-11-11 09:29:59 | 显示全部楼层 |阅读模式
动态创建N个BizImage
给事件MyBizImage.OnMouseMove := MyBizImageOnMouseMove;

procedure TMainForm.MyBizImageOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
iMouse := TBizImage(Sender).Tag;
  MyBizImage[iMouse].Cursor := -21;
  MyBizImage[iMouse].PictureURL:='Biz:\SQWSFWGLXT_X_\ANYT.Library\WJ.jpg';
end;

但鼠标在两个贴得比较近的BizImage之间快速地相互移动时候,图片就来不急变回原来,请问怎么解决这问题?
回复

使用道具 举报

发表于 2008-11-11 09:35:09 | 显示全部楼层
把图片存本地来,从本地加载。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-11 09:48:46 | 显示全部楼层
那为什么两个普通的BizImage1和BizImage2控件之间就不会存在这样的问题?
回复 支持 反对

使用道具 举报

发表于 2008-11-11 10:15:26 | 显示全部楼层
楼主说的啥意思,啥叫普通BizImage?你的意思设计期间设计好和动态创建的效果不一样是吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-11 10:19:14 | 显示全部楼层
对!拖放的控件可以很好的实现了
但动态创建时,鼠标在多个贴得比较近的BizImage之间快速地相互移动时候,A图片就来不急变回原来,会出现多个B图
回复 支持 反对

使用道具 举报

发表于 2008-11-11 15:08:25 | 显示全部楼层
1。楼主是否可以不动态创建,在设计期间设置好,如果不需要显示,可以设置控件的visible属性
2.是否切换慢,图片就显示正常了呢?
3.第一次切换慢,等每个都切换了,如何再快就ok了呢?
感觉是资源加载的问题,你试试,然后把结果反馈一下,

如果不是给一个简单的例子吧,我们恢复环境看看,好吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 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的做法了.
不过还想知道结果,不想下次再遇到,谢谢
回复 支持 反对

使用道具 举报

发表于 2008-11-12 10:49:55 | 显示全部楼层
好,稍后测试,有结果马上跟贴告知

不过,楼主,你现在是怎么解决的,请把你的解决方法也共享一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-12 11:46:11 | 显示全部楼层
偶没解决....只是不做MyBizImageOnMouseMove事件了
回复 支持 反对

使用道具 举报

发表于 2008-11-28 13:04:22 | 显示全部楼层
楼主,主要是因为切换的太快,加载资源速度没有跟上,造成你目前看到的现象。图片放到本地可以提高一下加载的速度,不过推荐用一对 BizImage 来显示原先一个 BizImage  的现象。例如,原先需要10个 BizImage  那么就创建20个 BizImage ,通过控制 BizImage  的 visiable 来控制显示那个图片
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-28 03:04 , Processed in 0.051230 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表