Как со StringGrid убрать выделения ячейки?

VCL, KOL, CLX и др. Свои компоненты
Ответить
forform
Сообщения: 2
Зарегистрирован: 30 мар 2005, 07:21

30 мар 2005, 07:34

Дело в том, что StringGrid при потере фокуса свою активную ячейку выделяет синим фоном (в том случае когда на одной форме 2 или больше таблиц!) . Как от этого избавиться?
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

30 мар 2005, 10:34

Дело в том, что StringGrid при потере фокуса свою активную ячейку выделяет синим фоном (в том случае когда на одной форме 2 или больше таблиц!) . Как от этого избавиться?
Впринципе, можно обрабатывать DrawCell, тогда можно рисовать вид StringGrid'а по своему желанию. DefaultDrawing := False.

Пример обработчика DrawCell:

Код: Выделить всё

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
Var
  StringGrid: TStringGrid;
  Can: TCanvas;
begin
  StringGrid := Sender as TStringGrid;
  Can := StringGrid.Canvas;
  Can.Font := StringGrid.Font;
  if (ARow >= StringGrid.FixedRows) and (ACol >= StringGrid.FixedCols)
   then Can.Brush.Color := StringGrid.Color
   else Can.Brush.Color := StringGrid.FixedColor;
  If ActiveControl = Sender then // Эта строка "выключает" выделение
  if (gdSelected in State) then
  begin
    Can.Font.Color := clHighlightText;
    Can.Brush.Color := clHighlight;
  end;
  Can.FillRect(Rect);
  Can.TextOut(Rect.Left+2,Rect.Top+2, StringGrid.Cells[ACol, ARow]);
end;
С уважением, Lost Angel...
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

01 апр 2005, 12:37

Можно использовать библиотеку RxLib
Там у гридов есть свойства, которые это регулируют.

Еще попробуйте (у стандартного грида) опцию AlwaysHsowEditor, не уверен, но помоему тоже поможет.
Ответить