社区
Delphi
帖子详情
问题比较菜,可也不好解决,,,,
mmkill
2004-10-23 08:54:59
在Delphi里有没有一个这样的控件,既能显示文字,又可以很好的显示图片,就象QQ的显示区一样,丰富多彩的显示多种内容。不要告诉我用listbox或者listview啊,这两个操作起来很不爽。用Richtext好象可以,但图片好象不能显示,请高手指教,谢谢。
哎,我要转行了,做软件真是没前途,整天面对垃圾,救命啊!!!
...全文
131
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控件是否可行
算法系列之十四:狼、羊、
菜
和农夫过河
问题
题目描述:农夫需要把狼、羊、
菜
和自己运到河对岸去,只有农夫能够划船,而且船
比较
小,除农夫之外每次只能运一种东西,还有一个棘手
问题
,就是如果没有农夫看着,羊会偷吃
菜
,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。 这个题目考察人的快速逻辑运算和短期记忆力。分析一下,在狼-》羊-》
菜
这个食物链条中,“羊”处在关键位置,
解决
问题
的指导思想就是将“羊”与“狼”和“
菜
”
算法谜题1,狼羊
菜
过河
问题
描述 农夫需要把狼、羊、
菜
和自己运到河对岸去,只有农夫能够划船,而且船
比较
小,除农夫之外每次只能运一种东西,还有一个棘手
问题
,就是如果没有农夫看着,羊会偷吃
菜
,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。 分析
问题
很简单,但如何用计算机求解呢。 农夫渡河从本质上是一种状态的改变。 有农夫、狼、羊、
菜
四个个体,任何时刻每个个体的状态只有一种,每个个体有两种状态...
狼羊
菜
过河
问题
c语言算法,算法系列之十四:狼、羊、
菜
和农夫过河
问题
题目描述:农夫需要把狼、羊、
菜
和自己运到河对岸去,只有农夫能够划船,而且船
比较
小,除农夫之外每次只能运一种东西,还有一个棘手
问题
,就是如果没有农夫看着,羊会偷吃
菜
,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。这个题目考察人的快速逻辑运算和短期记忆力。分析一下,在狼-》羊-》
菜
这个食物链条中,“羊”处在关键位置,
解决
问题
的指导思想就是将“羊”与“狼”和“
菜
”始终处于隔离状态,...
预制
菜
的进击之路
近些年来,懒人经济大放异彩。人们为了吃饭更方便,外卖行业兴起;为了打扫更方便,扫地机器人、洗地机等家庭清洁行业进化;为了生活更方便,智能家居产品越来越完善...... 民以食为天,在吃饭领域,懒人经济又添一员“大将”——预制
菜
。据iiMedia Research(艾媒咨询)数据显示,2020年中国预制
菜
行业市场规模为2888亿元,2021年中国预制
菜
行业市场规模预计达3459亿元,同比增长18%。 据中商产业研究院报告数据显示,如果按照每年20%的复合增长速度估算,未来6-7年我国预制
菜
市场或将超...
因网络
不好
导致请求时间太长
问题
的
解决
问题
描述: 项目生产环境,网不太好,后台服务器返回的数据量又太大,请求开始会有一个遮罩,请求结束遮罩才会关闭,因为数据一直在接收中,导致这段时间内什么操作都做不了,只能杀死进程在重新进入。这里需要加一点东西,如果多长时间内数据还没有接收完,结束这个请求
解决
过程: 我知道有的人可能会想,直接在请求多少秒后把遮罩关掉就好了,我也这么想过,但是这样只是关掉了遮罩,而请求依然存在,治标不治本。刚好在在前段时间把vue基础看完,所以这里就想到了请求拦截,axios的。很多时候,...
Delphi
5,943
社区成员
262,942
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章