Главная страница
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.029 c
1-96265
aldapooh
2003-09-17 12:09
2003.09.29
Single Instance


6-96314
AHTOH
2003-07-30 00:26
2003.09.29
Как узнать, что порт, занятый моей прогой, нужен какой-то другой


14-96352
Igor_thief
2003-09-12 12:36
2003.09.29
PopupMenu


8-96300
Still Swamp
2003-05-17 17:38
2003.09.29
Закончилось ли воспроизведени


3-96052
P0tia
2003-09-10 17:20
2003.09.29
Люди добрые, помогите с Excel