请大家帮我看看会是什么问题(100分)

  • 主题发起人 主题发起人 勤学delphi
  • 开始时间 开始时间

勤学delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
这段程序我在另一个工程中能正确运行,现在程序编译时却出错,
Project Project1.exe raised exception class EStringListError
with message 'List Index out of bounds(0)'.
程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
i,Fieldcount:Integer;
Str:String;
begin
Fieldcount:=ADOTable1.FieldCount;
Edit1.Text:=IntToStr(Fieldcount);
for i:=0 to Fieldcount-1 do
begin
Str:=ADOTable1.FieldList.Strings;
CheckListBox1.Items.Add(Str);
end;
end;

Fieldcount 能正确统计出ADOTable1的字段数.
会不会是设置上的问题?

另,如何实现左键单击Button弹出PopupMenu.
我设置了popupMenu的Trackbutton为tbLeftButton还是不行。
高手指教。
 
第一个问题:
可能是数据库没有打开,或者是没有设置TableName,你可以在
Fieldcount:=ADOTable1.FieldCount;后面加上ShowMessage(IntToStr(FieldCount));
来查看一下是多少,也许是-1,如果是这样的话,那么就需要在Fieldcount:=ADOTable1.FieldCount;
之前打开数据库了。
第二个问题:
写好一个PopupMenu,然后在Button的OnMouseDown的时候,
if Button=mbleft then
PopupMenu1.Popup(Mouse.CursorPos.x,Mouse.CursorPos.Y);
就可以了。也许用其他第三方控件也可以实现,但是这是一个笨方法。
 
Fieldcount:=ADOTable1.Fields.Count;
Edit1.Text:=IntToStr(Fieldcount);
for i:=0 to Fieldcount-1 do
begin
Str:=ADOTable1.Fields.FieldName;
CheckListBox1.Items.Add(Str);
end;

=======
On MouseUp事件:
if Button = mbLeft then
PopupMenu1.Popup(X, Y);
 

Similar threads

后退
顶部