当我选中餐台弹出菜单 根据当前选中的餐台的状态弹出的菜单中的项那些为不可用   问题不起作用 当然第一次选中一个餐台弹出的菜单没有问题 当然连续选中第一次选中的餐台都正常,而换了餐台就不正常了  我用showmessage('可用')测试都显示正常呀
我的代码是这样的:
procedure TfrmKTGL.RzListViewMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 var p:TPoint;
 Item: TListItem;
  Selected: Boolean;
begin
  if TRZListView(Sender).Selected <> nil then
     begin
       if Button= mbLeft then lb_name.Caption := TRZListView(Sender).Selected.Caption ;
      //  p.X:=Mouse.CursorPos.X ;
       // p.Y:=mouse.CursorPos.Y ;
        GetCursorPos(P);
        if Button= mbRight then
           begin
             PopupMenu1.Popup(p.X,p.y);
          end;
        Getinfo;
     end;
end;
procedure TfrmKTGL.RzListViewSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
if TRZListView(Sender).Selected <> nil then
 begin
 with TLCYGLXT.ADOFind  do
     begin
       close;
       sql.Clear ;
       sql.Text:='select room_sate from room_info where room_name='''+item.Caption+'''';
       open;
      if (trim(FieldByName('room_sate').AsString)='可供') or (trim(FieldByName('room_sate').AsString)='脏台') or ( trim(FieldByName('room_sate').AsString)='预定')  then
          begin
           showmessage('可用')
          //RzListView.PopupMenu:=PopupMenu1;
         {  N1.Enabled:=false;
            N2.Enabled:=false;
            N6.Enabled:=false;
            N7.Enabled:=false;
            N9.Enabled:=false;}
          end;
       if trim(FieldByName('room_sate').AsString)='占用' then
          begin
          showmessage('不可用')
          end;// N3.Enabled:=false;//RzListView.PopupMenu:=PopupMenu2;
       if trim(FieldByName('room_sate').AsString)='停用' then
          begin
            N1.Enabled:=false;
            N2.Enabled:=false;
            N3.Enabled:=false;
            N6.Enabled:=false;
            N7.Enabled:=false;
            N9.Enabled:=false;
          end;
     end;
   end;
   RZListView.Refresh ;
end;

解决方案 »

  1.   

    对弹出菜单的visiable和enabled等属性,放到右键菜单的popup事件里写。
    你的思路就错了
      

  2.   

    我按楼上所说 放到事件popup事件  还是一样的呀
      

  3.   

    item.Caption??
    是不是Caption自动带了后面的快捷键符号?
    ShowMessage看下?
      

  4.   

    没有 我有showmessage看过 是正常的显示值
      

  5.   

    在Click事件前设置:
    Open1.caption:='可供';
    procedure TForm1.Open1Click(Sender: TObject);
    begin
      if Open1.Caption='可供' then
        ShowMessage('可供');
    end;这样就不会显示,最好不要用caption来判断.