Как выбрать несколько отдельных ячеек в сетке строк? - PullRequest
4 голосов
/ 31 августа 2010

Я ищу сетку строк, которая позволяет мне выбирать несколько ячеек в любом месте сетки без их соприкосновения друг с другом, например, нажимая CTRL и щелкая различные ячейки в сетке. Или, если кто-нибудь знает, как это сделать с помощью стандартной Delphi TStringGrid.

Любой указатель будет принят с благодарностью.

1 Ответ

4 голосов
/ 31 августа 2010

Хотя здесь много людей с лучшими способностями, так как вы не получили ответов, я решил попробовать.

Я не знаю, как заставить компонент сделать это за вас. Однако, когда вы щелкаете 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;
...