社区
VCL组件使用和开发
帖子详情
TRichEdit如何高亮显示某行全行?
daydayup234
2006-05-17 04:03:01
比如第二行
...全文
410
17
打赏
收藏
TRichEdit如何高亮显示某行全行?
比如第二行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
daydayup234
2006-05-19
打赏
举报
回复
^o^……
那么,
BlueDeepOcean
2006-05-19
打赏
举报
回复
明白了,理解上的错误,但是这不怨我。是你说“高亮显示”误导我了。^o^……
BlueDeepOcean
2006-05-19
打赏
举报
回复
但是这是一个过渡步骤,为的是从这一行的第一个字开始,到本行尾。
BlueDeepOcean
2006-05-19
打赏
举报
回复
对!
daydayup234
2006-05-19
打赏
举报
回复
请教:
RichEdit1->Lines->Strings[i].Pos(RichEdit1->Lines->Strings[i].SubString(1,1));
好象永远=1
BlueDeepOcean
2006-05-19
打赏
举报
回复
而你说的是“高亮显示”,在RichEdit中的“高亮显示”就是HideSelection属性,而与该属性相关的就是FindText。既然如此,我就是通过确定你要高亮显示的行的内容实现这一结果的。不对吗?
BlueDeepOcean
2006-05-19
打赏
举报
回复
我这个可以解决的。
if (i == 2)//上面程序段的第4行,你可以通过ComboBox获得真个RichEdit的行数,之后-1就是索引号,将上面的改为if (i == ComboBox1->ItemIndex)即可确定选中行,进行全部选中了。
daydayup234
2006-05-19
打赏
举报
回复
如果有兴趣看看
daydayup234
2006-05-19
打赏
举报
回复
我不是要 查找
我是要定位某个“整”行
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString InputString = InputBox("Input Box", "Prompt", "Default string");
int theLine=InputString.ToIntDef(1);
//theLine是选定的行
RichEdit1->SelStart=?//问
RichEdit1->SelLength=?//问
RichEdit1->SetFocus();
}
不考虑容错
BlueDeepOcean
2006-05-19
打赏
举报
回复
之后
ShowMessage(AnsiString("Start:" + IntToStr(RichEdit1->SelStart) + "\n" +
"Length:" + IntToStr(RichEdit1->SelLength)));
可以显示出来。
BlueDeepOcean
2006-05-19
打赏
举报
回复
援引:
我不是要 查找
我是要定位某个“整”行
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString InputString = InputBox("Input Box", "Prompt", "Default string");
int theLine=InputString.ToIntDef(1);
//theLine是选定的行
RichEdit1->SelStart=?//问
RichEdit1->SelLength=?//问
RichEdit1->SetFocus();
}
不考虑容错
=============================================================================
说明:
如果君就想得到SelStart和SelLength的话,上面的代码改为:
int st,sl,t = 0;
for (int i = 0;i < RichEdit1->Lines->Count;i ++)
{
st = t;
sl = RichEdit1->Lines->Strings[i].Length() + 1;
t = t + sl + 1;
if (i == Edit1->Text.Trim().ToInt() - 1)
{
RichEdit1->SelStart = st;
RichEdit1->SelLength = RichEdit1->Lines->Strings[i].Length();
}
}
BlueDeepOcean
2006-05-19
打赏
举报
回复
谢谢,我还差者远呢……
改过了,你看看是不是吧,如果还不是,那我就太笨了。(下面代码的缺陷是:当你输入的内容超出一行时,RichEdit将自动折行。而此时,如果在Edit中指定该新行号的话,将选择不完整。估计这是和折行有关。除此之外,凭我的感觉,应当是完全符合您的需求的。)
int st,sl,t = 0;
for (int i = 0;i < RichEdit1->Lines->Count;i ++)
{
st = t; //开始位置随着行数增加而增加
sl = RichEdit1->Lines->Strings[i].Length() + 1; //长度
t = t + sl + 1; //获得经过文本的总长度
if (i == Edit1->Text.Trim().ToInt() - 1) //比如Edit输入的是RichEdit的真实的行号,而非行的索引号
{
RichEdit1->HideSelection = false;
RichEdit1->SetFocus();
RichEdit1->SelStart = st;
RichEdit1->SelLength = RichEdit1->Lines->Strings[i].Length();
}
}
daydayup234
2006-05-19
打赏
举报
回复
再谢谢 深蓝
祝愿你早日升星
BlueDeepOcean
2006-05-19
打赏
举报
回复
我就解决看看呗。
BlueDeepOcean
2006-05-18
打赏
举报
回复
上面的那个的确有些缺陷,昨天我也发现了。今天修改了。你看看吧,怎样都能选中。
int st,sl,FindAt,w = 0;
for (int i = 0;i < RichEdit1->Lines->Count;i ++)
{
if (i == 2)
{
for (int j = 0;j < i;j ++)
w = w + RichEdit1->Lines->Strings[j].Length();
st = w + RichEdit1->Lines->Strings[i].Pos(RichEdit1->Lines->Strings[i].SubString(1,1));
StatusBar1->Panels->Items[0]->Text = IntToStr(st);
sl = w + RichEdit1->Lines->Strings[i].Length();
StatusBar1->Panels->Items[1]->Text = IntToStr(sl);
StatusBar1->Panels->Items[2]->Text = RichEdit1->Lines->Strings[i].SubString(1,1);
StatusBar1->Panels->Items[3]->Text = RichEdit1->Lines->Strings[i];
FindAt = RichEdit1->FindTextA(RichEdit1->Lines->Strings[i],st,sl,TSearchTypes() << stMatchCase);
if (FindAt + 1 != 0)
{
RichEdit1->HideSelection = false;
RichEdit1->SetFocus();
RichEdit1->SelStart = FindAt;
RichEdit1->SelLength = RichEdit1->Lines->Strings[i].Length();
StatusBar1->Panels->Items[4]->Text = "Found!";
}
else
{
StatusBar1->Panels->Items[4]->Text = "Bad!";
break;
}
}
}
daydayup234
2006-05-17
打赏
举报
回复
谢谢
你往RichEdit放几个汉字,tab之类试过没
BlueDeepOcean
2006-05-17
打赏
举报
回复
比如说有5行,分别为RichEdit1,RichEidt2,RichEdit3,RichEdit4和RichEdit5;
代码如下:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
RichEdit1->HideSelection = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
int FoundAt;
int st,ed,mm;
st = RichEdit1->Lines->Strings[1].Pos(RichEdit1->Lines->Strings[1].SubString(1,RichEdit1->Lines->Strings[1].Length()));
ed = RichEdit1->Lines->Strings[1].Length();
mm = st + ed;
for (int i = 0;i < RichEdit1->Lines->Count;i ++)
if (i == 1)
{
FoundAt = RichEdit1->FindTextA(RichEdit1->Lines->Strings[i],mm + 1,ed,TSearchTypes()<< stWholeWord); // 此处的mm+1是由于RichEidt每一行后面会自动添加一个空格
if (FoundAt != -1)
{
RichEdit1->SetFocus();
RichEdit1->SelStart = FoundAt;
RichEdit1->SelLength = RichEdit1->Lines->Strings[i].Length();
}
}
}
//---------------------------------------------------------------------------
Delphi获取
TRich
Edit
控件光标所在的行号..rar
Delphi获取
TRich
Edit
控件光标所在的行号..rar`
Delphi控制
TRich
Edit
组件文字内容滚动..rar
Delphi控制
TRich
Edit
组件文字内容滚动..rar
Delphi控制
TRich
Edit
组件文字内容滚动
摘要:Delphi源码,控件组件,
TRich
Edit
这几天做一个Delphi项目,要用到
TRich
Edit
组件内的文字滚动,索性研究了一下,编写了这么一个实例,点击按钮可控制
TRich
Edit
组件显示区的文字滚动。关于
TRich
Edit
组件:它是一个高级文本编辑组件,可以编辑多行文本,并且支持RTF格式的文件。在
TRich
Edit
中可以改变部分文本的字体和颜色,实现了简单的文字处理功能,当文字非常多时,会自动显示一个滚动条,拖动滚动条就会看到其他文字。
Rich
Edit
控件删除行和自动滚屏
Rich
Edit
控件删除行操作 自动滚屏到最后的应用示例
Rich
Edit
插入并显示PNG、JPG、BMP等图片及图文混排完整示例代码
近一周的工作成果了: 默认编译环境VS2019+MFC Rich
Edit
控件显示BMP图片 代码示例: //在Rich
Edit
中图文混排显示资源中位图 void CRich
Edit
TestDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 ..... } //在Rich
Edit
中显示PNG、JPG、BMP等图片 void CRich
Edit
TestDlg::OnBnClickedButtonImg() { // TODO: 在此添加控件通知处理程序代码 CFile file; file.Open(L"\\Rich
Edit
Test\\res\\1.png", CFile::modeRead); int l=file.GetLength(); char* pBuf = new char[l]; file.Read(pBuf, l); m_c
tRich
Edit
.InsertBitmap2(pBuf, l); }
VCL组件使用和开发
604
社区成员
13,459
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章