Текущий архив: 2003.09.29;
Скачать: CL | DM;
Вниз
Как убрать синее выделение в StringGrig? Найти похожие ветки
← →
Andersen (2003-09-15 14:43) [0]Может кто знает как убрать выделение в StringGrid не обрабатывая каждый раз изменение свойства State в onDrawCell?
← →
dataMaster © (2003-09-15 14:57) [1]Когда грид фокус теряет что ли?
procedure TForm1.StringGrid1Exit(Sender: TObject);
var
hGridRect: TGridRect;
begin
hGridRect.Top := -1;
hGridRect.Left := -1;
hGridRect.Right := -1;
hGridRect.Bottom := -1;
StringGrid1.Selection := hGridRect;
end;
← →
Andersen (2003-09-15 16:32) [2]Предложенное Вами решение, действительно помогло бы при потере SG фокуса, но задача несколько другая.
"Просто" убить выделение!
Т.е. показался StringGrid, вот он, такой что, нет выделенных синим цветом строк. Пусть например, кликнул по строке, а с ней ничего не произошло (она не выдилилась).
Использование SG, как контейнер сбора статистических данных.
← →
pasha_golub © (2003-09-15 16:35) [3]Переписать метод TCustomgrid.Paint
← →
dataMaster © (2003-09-15 16:36) [4]Делаем то же самое при OnClick
← →
dataMaster © (2003-09-15 16:36) [5]И при OnCreate
← →
pasha_golub © (2003-09-15 16:37) [6]А точнее в этом методе есть локальная процедура DrawCells(ACol, ARow: Longint; StartX, StartY, StopX, StopY: Integer;
Color: TColor; IncludeDrawState: TGridDrawState);
Так вот она и выделяет синим:
procedure DrawCells(ACol, ARow: Longint; StartX, StartY, StopX, StopY: Integer;
Color: TColor; IncludeDrawState: TGridDrawState);
...
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);
...
Могу предложить переопредилить константы clHighlight и clHighlightText
← →
Andersen (2003-09-17 13:49) [7]А как их переопределить?
← →
ZEE © (2003-09-17 13:58) [8]>pasha_golub © (15.09.03 16:37) [6]
>Могу предложить переопредилить константы clHighlight и clHighlightText
и точно, как их переопределить?
попробуй так:clHighlight:=clWhite;
и получишь: "Left side cannot be assignet to"
← →
Andersen (2003-09-17 15:00) [9]В каком файле находится DrawCell
я поменял в grids.pas но не какого результата, всё равно синее.
← →
ZEE © (2003-09-17 15:17) [10]>Andersen (17.09.03 15:00) [9]
>В каком файле находится DrawCell
>я поменял в grids.pas но не какого результата, всё равно синее.
наверно в директории Source поменял :)
надо наследника от TStringGrid делать, а в нем уж менять эту процедуру...
← →
Andersen (2003-09-17 16:09) [11]Ну например я сделал насследника от класса TStringGrid.
Там определил функцию DrawCell (может надо DrawCells?) ну а дальше что?
Теперь надо переписать DrawCell чтоли у себя в программе?
Подскажите по шагам что делать?
← →
ZEE © (2003-09-17 16:40) [12]На самом деле лучше ничего не переопределять и не создавать наследников
Все гораздо проще - единственная загвоздка это твой вопрос: "...не обрабатывая каждый раз изменение свойства State в onDrawCell..."
Как раз использовать OnDrawCell - самый простой способ
зы: кстати State обрабатывать не надо, а просто рисовать в любом случае ячейку как невыделенную (может все дело было именно в этом :)
Страницы: 1 вся ветка
Текущий архив: 2003.09.29;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.017 c