Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TStringGrid [D6, Win2k]


SaperXL ©   (2003-01-15 23:54:00) 

Мастера, подскажите пожалуйста, как в этом компоненте сделать, чтобы не было выделения активной ячейки таблицы. Дело в том, что она всегда синяя (полностью не согласуется с дизайном...), а мне вообще говоря нужно только показывать табло из строк, без перемещений по нему... Если нельзя совсем убрать выделения, то как хотя бы сделать его только по контуру ячейки, а не закрашиванием всей ячейки?


SaperXL   (2003-01-20 07:58:00) [1]

Ага, вопрос оказался глобальней... Простите, но мне противно писать программы на Дельфи со структурой чистых API-программ на голом C++. Мне кажется, что Дельфя для того и существует, чтобы Я этого не делал... Хотя по-другому видимо никак...
Всем спасибо.


ЮЮ   (2003-01-20 07:01:00) [2]

>Юрий Зотов © (20.01.03 06:38)
Не знаю, кто тут кому пудрит, извините, мозги, но вот только что проверил и убедился, что goDrawFocusSelected прекрасненько работает - включает и выключает подсветку ячейки цветом clHighlight.

Только когда StringGrid в фокусе. Поставь два StringGrid и всё летит ко всем чертям :-)


ЮЮ   (2003-01-20 06:57:00) [3]

TCustomGrid.Paint

if DefaultDrawingor (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;




MBo   (2003-01-20 06:48:00) [4]

procedure TForm1.StringGrid1Exit(Sender: TObject);
begin
StringGrid1.Selection:=TGridRect(Rect(-1,-1,-1,-1));
end;

И при необходимости CanSelect:=False в OnSelectCell


Юрий Зотов   (2003-01-20 06:38:00) [5]

Не знаю, кто тут кому пудрит, извините, мозги, но вот только что проверил и убедился, что goDrawFocusSelected прекрасненько работает - включает и выключает подсветку ячейки цветом clHighlight.

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


SaperXL   (2003-01-20 04:19:00) [6]

Повторяю: в Options ни одно св-во не уст. в true...


Cu   (2003-01-16 14:43:00) [7]

бррр а по-моему помогает установка
goRangeSelect в false :-/ (in Options)


gsu   (2003-01-16 14:07:00) [8]

сорри про установку, имелась в виду перерисовка ячейки


SaperXL   (2003-01-16 13:55:00) [9]

не понял...
Что значит нарисовать все полегче?
А где установить цвет активной ячейки?


gsu   (2003-01-16 13:53:00) [10]

в OnDrawCell можно нарисовать почти все
полегче, попробуй установить цвет активной ячейки таким же как цвет сетки


SaperXL   (2003-01-16 13:39:00) [11]

в Options у меня уже давно пусто
А DefaultDraw сносит всю прорисовку: прорисовку самих строк, закрашивание фиксированной зоны... Это что же полегче нет ничего?


Юрий Зотов   (2003-01-16 06:28:00) [12]

Уберите goDrawFocusSelected из Options, вот и все.


ЮЮ   (2003-01-16 03:04:00) [13]

DefaultDraw := false и вся отрисовка в OnDrawCell


Наверх

Титульная страница Поиск, карта сайта Написать письмо