社区
Delphi
帖子详情
问题比较菜,可也不好解决,,,,
mmkill
2004-10-23 08:54:59
在Delphi里有没有一个这样的控件,既能显示文字,又可以很好的显示图片,就象QQ的显示区一样,丰富多彩的显示多种内容。不要告诉我用listbox或者listview啊,这两个操作起来很不爽。用Richtext好象可以,但图片好象不能显示,请高手指教,谢谢。
哎,我要转行了,做软件真是没前途,整天面对垃圾,救命啊!!!
...全文
96
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控件是否可行
【
菜
菜
的CV进阶之路-神经网络的深入理解-神经网络存在的
问题
及
解决
】梯度消失&梯度爆炸&过拟合&欠拟合&深度神经网络退化
问题
神经网络现在有很多类型了,每一种类型都是在之前的基础上发现
问题
并
解决
问题
的过程,目前一些主流的
问题
虽然都已经得到了很好的
解决
,但理解为什么要这样修改对模型的选择无疑大有裨益。 一、深度学习中存在的
问题
...
带你快速了解
菜
品识别
菜
品识别,顾名思义就是基于图像识别技术...
菜
品识别技术目前广泛应用于团餐行业,主要用于
解决
团餐传统收银所面临的种种
问题
,比如结算效率低、易错账漏账、就餐体验差以及人工成本高等,这些
问题
已经给餐饮从业者和甲
被问到项目亮点、难点、遇到的
问题
、
解决
思路
面试中被问到你的项目亮点、难点、遇到的
问题
、
解决
思路是不是很蒙,现在我拆分一下
问题
什么是项目亮点: 你负责的业务是什么?(学会发现
问题
) 你真的想过业务是什么吗? 有为业务想过什么吗? 有了你,业务有什么...
解决
商品超卖的方案和思路
悲观锁和乐观锁的方式相
比较
,悲观锁是在对库存表进行操作时预先加锁,确保同一时刻只有一个线程能够访问和修改库存数据。但是因为加锁的原因,就会导致其他线程需要等待锁释放才能进行操作,影响并发性能,并且给...
Win10 pads卡死
问题
解决
,输入法的兼容性
问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Win10 pads卡死
问题
解决
,输入法的兼容性
问题
前言一、开始
菜
单栏打开设置二、点击“时间和语言”1.选择语言,选择首选语言的“选项”2.点击首选...
Delphi
5,391
社区成员
262,738
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章