社区
C++ Builder
帖子详情
TMemo的问题,急
andypzh
2006-07-26 06:30:44
我想实现下面的效果,左边是用来显示行号,右边是TMemo,我在TMemo增加、复制、剪切或删除行时,左边能相应的增加或减少行号。请考虑wordwrap为true和false 2种不同的情况
左边可以用label或tmemo或其他控件
1 这是第一行
2 这是第二行
3 这是第三行
4 这是第四行
5 这是第五行
6 增加了第六行
...全文
406
10
打赏
收藏
TMemo的问题,急
我想实现下面的效果,左边是用来显示行号,右边是TMemo,我在TMemo增加、复制、剪切或删除行时,左边能相应的增加或减少行号。请考虑wordwrap为true和false 2种不同的情况 左边可以用label或tmemo或其他控件 1 这是第一行 2 这是第二行 3 这是第三行 4 这是第四行 5 这是第五行 6 增加了第六行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
andypzh
2006-07-31
打赏
举报
回复
要动态的显示行号的,光判断以下Memo里的Text值有多少个换行符不行吧。还有好的主意吗?
truelove7283159
2006-07-31
打赏
举报
回复
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NewMemo1WndProc(TMessage &Message)
{
OldMemo1WndProc(Message);
if(Message.Msg==WM_VSCROLL || Message.Msg == WM_MOUSEWHEEL)
{
int iVPos1=GetScrollPos(Memo1->Handle, SB_VERT);
int iVPos2=GetScrollPos(Memo2->Handle, SB_VERT);
if(iVPos1!=iVPos2)
{
Memo2->Perform(Message.Msg, Message.WParam, Message.LParam);
}
}
}
void __fastcall TForm1::NewMemo2WndProc(TMessage &Message)
{
OldMemo2WndProc(Message);
if(Message.Msg==WM_VSCROLL || Message.Msg == WM_MOUSEWHEEL)
{
int iVPos1=GetScrollPos(Memo1->Handle, SB_VERT);
int iVPos2=GetScrollPos(Memo2->Handle, SB_VERT);
if(iVPos1!=iVPos2)
{
Memo1->Perform(Message.Msg, Message.WParam, Message.LParam);
}
}
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AnsiString szText="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
for(int i=0; i<50; i++)
{
Memo1->Lines->Add(IntToStr(i)+" - "+szText);
Memo2->Lines->Add(IntToStr(i)+" - "+szText);
Application->ProcessMessages();
}
OldMemo1WndProc=Memo1->WindowProc;
Memo1->WindowProc=NewMemo1WndProc;
OldMemo2WndProc=Memo2->WindowProc;
Memo2->WindowProc=NewMemo2WndProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo2->Text = Memo1->Text;
}
//---------------------------------------------------------------------------
YJS050320001
2006-07-28
打赏
举报
回复
真的 用TMemo还是不太好实现
你可以去判断以下Memo里的Text值有多少个换行符
从而实现你说的那种功能
jaffy
2006-07-27
打赏
举报
回复
当右边滚动的时候,直接发消息给左边的控件,让左边的控件直接处理就可以了
andypzh
2006-07-27
打赏
举报
回复
右边只能用TMEMO,左边无所谓,现在行号能出来了,问题右边的TMEMO有垂直滚动条,(左边没有),当右边滚动滚动条时,左边要动态的显示行号,这个问题怎么解决,麻烦各位大大了,3Q
lanlanq
2006-07-27
打赏
举报
回复
老大们都在,学习学习
cczlp
2006-07-27
打赏
举报
回复
用TRichEdit。行号自己画上去。
BlueDeepOcean
2006-07-27
打赏
举报
回复
类似于UltraEdit-32环境的风格,这种情况我以前做过,好麻烦的,而且利用Memo好像不比RichEdit简单。
andypzh
2006-07-27
打赏
举报
回复
消息接收不到阿,能给个例子吗?3Q
xiaoshi0
2006-07-26
打赏
举报
回复
可以放一个Readonly的TMemo在左边,然后根据右边的KeyPress函数中查看右边的行数,动态的添加上就可以了
BCB中的
TMemo
(通过ScrollBars属性可以激活
TMemo
内置的滚动条)
本文详细介绍了如何在Delphi中使用
TMemo
组件实现多行文本显示,并通过示例代码展示了如何将其应用于实际场景。文章还探讨了
TMemo
组件的自适应滚动条特性及其在不同情况下的应用。最后,提供了解决高文本显示导致的遮挡
问题
的方法。
c++ Builder
TMemo
控件自动滚动
本文介绍了在C++ Builder的FMX平台上,如何利用
TMemo
控件进行日志显示。
TMemo
相对于TListBox更适合大量文本展示。然而,
TMemo
的Add函数不会触发OnChange事件,导致无法自动滚动到最后一行。为解决此
问题
,文章建议使用GoToTextEnd()函数,并指出在使用时需关闭WordWrap属性以确保正确滚动。
Delphi
TMemo
可以显示、编辑多行文本
本文介绍了Delphi中的
TMemo
组件,详细解释了其典型用法、重要属性及其应用场景。包括如何使用
TMemo
组件进行文本文件的读取与保存,以及如何通过配置属性实现滚动条、自动换行等功能。
TMemo
Ctrl + A
本文详细介绍了在Delphi中如何为
TMemo
或TDBMemo组件添加Ctrl+A全选功能。通过覆盖OnKeyDown事件,可以实现当按下Ctrl+A组合键时,自动选择
TMemo
中的所有文本。此外,文章还提供了避免触发系统默认BEEP声音的方法。
FMX.Memo.
TMemo
Properties
本文详细介绍了 FMX 框架中
TMemo
控件的各种属性,包括文本操作、样式设置、尺寸调整等,为开发者提供了全面的参考资料。
C++ Builder
13,872
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章