Главная страница
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.025 c
3-96091
Ross
2003-09-10 13:53
2003.09.29
Как проверить если точно такая же запись есть в базе?


14-96410
Дремучий
2003-09-11 11:04
2003.09.29
Почему из форумов нет ссылки на Список Анкет?


3-96065
AlexPul
2003-09-09 17:59
2003.09.29
Отладка UDF Firebird


1-96249
Dysan
2003-09-17 15:50
2003.09.29
Project1.dpr


3-96127
Anton_2003
2003-09-09 00:39
2003.09.29
Индекс Descending.