DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sprblck
今日帖子: 10
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ken0137 (顺眼即佛) ★☆☆☆☆ -
普通会员
2021/9/16 14:19:15
标题:
求多图显示控件(若是使用imageenMView如何设置下方显示的自定义内容) 浏览:1511
加入我的收藏
楼主: 我有一个需求,就是显示多个图片(缩略图),然后图片的下方能自行设定不同内容,
imageenMView虽然能显示多个图片,但是图片下方的文字却没法设定,
请教,若是用imageenMView是否有好的方法去显示文字
或者是否有其他其他控件能实现相似的效果?
此帖子包含附件:
PNG 图像
大小:765.7K
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 wwzjx123 (ww zjx) ★☆☆☆☆ -
普通会员
2021/9/16 19:19:28
1楼: 1. 就用imageenMView
2. DefaultBottomText:=iedtNone;
   DefaultInfoText:=iedtNone;
   DefaultTopText:=iedtNone;
3. OnGetTextEx 或 OnGetText,如下
procedure TMainForm.ImageEnMView1GetTextEx(Sender: TObject; Index: Integer;
  Position: TIEMTextPos; var Text: WideString; Font: TFont;
  var BackgroundStyle: TBrushStyle; var BackgroundColor: TColor;
  var TruncSide: TIEMTruncSide);
begin
  Text:='test';
end;
----------------------------------------------
SPAM
作者:
男 ken0137 (顺眼即佛) ★☆☆☆☆ -
普通会员
2021/9/17 16:24:27
2楼: 谢谢楼上,我还是有些问题,
ImageEnMView1GetTextEx这个事件貌似不管是点击控件还是加载图片都会触发,
我根据每个图生成不同的文本显示出来,然后根据序号移除其中的一张图片,但是其他图片的文本内容不变,这样的效果
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 wwzjx123 (ww zjx) ★☆☆☆☆ -
普通会员
2021/9/17 19:53:02
3楼: 用 OnGetText (ImageEn.chm搜OnGetText,有详细说明及demo)

procedure TMainForm.FormActivate(Sender: TObject);
begin
  ImageEnMView1.LockUpdate();
  ImageEnMView1.SetModernStyling( False, -1, -1 );
  ImageEnMView1.Style := iemsFlat;
  ImageEnMView1.DefaultTopText := iedtNone;
  ImageEnMView1.DefaultInfoText := iedtNone;
  ImageEnMView1.DefaultBottomText := iedtCustom; // iedtFileName;
  ImageEnMView1.FillFromDirectory(ExtractFilePath( Application.ExeName ), -1, False, '', False, 'jpg,jpeg,tiff,tif' );
  ImageEnMView1.SelectedImage := 0;
  ImageEnMView1.UnlockUpdate();
end;

procedure TMainForm.ImageEnMView1GetText(Sender: TObject; Index: Integer;
  Position: TIEMTextPos; var Text: WideString);
begin
  if Position=iemtpBottom then text:=IntToStr(Index);
end;

procedure TMainForm.btDelteClick(Sender: TObject);
begin
  ImageEnMView1.DeleteImage(ImageEnMView1.SelectedImage);
end;
----------------------------------------------
SPAM
作者:
男 bjlg (蓝天) ★☆☆☆☆ -
盒子活跃会员
2021/9/17 20:16:57
4楼: JvThumbnails
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
男 ken0137 (顺眼即佛) ★☆☆☆☆ -
普通会员
2021/9/18 8:53:38
5楼: @wwzjx123,请教
比如我指定序号13,点删除,之前序号14的图片就变成了13,
我需要的是移除序号13,那么这个图片和序号13的都没有,这样一个效果

移除图片除了根据序号外,能否根据名称移除?
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 wwzjx123 (ww zjx) ★☆☆☆☆ -
普通会员
2021/9/18 13:32:49
6楼: // 用 ImageID 实现
procedure TMainForm.FormCreate(Sender: TObject);
var
  i: integer;
begin
  ImageEnMView1.DefaultTopText := iedtNone;
  ImageEnMView1.DefaultInfoText := iedtNone;
  ImageEnMView1.DefaultBottomText := iedtNone;

  // 先增加空Image并对应 ID
  for i:=0 to 4 do // test
  begin
    ImageEnMView1.InsertImage(i);
    ImageEnMView1.ImageID[i]:=i+10;
  end;
  ImageEnMView1.SelectedImage := 0;
end;

procedure TMainForm.ImageEnMView1GetText(Sender: TObject; Index: Integer;
  Position: TIEMTextPos; var Text: WideString);
begin
  if Position = iemtpBottom then text:='Index='+IntToStr(Index)+'  ID='+IntToStr(ImageEnMView1.ImageID[Index]);
end;

procedure TMainForm.ImageEnMView1ImageIDRequestEx(Sender: TObject; Index,
  ID: Integer; var Bitmap: TIEBitmap);
begin
  // 按 ID 载入图片
  Bitmap := TIEBitmap.create;
  case ID of
    10: Bitmap.Read('test1.jpg');
    11: Bitmap.Read('test2.jpg');
    12: Bitmap.Read('test3.jpg');
    13: Bitmap.Read('test1.jpg');
  end;
end;

procedure TMainForm.btDeleteClick(Sender: TObject);
begin
  // 删除后 Index变, ID不变
  ImageEnMView1.DeleteSelectedImages;
end;
----------------------------------------------
SPAM
作者:
男 ken0137 (顺眼即佛) ★☆☆☆☆ -
普通会员
2021/9/18 15:49:00
7楼: @wwzjx123
万分感谢,你真是对ImageEN有深入了解,
最后问一下,这个文字部分能不能是两行的?
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 wwzjx123 (ww zjx) ★☆☆☆☆ -
普通会员
2021/9/19 8:40:45
8楼: // 用 ImageID 实现, 用iemtpInfo,iemtpBottom 实现两行
procedure TMainForm.FormCreate(Sender: TObject);
var
  i: integer;
begin
  ImageEnMView1.DefaultTopText := iedtNone;
  ImageEnMView1.DefaultInfoText := iedtCustom; // iedtNone;
  ImageEnMView1.DefaultBottomText := iedtNone;
  ImageEnMView1.BottomGap:=6; // 自己调整

  // 先增加空Image并对应 ID
  for i:=0 to 4 do // test
  begin
    ImageEnMView1.InsertImage(i);
    ImageEnMView1.ImageID[i]:=i+10;
  end;
  ImageEnMView1.SelectedImage := 0;
end;

procedure TMainForm.ImageEnMView1GetText(Sender: TObject; Index: Integer;
  Position: TIEMTextPos; var Text: WideString);
begin
       if Position = iemtpBottom then text:='Index='+IntToStr(Index)
  else if Position = iemtpInfo   then text:='ID='+IntToStr(ImageEnMView1.ImageID[Index]);
end;

procedure TMainForm.ImageEnMView1ImageIDRequestEx(Sender: TObject; Index,
  ID: Integer; var Bitmap: TIEBitmap);
begin
  // 按 ID 载入图片
  Bitmap := TIEBitmap.create;
  case ID of
    10: Bitmap.Read('test1.jpg');
    11: Bitmap.Read('test2.jpg');
    12: Bitmap.Read('test3.jpg');
    13: Bitmap.Read('test1.jpg');
  end;
end;

procedure TMainForm.btDeleteClick(Sender: TObject);
begin
  // 删除后 Index变, ID不变
  ImageEnMView1.DeleteSelectedImages;
end;
----------------------------------------------
SPAM
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行85.9375毫秒 RSS