很难,有挑战,下拉输入问题。(200)

  • 主题发起人 主题发起人 dingcs
  • 开始时间 开始时间
D

dingcs

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一程序,在memo中输入如下格式:“[张三,李四,王五,刘六]在浏览大富翁网站”, 然后在另一文本输出框中出现:“[张三]在浏览大富翁网站”,用鼠标点击[张三],则出现一下拉菜单,“张三,李四,王五,刘六”,每个人名是一菜单项。其中,[张三,李四,王五,刘六] 类似这样的子串有不定多个。请问各位富翁,用什么控件和怎样实现,谢谢。
 
真是找不到控件,就自己做一个下拉框,不点[张三]时,隐藏,点之后让它显示出来就行了
 
没有这样的控件,不过可以自己写“[张三,李四,王五,刘六]在浏览大富翁网站”该字符串中取出'张三,李四,王五,刘六'很简单,不用多说了const AStr='张三,李四,王五,刘六';var i:Integer; StrList:TStringList;begin StrList:=TStringList.Create; try StrList.text:=StringReplace(Astr, #9, #13#10, [rfReplaceAll]); for i:=0 to StrList.cout-1 StrList.strings//即为你的每个人的名称,加菜单不就用说了吧 finally StrList.free; end;end;
 
谢谢楼上两位的解答,问题是,我的字符串中,有不定多个类似于[张三,李四,王五,刘六],这种格式的子串,如何解决?
 
你的意思是说:在“[]”中的是可变量,而外面的是常量,当memo中输入完时,在edit中显示“[]”中加上第一个可变量,后面显示常量。当然,“[]”可能有多个,常量也可能有多个。基本思路是:在memo的onchange事件中,对memo里的字符一个个的进行判断,如果有配对的“[]”,就对里面的字按“,”分隔符分开,存入变量数组,如“[]”有多个,可声明二维数组,最终就可以显示在edit中了;至于当点击“[]”里面的字时,可以用edit的onclick事件和onkeydown事件,取光标的位置,判断是不是在“[]”中间,如果在,就将一个隐藏的combobox显示出来,选择下拉内容,当选择完毕后,隐藏combobox。
 
结贴,我采用的是字符串分割,重新组合,遇到符合下拉条件的子串,重新分割,再分成的子串填入combobox。几位热心的大富翁,辛苦了,谢谢。
 
后退
顶部