首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

TValueListEdit控件在程序中统制单元格是否可编辑

2013-12-26 
TValueListEdit控件在程序中控制单元格是否可编辑想实现的效果:1、点击按钮时ValuelistEdit可编辑(key与Val

TValueListEdit控件在程序中控制单元格是否可编辑
想实现的效果:
1、点击按钮时ValuelistEdit可编辑(key与Value都可以编辑),再点击一次不可编辑(key与Value都不可以编辑)
2、第二行的Value值可编辑,key值不可编辑。

我的代码如下,为什么会没有效果。在StringGrid控件下,同样的写法却有效果。


void __fastcall TForm1::VLEditSelectCell(TObject *Sender,
      int ACol, int ARow, bool &CanSelect)
{
/*    if(VLEdit->Col != 0 && VLEdit->Row == 1)
    {
        VLEdit->KeyOptions<<keyEdit;
        VLEdit->Options<<goEditing;
    }
    else
    {
        VLEdit->KeyOptions>>keyEdit;
        VLEdit->Options>>goEditing;
    }
*/
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Form1->flag = -1;//flag初始值为-1
    VLEdit->InsertRow("1", "潮汐海灵",1);
    VLEdit->InsertRow("2", "德邦总管", 1);
    VLEdit->InsertRow("3", "安妮", 1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
    flag*=-1;
    if(1 == flag)
        VLEdit->Options>>goEditing;
    if(-1 == flag)
        VLEdit->Options<<goEditing;
}
//---------------------------------------------------------------------------

[解决办法]
.h 文件中:
private:// User declarations
    bool m_bFlag;


.cpp文件中:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    m_bFlag = true;

    VLEdit->InsertRow("1", "潮汐海灵",1);
    VLEdit->InsertRow("2", "德邦总管", 1);
    VLEdit->InsertRow("3", "安妮", 1);
}

// ---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
    m_bFlag = !m_bFlag;

    VLEdit->Options = m_bFlag? VLEdit->Options << goEditing:
            VLEdit->Options >> goEditing;
}

[解决办法]
集合在 VCL 裡廣泛使用...然而在 C++ 裡沒有如同 Object Pascal 一樣的 Set 類型...為了使設定集合屬性有所效果...必須使用妖哥的方式做明確的指派......

热点排行