社区
Delphi
帖子详情
问题比较菜,可也不好解决,,,,
mmkill
2004-10-23 08:54:59
在Delphi里有没有一个这样的控件,既能显示文字,又可以很好的显示图片,就象QQ的显示区一样,丰富多彩的显示多种内容。不要告诉我用listbox或者listview啊,这两个操作起来很不爽。用Richtext好象可以,但图片好象不能显示,请高手指教,谢谢。
哎,我要转行了,做软件真是没前途,整天面对垃圾,救命啊!!!
...全文
100
11
打赏
收藏
问题比较菜,可也不好解决,,,,
在Delphi里有没有一个这样的控件,既能显示文字,又可以很好的显示图片,就象QQ的显示区一样,丰富多彩的显示多种内容。不要告诉我用listbox或者listview啊,这两个操作起来很不爽。用Richtext好象可以,但图片好象不能显示,请高手指教,谢谢。 哎,我要转行了,做软件真是没前途,整天面对垃圾,救命啊!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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控件是否可行
带你快速了解
菜
品识别
菜
品识别,顾名思义就是基于图像识别技术...
菜
品识别技术目前广泛应用于团餐行业,主要用于
解决
团餐传统收银所面临的种种
问题
,比如结算效率低、易错账漏账、就餐体验差以及人工成本高等,这些
问题
已经给餐饮从业者和甲
被问到项目亮点、难点、遇到的
问题
、
解决
思路
面试中被问到你的项目亮点、难点、遇到的
问题
、
解决
思路是不是很蒙,现在我拆分一下
问题
什么是项目亮点: 你负责的业务是什么?(学会发现
问题
) 你真的想过业务是什么吗? 有为业务想过什么吗? 有了你,业务有什么...
解决
商品超卖的方案和思路
悲观锁和乐观锁的方式相
比较
,悲观锁是在对库存表进行操作时预先加锁,确保同一时刻只有一个线程能够访问和修改库存数据。但是因为加锁的原因,就会导致其他线程需要等待锁释放才能进行操作,影响并发性能,并且给...
windows server 2012 U盘安装教程,以及遇到的
问题
,以及
解决
办法,(待完善版)
1.首先是U盘启动器的制作:参考 ...这期间会出现个
问题
:卷有不一致性请运行chkdsk
解决
方法参考: https://blog.csdn.net/sinat_33107885/article/details/80800021 2.使用U盘启动的电...
python调用cplex
解决
规划
问题
(一)
python调用cplex
解决
规划
问题
(一)python下调用cplex求解器
解决
TSP
问题
的思路关于原理的一个坑python代码 最近开始学习线性规划方面的知识,为今后的工作做准备。拿了一个四城市双向联通的旅行商
问题
(TSP)练手。 ...
Delphi
5,928
社区成员
262,931
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章