难死我了,你可能也不会呀,我也是高高手,(10分)

  • 主题发起人 主题发起人 milesmaqi
  • 开始时间 开始时间
M

milesmaqi

Unregistered / Unconfirmed
GUEST, unregistred user!
我是高手,但是,请大家先看这一行代码!!
procedure TForm1.ListBoxDblClick (Sender:Tbject);
begin
with Adotable1 do
begin
close;
tablename:=(Sender as TListBox).Items[(sender as TListbox).itemindex];
open;
end;
end;
我想问这个 是什么意思呢?是怎么用的呢?可以不可以给我举一个例子呢?
 
搞什么? 看不懂啊。
 
双击TListBox,用Adotable1打开ListBox中选定的表。
没做保护,可能会报错。
 

这不就是给adotable设置tablename,内容是从listbox中取吗
不过写的太罗嗦了
 
唉 虽然看懂 但我不理解为什么要这样写
 
不要冒充高手
 
我向这是为了不引用一个类的特殊实例。

如果有两个ListBox1、ListBox2
这段代码可以同时赋给两个ListBox的DBClick事件。
 
等价于
procedure TForm1.ListBoxDblClick (Sender:Tbject);
var
tmpIndex:Integer;
tmpListBox:TListBox;
begin
with Adotable1 do
begin
close;
tmpListBox:=Sender as TListBox;//强制转换.用tmpListBox:=TListBox(Sender); 也行
tmpIndex:= tmpListBox.itemindex;//得到当前项的索引
tablename:=tmpListBox.Items[tmpIndex];//把当前项的内容附值给TableName
//整个就是把Sender(是一个TList)的当前项附值给TableName
open;

end;
end;
 
有空, 没有道理
 
你是高手,怎么不会呀[:D][:D]
 
你是高高手,你不懂的我又怎么懂呢?
不过无论怎样看都好象很简单,难道你的代码copy错了?还是我眼花?
本来想答的。不过如果以我这么菜的水平能答出这道题,你这个高高手的面子真不知道要放在哪里才行。
唉,算了,我还不是不回答吧。给你留个面子,让高高高手或者高高高...手答吧。
 
大家说完了

with Adotable1 do
begin
close;//没问题
tablename:=(Sender as TListBox).Items[(sender as TListbox).itemindex];
//Sender 就是你双击的按钮,因为是Tobject,所以进行强制转换, .Items(i:integer)是读取第i行的string
open; //没问题
end;
 
如果操作的對象是TListBox類,則取它的ItemIndex項給tablename賦值
 
我也知道,我就是不说。
 
我早就知道,就是不告诉你们
 
好象太烦琐了, 但又挺通用的
 
这也不懂,还称高手?
 
在列表框中选择表名,并用AdoTable 打开,
用的是同一个AdoTable.
只要在相应的列表框中一点击,相应的表就在AdoTable 中打开,
如果它连接了 ... DbGrid 就会在其中反应出来的。
 
这是为了两个LIstBox共用一个DoubleClick处理函数

不过我觉得你不是高手,因为高手不会说自己是高手的。
 
procedure TForm1.ListBoxDblClick (Sender:Tbject);
var
listbox: TListBox;
begin
listbox := (Sender as TListBox);
Adotable1.close;
Adotable1.tablename:=listbox.Items[listbox.itemindex];
Adotable1.open;
end;

打开在listbox中选中的表。
 
后退
顶部