`
ylilike
  • 浏览: 147783 次
  • 性别: Icon_minigender_1
  • 来自: 洛阳
社区版块
存档分类
最新评论

Delphi中Memo显示行号列号

阅读更多

实例说明

本例是个光标应用的简单技巧,希望通过这个例子的学习后能举一反三。Delphi中像这样简单而又实用的例子还有很多,只要平时多注意积累就能写出简洁、执行效率高的代码。

编程思路
直接向Memo组件发送消息EM_LineFromChar并检测返回值,即可获知此组件中光标所在的行号,向Memo组件发送消息EM_LineIndex并检测返回值即可获知此组件中光标所在的列号。

编程步骤
先在Form上放置三个Label组件,并在程序代码的前面声明下面这三个变量为整型数,即:
VarLpos,Cpos,Linelength:integer;
其中Lpos是行的值(按照Memo的规定,第一行为O),Cpos是字符的位置,LineLength是当前行的字符总个数。然后,再将下面的七行程序代码分别加入Memo1的OnMouseDown和OnKeyDown的事件代码处即可。
Lops:=SendMessage(Memo1.Handle,EM_LineFromChar,Memol.SelStart,0);
Cpos:=SendMessage(Menol.Handle,EM_LineIndex,Lpos,0);                           
LineLength:=SendMessage(Memol.Handle,EM_LineLength,Cpos,0);
Cpos:=Memol.SelStart-CPos;
Label1.Caption:=IntToStr(ipos);
Label2.Caption:=IntToStr(cpos);
Label3.Caption:=IntToStr(linelength);
       完成后,在执行程序时,随着在Memo组件中的编辑操作,Labell、Label2和Label3就将显示出相对应的当前行值、字符位置与当前行的字符总个数了。

编程总结
请大家结合“获取RichEdit组件中光标所在的行号”一起学习,实际上两者极为相似。
附另一篇:

一、如何得知当前行号
  用RichEdit(或者memo)控件制作文本编辑器时,通过访问lines count属性可以得到总行数,但是若想知道光标当前所在行的行号就麻烦了,因为delphi没有提供这个属性。要实现这个编辑器必备功能,就须调用 em_ LineFromChar。请试试下面的程序。
  先在窗口中布置一个RichEdit或者memo(命名为editor),以及一个button。在button的onclick事件中写入下列代码。
  var
  CurrentLine:Integer;
  begin
  CurrentLine:=Editor Perform(em_ LineFromChar,SFFFF,0);
  Application MessageBox(PChar(′当前行号是′+IntToStr(CurrentLine)),′消息′,mb_ iconinformation);
  end;
  需要注意的是,第一行的行号为零。
  二、如何撤消操作(undo)
  对于memo来说,实现undo是不需编程的,只要让popupmenu属性为空,运行时就能用鼠标右键激活一个常用操作菜单,其中包括撤消、剪切、复制、粘贴、删除和全选六项。
  但可惜的是,这一招对于功能强大的RichEdit控件居然行不通,害得我们还要自己设计一个popupmemu。当你用 CutToClipBoard等语句轻松而顺利地完成了“剪切”等功能,接着便会无奈地发现,竟找不到undo或cancel之类的语句来执行“撤消”。
  这时你需要这样处理:
  RichEdit1 Perform(EM_UNDO,0,0);
  另外还应检查是否允许撤消,从而开启或关闭弹出菜单中的“撤消”项:
  Undo1 Enabled:=RichEdit Perform(EM_CANUNDO,0,0)<>0;
  以上程序在Delphi3中调试通过。

分享到:
评论

相关推荐

    delphi Memo及tstrlists的交集差集并集

    在Delphi编程环境中,`TMemo`控件和`TStringList`类是两种非常常见的数据处理工具。`TMemo`通常用于显示和编辑多行文本,而`TStringList`则是一个动态数组,用于存储和操作字符串列表。在本篇文章中,我们将深入探讨...

    利用Windows消息获取Memo的行和列.rar_DELPHI 消息_delphi memo_memo

    在Delphi中,我们可以使用`WM_GETTEXT`,`WM_GETTEXTLENGTH`等消息来获取Memo中的文本信息,但要获取行和列,我们需要处理`WM_CHAR`或`WM_KEYDOWN`消息。 Delphi中的Memo组件实际上是基于Windows API中的`RichEdit`...

    Memo控件的使用方法和详解

    `Memo`控件是Delphi或C++Builder等RAD Studio开发环境中常用的一种组件,用于显示、编辑和输入多行文本。它在标准组件面板(Standard)中可找到,是对单行`Edit`控件功能的扩展。下面我们将深入探讨`Memo`控件的主要...

    Delphi获取TRichEdit控件光标所在的行号..rar

    在Delphi编程环境中,TRichEdit控件是一个非常常用的组件,用于显示和编辑多行文本。它提供了丰富的文本格式化功能,比如字体、颜色、样式等。然而,有时候我们需要获取到用户在TRichEdit中光标所在的行号,以便进行...

    Delphi中静态二维数组的使用

    在完成上述步骤后,运行项目(d0505.dpr),你应该能看到九九乘法表被正确地显示在Memo组件中。通过这个简单的例子,我们不仅学习了Delphi中静态二维数组的声明、初始化和操作,还复习了循环控制和字符串处理的基本...

    Delphi统计文本框内容的行列数.rar

    Delphi统计文本框内容的行列数,统计出文字有多少行、多少列,具体请看下面的代码://得到行号和列号  procedure TForm1.Button6Click(Sender: TObject);  var  Hang,Lie,Num,CharsLine:longint;  begin  ...

    Delphi2010教程

    首先,我们关注 Memo 组件,它是Delphi中用于文本输入和显示的重要控件。Memo的主要属性包括: 1. Lines:这个属性提供了一个TStringList对象,用于访问和编辑Memo中每一行的内容。你可以通过Lines属性添加、删除或...

    MP3歌词显示探密 DELPHI

    ### MP3歌词显示探密——Delphi实现 #### 一、引言 随着数字音频技术的发展,MP3格式因其高质量的音质和较小的文件体积而受到广泛欢迎。对于喜欢边听音乐边看歌词的用户来说,能够实现在播放MP3的同时同步显示歌词...

    delphi控件cxGrid用法大全

    在拷贝文件过程中显示进度,可以使用`TProgressIndicator`组件,或者手动实现进度条逻辑,定时更新进度显示。 #### 21. 设置斑马线 要在cxGrid中设置斑马线效果,可以通过在`TableView`的`OnRowStyle`事件中根据行...

    delphi编的文本阅读器

    3. **文本显示**:TMemo控件是Delphi中常用的文本显示组件,它可以显示大量文本并支持滚动。通过设置它的`Lines`属性,我们可以加载或保存文本文件的内容。为了提高阅读体验,可以调整字体、颜色和行距。 4. **搜索...

    Delphi笔记

    - **Lines**: 表示Memo中每行文本的字符串数组。 - **WantReturns**: 允许或禁止保存回车键输入。 **示例**: ```delphi Memo1.Lines.Add('这是第一行'); Memo1.Lines.Add('这是第二行'); ``` ##### Main Menu控件...

    delphi 试题答案

    这个编程题展示了如何在Delphi中处理用户输入,并将满足特定条件的数字显示到Memo控件中: ```delphi procedure TForm1.Button1Click(Sender: TObject); var m, n, i: integer; begin m := StrToInt(Edit1.Text);...

    delphi学习杂记

    通过发送 `EM_LineFromChar`, `EM_LineIndex`, `EM_LineLength` 等消息来获取 Memo 控件中鼠标点击位置所在的行号、列号等信息。 **代码示例:** ```delphi procedure TForm1.Memo1MouseDown(Sender: TObject; ...

    Delphi专题 - 控件应用.pdf

    然而,相较于专业的字处理软件,`Memo`组件缺乏光标位置、所在行和列的信息显示,这在一定程度上限制了其功能的全面性。 为解决这一问题,可以通过添加简短的程序代码实现光标位置信息的实时显示。具体步骤如下: ...

    Delphi开发技巧之-VCL

    在TComboBox中显示栏 在TComboBox内绘制位图 在TDateTimePicker内显示星期几 在TFileListBox内显示多列 在TListBox中创建彩色项目 在TListBox内拖拽 在TListbox内绘制位图 在TListview内执行二进制搜索 在TListView...

    80例上手Delphi7编程(完全版)+源码

     实例九---在IntraWeb中显示图片数据  实例二--渐变色和动画矩形效果  实例五--编织带  实例八--动画屏保  实例六--镜框效果  实例十--matlab结合  实例十--电子地图开发之GIS组件--Mapobject深入开发 ...

    DELPHI文本整理器

    // Edit显示行号 // ------------------------------------------------------------------------------ // 去除空行 // Memo1.Text := StringReplace(Memo1.Text, #13#10#13#10, #13#10, [rfReplaceAll]); { //...

    Delphi组件介绍

    Memo组件是Delphi中的一个文本编辑控件,用于显示多行文本。它提供了一系列的功能属性,如: - **Lines**:此属性表示Memo对象中的所有文本行集合。 - **MaxLength**:该属性设置或获取Memo组件允许的最大字符数。 ...

    delphi通用函数单元一

    {* 缩短显示不下的长路径名} function GetRelativePath(Source, Dest: string): string; {测试通过} {* 取两个目录的相对路径,注意串尾不能是'\'字符!} procedure RunFile(const FName: string; Handle: THandle ...

Global site tag (gtag.js) - Google Analytics