Как выбрать несколько отдельных ячеек в сетке строк?
Я ищу сетку строк, которая позволяет мне выбирать несколько ячеек в любом месте сетки, не примыкая друг к другу, например, нажимая CTRL и щелкая различные ячейки в сетке. Или, если кто-нибудь знает, как это сделать с помощью стандартной 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;