社区
C++ Builder
帖子详情
TMemo的问题,急
andypzh
2006-07-26 06:30:44
我想实现下面的效果,左边是用来显示行号,右边是TMemo,我在TMemo增加、复制、剪切或删除行时,左边能相应的增加或减少行号。请考虑wordwrap为true和false 2种不同的情况
左边可以用label或tmemo或其他控件
1 这是第一行
2 这是第二行
3 这是第三行
4 这是第四行
5 这是第五行
6 增加了第六行
...全文
366
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函数中查看右边的行数,动态的添加上就可以了
请教各位高手,
急
!
我想请教各位高手:我的系统是XP2000,我遇到的
问题
是:可能是受到病毒的缘故,电脑启动不了,提示是/WINDOWS/SYSTEM32/CONFIG/SYSTEM 文件已经损坏或丢失,我就重装了系统,只格式化C盘,装好后用了两次没出
问题
,第三次开机...
急
,数组1排序后->数组2,求算法!3Q
急
,数组1排序后->数组2,求算法!3Q Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiBase/html/delphi_20061215205531143.html 数组1排序,同时将数组1排序前的序号值按排序后的顺序存入数组2,求一...
Delphi 如何在程序中执行动态生成的Delphi代码
如何在程序中执行动态生成的Delphi代码经常发现有人提这类
问题
,或者提问内容最后归结成这种
问题
前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧。这里提供三种方法...
如何在程序中执行动态生成的Delphi代码
经常发现有人提这类
问题
,或者提问内容最后归结成这种
问题
前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧。 这里提供三种方法,都是借助第三方的组件来...
用Delphi7的Indy控件IdMappedPortTcp做HTTP代理程序
OK,完成了,不会吧就这么简单,对就这么简单,嘿嘿,别
急
,还没搞定呢,我们还需要看看关键的三个函数:ReceiveData(Athread),ProcessData(Athread),SendData(Athread). 1.获取来自A机的请求数据.将数据直接保存...
C++ Builder
13,822
社区成员
102,680
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章