procedure TForm2.FormCreate(Sender: TObject);
var
  i:integer;
  addsubitem:TMenuItem;
  str:string;
begin
  for i:=1 to Query1.FieldCount do
    begin
      With Query1 do
        begin
          close;
          sql.Clear;
          sql.add('select * from language');
          open;
          str:=Fields[i].FieldName;
        end;
      addsubitem:=TMenuItem.Create(self);
      addsubitem.Caption:=str;
      Language1.add(addsubitem);
      Language1.AutoHotkeys:=Mamanual;
      addsubitem.OnClick:=MyClick;
      //addsubitem.Destroy;
    end;
  //MyClick(TControl(Sender));
end;
这错哪了呢?

解决方案 »

  1.   

    哎,有何刚才的错一样,Query1.fieldcount 没数据
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j:integer;
      addsubitem:TMenuItem;
      str:string;
    begin
      inherited;
      with Query1 do
       begin
         close;
         sql.Clear;
         sql.Add('select * from language');
         open;
         j:=FieldCount;
       end;
      //showmessage(query1.FieldList.Names[1]);
      for i:=0 to j-1 do
        begin
          With Query1 do
            begin
              close;
              sql.Clear;
              sql.add('select * from language');
              open;
              str:=Fields[i].FieldName;
            end;
          //showmessage(str);
          addsubitem:=TMenuItem.Create(self);
          addsubitem.Caption:=str;
          Language1.add(addsubitem);
          Language1.AutoHotkeys:=Mamanual;
          //addsubitem.OnClick:=MyClick;
          //addsubitem.Destroy;
        end;
    end;
    这样是行了,但是好象很罗嗦,有更好的方法吗?
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);      
    var
      c_Item : TMenuItem;
    begin
            c_Item := TMenuItem.Create(Form1.MainMenu1);
            c_Item.Caption := 'OK'
            c_Item.OnClick := myProcedure;
            Form1.MainMenu1.Items[1].Add(c_Item);
    end;