首页 > 其他分享 >Delphi10.3关键字自动填充完成AutoComplete

Delphi10.3关键字自动填充完成AutoComplete

时间:2024-09-25 14:47:52浏览次数:9  
标签:Delphi10.3 begin end AutoComplete 关键字 key keyWords aMemoInput ListBox

声明两个全局变量

var
aStringList: TStringList; //读取 关键字
aMemoInput:string;       //当前 已输入 项
procedure TSearchReplaceDemoForm.FormCreate(Sender: TObject);
begin
 aStringList:=TStringList.Create;
 aStringList.LoadFromFile('keyWord.txt');  //从文件加载 关键字
end;

拖一个ListBox,命名为ListBox_keyWords

procedure TSearchReplaceDemoForm.ListBox_keyWordsKeyPress(Sender: TObject;
  var Key: Char);
var  tempStr:string;
begin
 if key=#27  then   //esc
     begin
     ListBox_keyWords.Visible:=false;
     SynEditor.SetFocus;
     aMemoInput:='';
     end;

  if key =#13  then  begin    //回车键

      tempStr:=  ListBox_keyWords.Items[ListBox_keyWords.ItemIndex] ;

      SynEditor.SelText := rightstr(  tempStr ,length(tempStr)-length(aMemoInput));
      ListBox_keyWords.Visible:=false;
      SynEditor.SetFocus;
      aMemoInput:='';
  end;
end;

鼠标双击,选择

procedure TSearchReplaceDemoForm.ListBox_keyWordsDblClick(Sender: TObject);
begin
var    tempStr: string;
begin
  if ListBox_keyWords.ItemIndex >= 0 then
  begin
      tempStr:=  ListBox_keyWords.Items[ListBox_keyWords.ItemIndex] ;
      SynEditor.SelText := rightstr(  tempStr ,length(tempStr)-length(aMemoInput));
      ListBox_keyWords.Visible:=false;
      SynEditor.SetFocus;

       aMemoInput:='';
  end;
end;
end;

 

 假设SynEditor为Memo类型

procedure TSearchReplaceDemoForm.SynEditorKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
 if ( key=VK_DOWN)  and (ListBox_keyWords.Visible)     then begin //按 向下键,选择
  ListBox_keyWords.SetFocus;
   ListBox_keyWords.ItemIndex:=0;

    exit;
  end;

 if ( key=VK_BACK)     then begin // 向后删除键
    aMemoInput:=leftstr(aMemoInput,length(aMemoInput)-1) ;
   ListBox_keyWords_Refresh(aMemoInput);
     exit;
  end;

 if ( key=VK_ESCAPE ) or(key= VK_RETURN)    then begin // ESC  和 回车
   ListBox_keyWords.Visible:= false;
   aMemoInput:='';
   exit;
  end;
end;

procedure TSearchReplaceDemoForm.SynEditorKeyPress(Sender: TObject;
  var Key: Char);
begin
 if CharInSet( key , ['a'..'z','A'..'Z','_']){ or (Key > #127)}  then   begin
  aMemoInput:=aMemoInput+key;
  ListBox_keyWords_Refresh(aMemoInput);
 end;

 if tulaterIsSeparator(key ) then     begin   //输入 间隔符, ListBox 消失
     aMemoInput:='' ;
    ListBox_keyWords.Visible:=false;
  end;
end;

 

标签:Delphi10.3,begin,end,AutoComplete,关键字,key,keyWords,aMemoInput,ListBox
From: https://www.cnblogs.com/tulater/p/18431319

相关文章

  • 【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、
    文章目录【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、Volatile关键字、JMM、重排序、双重检验锁)1.Volatile的特性2.Volatile的用法3.CPU多核硬件架构剖析4.JMM内存模型4.1主要特性4.2JMM的工作原理4.3实现机制5.JMM八......
  • abstract 关键字
    java为了表示现实生活中抽象的概念集合,提供了一个关键字给我们使用:abstractabstract抽象的可以修饰类,修饰成员方法1.被abstract修饰的类是抽象类,抽象类不能被实例化2.被abstract修饰的方法是抽象方法,抽象方法不能有大括号实现3.在抽象类,既可......
  • java_day7_继承、final关键字、代码块、多态
    一、继承1、继承我想养一只......
  • java继承关系中super关键字
    super关键字的使用和注意事项:1、super仅代表当前类中的直接父类,无法使用super获取父类的父类中的成员2、super后面不能再调用superclassGrandFu3{inta=10;}classFu3extendsGrandFu3{inta=30;}classSon3extendsFu3{inta=20;publicv......
  • java_day6_this关键字、构造方法、static关键字、工具类、文档注释
    一、this关键字this代表的是调用该方法的当前对象【谁调用了该方法,this就代表那个对象】this:代表的是调用当前方法的对象this可以使用对象中的成员变量,成员方法,构造方法变量查找规则:就近原则先在方法中查找变量,若找到就使用若方法中没有该变量,去成......
  • java_day5_面向对象、private关键字
    一、面向对象面向对象与面向过程的区别?面向过程的思想:代表语言C语言功能开发中的每一步都是自己参与的面向对象的思想:代表语言java语言指的是不断地创建对象,指挥对象事情过程面向对象的思想:1、都有那些事物?判断事物的方式:......
  • MySQL零基础入门教程-5 单行处理函数、分组函数、mysql关键字执行顺序,基础+实战
    教程来源:B站视频BV1Vy4y1z7EX001-数据库概述_哔哩哔哩_bilibili我听课整理的课程的完整笔记,供大家学习交流下载:夸克网盘分享本文内容为完整笔记的第五篇17、单行数据处理函数P30-36&分组函数17.1、数据处理函数又被称为单行处理函数单行处理函数的特点:一个输入对应一个输出。和单行......
  • 万恶的goto关键字
    提到goto,大家一定能想到迪杰斯特拉发表的著名论文goto有害论(GoToStatementConsideredHarmful)。正是它推动了结构化程序设计语言的发展。公正地说,goto并非那么可怕,机器码/汇编码本身支持跳转,就是goto的底层形态。计算机程序中条件选择、循环等语句最终依然依靠跳转指......
  • MySQL零基础入门教程-3 条件查询、模糊查询、条件关键字和其优先级关系,基础+实战
    教程来源:B站视频BV1Vy4y1z7EX001-数据库概述_哔哩哔哩_bilibili我听课收集整理的课程的完整笔记,供大家学习交流下载:夸克网盘分享本文内容为完整笔记的第三篇 14、条件查询&模糊查询P19-2514.1什么是条件查询?不是将表中所有数据都查出来。是查询出来符合条件的条件查询需要用到whe......
  • C语言中易混淆概念的关键字
    最快的关键字----registerregister:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝对。你想想,一个CPU的寄存器也就那么几个或几十个,你要是定义了很多很多register变量,它累死也可能不能全部把这些变量......