社区
Delphi
帖子详情
问题比较菜,可也不好解决,,,,
mmkill
2004-10-23 08:54:59
在Delphi里有没有一个这样的控件,既能显示文字,又可以很好的显示图片,就象QQ的显示区一样,丰富多彩的显示多种内容。不要告诉我用listbox或者listview啊,这两个操作起来很不爽。用Richtext好象可以,但图片好象不能显示,请高手指教,谢谢。
哎,我要转行了,做软件真是没前途,整天面对垃圾,救命啊!!!
...全文
109
11
打赏
收藏
问题比较菜,可也不好解决,,,,
在Delphi里有没有一个这样的控件,既能显示文字,又可以很好的显示图片,就象QQ的显示区一样,丰富多彩的显示多种内容。不要告诉我用listbox或者listview啊,这两个操作起来很不爽。用Richtext好象可以,但图片好象不能显示,请高手指教,谢谢。 哎,我要转行了,做软件真是没前途,整天面对垃圾,救命啊!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mmkill
2004-10-24
打赏
举报
回复
我觉得还不如pb,pb的richedittext还可以很好的显示图片,,,,
mmkill
2004-10-24
打赏
举报
回复
还说不是垃圾??
type
TMyRichEdit = TRxRichEdit;
这句是干吗的?还不是用的人家的控件?我说的是用Delphi本身的VCL做,有知道的吗????
eastbug
2004-10-24
打赏
举报
回复
richedit完全可以,QQ好像就是用的richedit。
xiyixiaowm50(独孤求败) 已经给你贴出了实现代码。
ghchen
2004-10-24
打赏
举报
回复
up
WGYKING
2004-10-24
打赏
举报
回复
又看到楼上的说这种话
不妥。。。
快乐老猫
2004-10-24
打赏
举报
回复
不是软件垃圾,也不是开发工具垃圾,也不是语言垃圾,而是你的人垃圾,不求甚解,不去看源码,BORLAND的优点就是提供源码。可以去学习。
todouwang
2004-10-23
打赏
举报
回复
richmemo
xiyixiaowm50
2004-10-23
打赏
举报
回复
richedit可以
var
frmMain: TfrmMain;
implementation
{$R *.DFM}
{$R Smiley.res}
uses
RichEdit;
type
TEditStreamCallBack = function(dwCookie: Longint; pbBuff: PByte;
cb: Longint; var pcb: Longint): DWORD;
stdcall;
TEditStream = record
dwCookie: Longint;
dwError: Longint;
pfnCallback: TEditStreamCallBack;
end;
type
TMyRichEdit = TRxRichEdit;
// EditStreamInCallback callback function
function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte;
cb: Longint; var pcb: Longint): DWORD; stdcall;
var
theStream: TStream;
dataAvail: LongInt;
begin
theStream := TStream(dwCookie);
with theStream do
begin
dataAvail := Size - Position;
Result := 0;
if dataAvail <= cb then
begin
pcb := read(pbBuff^, dataAvail);
if pcb <> dataAvail then
Result := UINT(E_FAIL);
end
else
begin
pcb := read(pbBuff^, cb);
if pcb <> cb then
Result := UINT(E_FAIL);
end;
end;
end;
// Insert Stream into RichEdit
procedure PutRTFSelection(RichEdit: TMyRichEdit; SourceStream: TStream);
var
EditStream: TEditStream;
begin
with EditStream do
begin
dwCookie := Longint(SourceStream);
dwError := 0;
pfnCallback := EditStreamInCallBack;
end;
RichEdit.Perform(EM_STREAMIN, SF_RTF or SFF_SELECTION, Longint(@EditStream));
end;
// Load a smiley image from resource
function GetSmileyCode(ASimily: string): string;
var
dHandle: THandle;
pData, pTemp: PChar;
Size: Longint;
begin
pData := nil;
dHandle := FindResource(hInstance, PChar(ASimily), RT_RCDATA);
if dHandle <> 0 then
begin
Size := SizeofResource(hInstance, dHandle);
dhandle := LoadResource(hInstance, dHandle);
if dHandle <> 0 then
try
pData := LockResource(dHandle);
if pData <> nil then
try
if pData[Size - 1] = #0 then
begin
Result := StrPas(pTemp);
end
else
begin
pTemp := StrAlloc(Size + 1);
try
StrMove(pTemp, pData, Size);
pTemp[Size] := #0;
Result := StrPas(pTemp);
finally
StrDispose(pTemp);
end;
end;
finally
UnlockResource(dHandle);
end;
finally
FreeResource(dHandle);
end;
end;
end;
procedure InsertSmiley(ASmiley: string);
var
ms: TMemoryStream;
s: string;
begin
ms := TMemoryStream.Create;
try
s := GetSmileyCode(ASmiley);
if s <> '' then
begin
ms.Seek(0, soFromEnd);
ms.Write(PChar(s)^, Length(s));
ms.Position := 0;
PutRTFSelection(frmMain.RXRichedit1, ms);
end;
finally
ms.Free;
end;
end;
procedure TfrmMain.SpeedButton1Click(Sender: TObject);
begin
InsertSmiley('Smiley1');
end;
procedure TfrmMain.SpeedButton2Click(Sender: TObject);
begin
InsertSmiley('Smiley2');
end;
// Replace a :-) or :-( with a corresponding smiley
procedure TfrmMain.RxRichEdit1KeyPress(Sender: TObject; var Key: Char);
var
sCode, SmileyName: string;
procedure RemoveText(RichEdit: TMyRichEdit);
begin
with RichEdit do
begin
SelStart := SelStart - 2;
SelLength := 2;
SelText := '';
end;
end;
begin
If (Key = ')') or (Key = '(') then
begin
sCode := Copy(RxRichEdit1.Text, RxRichEdit1.SelStart-1, 2) + Key;
SmileyName := '';
if sCode = ':-)' then SmileyName := 'Smiley1';
if sCode = ':-(' then SmileyName := 'Smiley2';
if SmileyName <> '' then
begin
Key := #0;
RemoveText(RxRichEdit1);
InsertSmiley('Smiley1');
end;
end;
mmkill
2004-10-23
打赏
举报
回复
怎么保存,有代码吗?
goodloop
2004-10-23
打赏
举报
回复
Richedit可以的..你搜一下google
yinzhiw
2004-10-23
打赏
举报
回复
DrawGrod控件是否可行
带你快速了解
菜
品识别
菜
品识别,顾名思义就是基于图像识别技术自动识别到
菜
品信息,通过深度卷积神经网络对
菜
品进行分类,从
菜
品库快速匹配到目标
菜
品信息。究其原理,就是通过机器来分析
菜
品的色彩、形状、大小等多种特征,让机器对这些
菜
品样本自主学习和训练,与库存样本进行比对,并且前期借助人工纠错能力,从而可以让
菜
品识别的准确率达到99%以上,1秒内完成识别计算并输出识别结果。
菜
品识别技术目前广泛应用于团餐行业,主要用于
解决
团餐传统收银所面临的种种
问题
,比如结算效率低、易错账漏账、就餐体验差以及人工成本高等,这些
问题
已经给餐饮从业者和甲
被问到项目亮点、难点、遇到的
问题
、
解决
思路
面试中被问到你的项目亮点、难点、遇到的
问题
、
解决
思路是不是很蒙,现在我拆分一下
问题
什么是项目亮点: 你负责的业务是什么?(学会发现
问题
) 你真的想过业务是什么吗? 有为业务想过什么吗? 有了你,业务有什么不同吗? 能不能5分钟说明白,你负责的业务是什么? 可有想过有没有说到位,甚至答非所问 这里谈谈我个人对业务的理解,或许没有普遍意义,所以仅供参考。
解决
商品超卖的方案和思路
悲观锁和乐观锁的方式相
比较
,悲观锁是在对库存表进行操作时预先加锁,确保同一时刻只有一个线程能够访问和修改库存数据。但是因为加锁的原因,就会导致其他线程需要等待锁释放才能进行操作,影响并发性能,并且给用户的体验感非常差。而使用Redis,基于Redis的原子操作能够更好地保证数据的安全性,并且性能更高,在大并发的场景下会有很好的性能表现。
windows server 2012 U盘安装教程,以及遇到的
问题
,以及
解决
办法,(待完善版)
1.首先是U盘启动器的制作:参考 https://jingyan.baidu.com/album/a65957f4c2c7f824e67f9b36.html?picindex=2的前半段 这期间会出现个
问题
:卷有不一致性请运行chkdsk
解决
方法参考: https://blog.csdn.net/sinat_33107885/article/details/80800021 2.使用U盘启动的电...
自己做饭吃,怎样从极耗时的买
菜
、择
菜
、洗
菜
、切
菜
、配
菜
中解脱出来?
章丽佳 ,爱猫,坚决不做猫奴。 Yining 等 1469 人赞同 补充: 这么多赞,让我有点幸福感爆棚。谢谢大家。 我看
问题
的补充说明,其实题主还是热爱生活热爱厨房愿意自己切配的,只是天天如此有点浪费时间,也烦,所以想求方法化零为整,解脱一部分。所以我的回答没有完全避免洗切,只是全部事先一次性处理好,(大部分吧)。所以零度保鲜、冷藏、保鲜膜什么肯定是要用的。。 应要求,补充
Delphi
5,930
社区成员
262,943
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章