教我locate 的用法(50分)

  • 主题发起人 主题发起人 zsh.
  • 开始时间 开始时间
Z

zsh.

Unregistered / Unconfirmed
GUEST, unregistred user!
有以下语句
locate('name1;name2;name3;',vararrauof([edit1.text,edit2.text,edit3.text]),[]);
本想将edit的text内容与字段name按序号相对应,即将edit1.text赋值给name1, 以次类推。
问题如下:
如果我选用name2,name3两个字段(可以用复选框来选择),此时,我希望edit框也可以动态选择(edit1.text无论是何值都将不起作用),以完成上述对应关系,我该 如何做?
 
不知你要达到的目的是否如下->
方法是: (简而言之是动态构成locate语句)
1. 使用case 语句name1,name2,name3的选中组合
2. 动态生成locate前的字符串
疑问:
如果Edit1.Text 无用为何还要将Name1放入前面的字符串?



 
目的就是动态构成locate,该语句的由字段名构成的字符串由IF语句完成。
我的做法是将EDIT框与复选框连接,如果选中,则其对应的edit 框起作用,然后
就把该值与相应字段连接,否则,无论edit中是什摸内容都不起作用。
 
var
key:string
val:array[0..2] of variant
i:integer
arr:variant

i:=0

if 选择了edit1 then
begin
key="name1";
val=edit1.Text;
i:=i+1;
end

if 选择了edit2 then
begin
if(key<>"")then
key:=key+';' ;
key=key+"name2";
val=edit2.Text;
i:=i+1;
end

if 选择了edit3 then
begin
if(key<>"")then
key:=key+';' ;
key=key+"name3";
val=edit3.Text;
// 最后一个不要 i:=i+1;
end

......
arr:=VarArrayOf(const Values: array of Variant)
VarArrayRedim(arr,i)
locate(key,arr,[]);
 
pipi:
我把你的代码写进了程序,出现了下列问题:
1。arr:=VarArrayOf(const Values: array of Variant)
不知到括号中是否应该是val?
2.如何在查询后恢复初值,以免当再次查询时出现错误
3。arr:=VarArrayOf(const Values: array of Variant)
VarArrayRedim(arr,i)
这两句话是什摸意思,arr是怎摸工作的?
 
1、arr:=VarArrayOf(val)
指误

2、val原来留了x个单元的大小
但是只是前i个有用的,所以重新定义 arr 的大小
 
接受答案了.
 
后退
顶部