Главная страница
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.031 c
1-96262
ShadowSmart
2003-09-17 11:36
2003.09.29
try except end


4-96473
chs2r
2003-07-29 18:27
2003.09.29
TWinControl


4-96491
Maks Realov
2003-07-25 17:43
2003.09.29
Win2k + дочернее окно + Stay On top = false ???


1-96274
IGORYOK
2003-09-16 10:30
2003.09.29
У меня не работает FindControl на форме и FindComponent на панели


6-96315
podonok
2003-07-31 05:29
2003.09.29
Чат