Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-96167
fartuna
2003-09-16 11:58
2003.09.29
JEDI VCL 2.10 for D5-D7


14-96420
Vint
2003-09-10 15:16
2003.09.29
Читать у кого хреновое настроение :)


3-96064
Санек
2003-09-10 08:35
2003.09.29
Мастера помогите! Как узнать, какие БД уже существуют


1-96182
Vitaliygavrilov
2003-09-16 11:08
2003.09.29
На что нужно обратить внимание что сократить размер программы.


14-96441
SergeySEM
2003-09-10 11:25
2003.09.29
Please Help