帮助 TGrid

Helps with TGrid

我是 C++ Builder 的新手,确实需要一些帮助。在我的工作中,我们必须使用 C++ Builder,但我找不到太多关于它的文档。

我想要做的是每次用户按下 Insert 键时,在每列中插入一个包含一些数据的新行。我的 TGrid 中总共有 20 行:1 TCheckColumn 和 19 TStringColumn

我不知道具体怎么做。首先,这是当有人输入插入键时我已经编写的代码:

void __fastcall TForm2::Grid1KeyDown(TObject *Sender, WORD &Key, System::WideChar &KeyChar,
        TShiftState Shift)
{
    switch(Key)
    {
        case VK_INSERT:
            if(Grid1->RowCount>MAXTask){}else
            {
                Label1->Text  = "number Task: "+IntToStr(++nmbertask);
                Grid1->RowCount++;
            }
            break;
    }
}

这里是 Grid1GetValue()Grid1SetValue() 代码:

void __fastcall TForm2::Grid1GetValue(TObject *Sender, const int Col, const int Row,
    TValue &Value)
{
    switch(Col)
    {
        case 0:
            Value = A[Col][Row]; break;
        case 1:
            Value = A[Col][Row]; break;
        case 2:
            Value = A[Col][Row]; break;
        case 3:
            Value = A[Col][Row]; break;
        case 4:
            Value = A[Col][Row]; break;
        case 5:
            Value = A[Col][Row]; break;
        case 6:
            Value = A[Col][Row]; break;
        case 7:
            Value = A[Col][Row]; break;
        case 8:
            Value = A[Col][Row]; break;
        case 9:
            Value = A[Col][Row];break;
        case 10:
            Value = A[Col][Row];break;
        case 11:
            Value = A[Col][Row];break;
        case 12:
            Value = A[Col][Row];break;
        case 13:
            Value = A[Col][Row];break;
        case 14:
            Value = A[Col][Row];break;
        case 15:
            Value = A[Col][Row];break;
        case 16:
            Value = A[Col][Row];break;
        case 17:
            Value = A[Col][Row];break;
        case 18:
            Value = A[Col][Row]; break;
        case 19:
            Value = A[Col][Row];break;
    }
}

void __fastcall TForm2::Grid1SetValue(TObject *Sender, const int Col, const int Row,
    const TValue &Value)
{
    switch(Col)
    {
        case 0:
            A[Col][Row] = Value; break;
        case 1:
            A[Col][Row] = Value; break;
        case 2:
            A[Col][Row] = Value; break;
        case 3:
            A[Col][Row] = Value; break;
        case 4:
            A[Col][Row] = Value; break;
        case 5:
            A[Col][Row] = Value; break;
        case 6:
            A[Col][Row] = Value; break;
        case 7:
            A[Col][Row] = Value; break;
        case 8:
            A[Col][Row] = Value; break;
        case 9:
            A[Col][Row] = Value; break;
        case 10:
            A[Col][Row] = Value; break;
        case 11:
            A[Col][Row] = Value; break;
        case 12:
            A[Col][Row] = Value; break;
        case 13:
            A[Col][Row] = Value; break;
        case 14:
            A[Col][Row] = Value; break;
        case 15:
            A[Col][Row] = Value; break;
        case 16:
            A[Col][Row] = Value; break;
        case 17:
            A[Col][Row] = Value; break;
        case 18:
            A[Col][Row] = Value; break;
        case 19:
            A[Col][Row] = Value; break;
    }
}

这就是我到目前为止所做的。我从来没有用 C++ Builder 开发过,所以你能帮我吗?我并不是真的在寻找书面解决方案,我真的是在寻找在何处寻找解决方案的指示。

如果我不清楚,请指出,以便我提供更多信息。如果您也有一个很好的站点,其中包含有关 C++ Builder 的良好文档,请告诉我。英语不是我的母语,但我会尽力而为。

您可以找到 TGrid documentation on Embarcadero's DocWiki。查看 'Methods' 页面,了解如何在 TGrid 中插入和删除元素。有两种方法可以帮助您:InsertComponent() 和 `InsertObject().

此外,在您的 Grid1GetValue()Grid1SetValue() 方法中,您使用的是 switch 语句。在所有这些情况下,您都在做同样的工作:

Value = A[Col][Row];break;

因此,您可以简单地调用一次 Value = A[Col][Row]; 而不是使用 switch,它会产生相同的结果。

希望我的回答能对您有所帮助。至少我回答了我从你的问题中理解的内容。