【问题标题】:How can I select multiple individual cells of a string grid?如何选择字符串网格的多个单个单元格?
【发布时间】:2010-08-30 22:38:54
【问题描述】:

我正在寻找一个字符串网格,它允许我在网格中的任意位置选择多个单元格,而不会使它们彼此相邻,例如按 CTRL 并单击网格上的各个单元格。或者如果有人知道如何使用标准的 Delphi TStringGrid 做到这一点。

任何指点将不胜感激。

【问题讨论】:

    标签: delphi tstringgrid


    【解决方案1】:

    虽然这里有很多有能力的人,但由于你没有得到任何答案,我想我还是试试吧。

    我不知道让组件为您执行此操作的方法。但是,当您按住 Control 键单击单元格时,将调用事件 OnSelectedCell。 (我刚刚对此进行了测试。)您可以将代码放入事件处理程序中,将单元格的行和列添加到您保留的选定行和列的列表中。然后,在 OnDrawCell 事件中,突出显示单元格:

    procedure TForm1.StringGrid1DrawCell(    Sender: TObject;
                                             ACol: Integer;
                                             ARow: Integer;
                                             Rect: TRect;
                                             State: TGridDrawState);
    begin
       if CellSelected( ARow, ACol) then  // you write CellSelected() to refer to the list you're keeping
         begin
           StringGrid1.Canvas.Brush.Color := clYellow;
           StringGrid1.Canvas.FillRect(Rect);
           StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
         end;
    end;
    

    【讨论】:

    • 嘿,这是一个可行的解决方案,我认为没有更容易实施的解决方案。因此,虽然可能有些人比你更有能力(你是不是世界上最好的程序员吗?)你得到了一个可行的解决方案和答案,而所有其他人仍在考虑它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 2011-02-12
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多