Текущий архив: 2003.01.27;
Скачать: CL | DM;
Вниз
TStringGrid Найти похожие ветки
← →
SaperXL (2003-01-15 23:54) [0]Мастера, подскажите пожалуйста, как в этом компоненте сделать, чтобы не было выделения активной ячейки таблицы. Дело в том, что она всегда синяя (полностью не согласуется с дизайном...), а мне вообще говоря нужно только показывать табло из строк, без перемещений по нему... Если нельзя совсем убрать выделения, то как хотя бы сделать его только по контуру ячейки, а не закрашиванием всей ячейки?
← →
ЮЮ (2003-01-16 03:04) [1]DefaultDraw := false и вся отрисовка в OnDrawCell
← →
Юрий Зотов (2003-01-16 06:28) [2]Уберите goDrawFocusSelected из Options, вот и все.
← →
SaperXL (2003-01-16 13:39) [3]в Options у меня уже давно пусто
А DefaultDraw сносит всю прорисовку: прорисовку самих строк, закрашивание фиксированной зоны... Это что же полегче нет ничего?
← →
gsu (2003-01-16 13:53) [4]в OnDrawCell можно нарисовать почти все
полегче, попробуй установить цвет активной ячейки таким же как цвет сетки
← →
SaperXL (2003-01-16 13:55) [5]не понял...
Что значит нарисовать все полегче?
А где установить цвет активной ячейки?
← →
gsu (2003-01-16 14:07) [6]сорри про установку, имелась в виду перерисовка ячейки
← →
Cu (2003-01-16 14:43) [7]бррр а по-моему помогает установка
goRangeSelect в false :-/ (in Options)
← →
SaperXL (2003-01-20 04:19) [8]Повторяю: в Options ни одно св-во не уст. в true...
← →
Юрий Зотов (2003-01-20 06:38) [9]Не знаю, кто тут кому пудрит, извините, мозги, но вот только что проверил и убедился, что goDrawFocusSelected прекрасненько работает - включает и выключает подсветку ячейки цветом clHighlight.
В чем, собственно, и сомнений не было. И что и было сказано с самого начала. И если у Вас Options действительно пусто, то проблема непонятна.
← →
MBo (2003-01-20 06:48) [10]procedure TForm1.StringGrid1Exit(Sender: TObject);
begin
StringGrid1.Selection:=TGridRect(Rect(-1,-1,-1,-1));
end;
И при необходимости CanSelect:=False в OnSelectCell
← →
ЮЮ (2003-01-20 06:57) [11]TCustomGrid.Paint
if DefaultDrawing or (csDesigning in ComponentState) then
with Canvas do
begin
Font := Self.Font;
if (gdSelected in DrawState) and
(not (gdFocused in DrawState) or
([goDrawFocusSelected, goRowSelect] * Options <> [])) then
begin
Brush.Color := clHighlight;
Font.Color := clHighlightText;
end
else
Brush.Color := Color;
FillRect(Where);
end;
DrawCell(CurCol, CurRow, Where, DrawState);
Поэтому никак ты не избавишься от синего квадрата, пока не установишь DefaultDrawing в False
>А DefaultDraw сносит всю прорисовку: прорисовку самих строк, закрашивание фиксированной зоны... Это что же полегче нет ничего?
Не так уж там и много писать, зато всё в твоих руках
procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with TStringGrid(Sender) do
if gdFixed in State then
DefaultDrawing := true // это пусть рисует сам
else begin
DefaultDrawing := false;
Canvas.Brush.Color := Color;
Canvas.FillRect(Rect);
if gdSelected in State then begin
Canvas.Brush.Color := clBlue;
Canvas.FrameRect(Rect);
InflateRect(Rect, -1, -1);
Canvas.Brush.Color := Color;
Canvas.TextRect(Rect, Rect.Left, Rect.Top, Cells[ACol, ARow]);
end;
end;
end;
← →
ЮЮ (2003-01-20 07:01) [12]>Юрий Зотов © (20.01.03 06:38)
Не знаю, кто тут кому пудрит, извините, мозги, но вот только что проверил и убедился, что goDrawFocusSelected прекрасненько работает - включает и выключает подсветку ячейки цветом clHighlight.
Только когда StringGrid в фокусе. Поставь два StringGrid и всё летит ко всем чертям :-)
← →
SaperXL (2003-01-20 07:58) [13]Ага, вопрос оказался глобальней... Простите, но мне противно писать программы на Дельфи со структурой чистых API-программ на голом C++. Мне кажется, что Дельфя для того и существует, чтобы Я этого не делал... Хотя по-другому видимо никак...
Всем спасибо.
Страницы: 1 вся ветка
Текущий архив: 2003.01.27;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.011 c