Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.06;
Скачать: CL | DM;

Вниз

Подскажите плз как убрать выделение ячейки у StringGrid   Найти похожие ветки 

 
smartleds   (2007-12-07 18:32) [0]

Автоматически синим цветом выделяется элемнт таблицы StringGrid[0,0]
Если потом кликнуть мышкой на таблицу , то выделение синим цветом пропадает.
Как убрать выделение синим цветом при запуске Stringgrid?


 
smartleds   (2007-12-07 18:37) [1]

Да забыл сказать фиксированных элементов нет.


 
smartleds   (2007-12-07 18:57) [2]

Вот нашед свойство goDrawFocusSelected текущая ячейка помечается цветом , Коллеги как убрать это св-во?


 
smartleds   (2007-12-07 19:03) [3]

Я так понял этому св-ву нужно присвоить статус False
Какой там синтаксис?
StringGrid1.Options:=[goDrawFocusSelected:=false];


 
smartleds   (2007-12-07 19:19) [4]

StringGrid1.Options.goDrawFocusSelected:=false;так тоже не выходит


 
smartleds   (2007-12-07 20:24) [5]

Хоть бы ответил ктонить , что ерунду спросил?


 
Anatoly Podgoretsky ©   (2007-12-07 20:51) [6]


> StringGrid1.Options:=[goDrawFocusSelected:=false];

И что за подобное компилятор тебя не отругал.
Options это множество. Операции над множествами описаны в справке и относятся к базовым понятиям языка.


 
Германн ©   (2007-12-07 21:30) [7]


> smartleds   (07.12.07 18:32)
>
> Автоматически синим цветом выделяется элемнт таблицы StringGrid[0,
> 0]
> Если потом кликнуть мышкой на таблицу , то выделение синим
> цветом пропадает.
> Как убрать выделение синим цветом при запуске Stringgrid?
>
>

хз. Я простых способов не нашел.


 
{RASkov} ©   (2007-12-07 21:44) [8]

Что-то я не понял сути..... сегодня до меня туго доходит....(
проверте вот этот
object StringGrid1: TStringGrid
 Left = 40
 Top = 28
 Width = 337
 Height = 137
 FixedCols = 0
 FixedRows = 0
 TabOrder = 0
end

или киньте свой "проблемный" грид
Хотя у меня D7, знаю что у Германна D6, может и у автора D6 - тогда в D7 получается этот вопрос решен...
Т.е. "при старте грида" ничего выделенного нет, все ячейки "белые"...


 
Германн ©   (2007-12-07 21:56) [9]


> знаю что у Германна D6

И Д4 и BDS2006 тоже имеются, но ты прав. Это было в Д6.


 
Германн ©   (2007-12-07 22:03) [10]


>  TabOrder = 0

Не помогает. Кстати кол-во FixedXX не играет рояля.


 
{RASkov} ©   (2007-12-07 22:11) [11]

> [10] Германн ©   (07.12.07 22:03)

А как ситуация в D4 или BDS2006 ?

ЗЫ А TabOrder - я его не трогал, он "случайно" в дфм попал, так как у этого свойства дефолт -1, а в ИО оно меняется (минимум 0)


 
boa_kaa ©   (2007-12-07 22:41) [12]

StringGrid1.Options:=StringGrid1.Options - [goDrawFocusSelected];


 
smartleds   (2007-12-07 23:45) [13]

Cпасибо, но к сожалению не помогло.
А проблема такая , более детально.
Действительно когда рисуется Грид все ячейки белые,и ячейка с координатами [0,0] выделенна в еле заметную рамку, но как только я нажимаю на любую кнопку на форме выделенная в рамку ячейка автоматически закрашивается в синий цвет. Причем выделить я могу мышкой любую ячейку или даже несколько, и все они окрашиваются в синий цвет. А ао кнопке ничего не делаю , даже создал пустую кнопку все равно она влияет.

procedure TForm2.Button3Click(Sender: TObject);
var i:integer;
begin
i:=0;
end;

А Грид проинициализирован так:
StringGrid1.ColCount:=32;
StringGrid1.RowCount:=8;
StringGrid1.DefaultColWidth:=20;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.FixedCols:=0;
StringGrid1.FixedRows:=0;
form2.StringGrid1.TabOrder:=0;
StringGrid1.Options:=StringGrid1.Options-[goDrawFocusSelected];
k:=1;
for i:=0 to 7 do
  For j:=0 to 31 do
  begin
StringGrid1.Cells[j,i]:=inttostr(k);
  k:=k+1;
 end;


 
smartleds   (2007-12-07 23:45) [14]

Да использую D7


 
{RASkov} ©   (2007-12-07 23:59) [15]

> [13] smartleds   (07.12.07 23:45)
> [14] smartleds   (07.12.07 23:45)

procedure TForm1.FormCreate(Sender: TObject);
var i,j,k: Integer;
begin
 StringGrid1.ColCount:=32;
 StringGrid1.RowCount:=8;
 StringGrid1.DefaultColWidth:=20;
 StringGrid1.DefaultRowHeight:=20;
 StringGrid1.FixedCols:=0;
 StringGrid1.FixedRows:=0;
 k:=1;
 for i:=0 to 7 do
   For j:=0 to 31 do
   begin
 StringGrid1.Cells[j,i]:=inttostr(k);
   k:=k+1;
  end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
 if gdSelected in State then
  with TStringGrid(Sender), TStringGrid(Sender).Canvas do begin
   Brush.Color:=clWhite;
   FillRect(Rect);
   TextRect(Rect, Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
  end;
end;


 
{RASkov} ©   (2007-12-08 00:04) [16]

> Brush.Color:=clWhite;

Эту строку лучше замени на:
Brush.Color:=Color;
Если запутался с with то вот без него:
if not Sender is TStringGrid then Exit; //но и с with тоже нужно проверку делать
if gdSelected in State then begin
 TStringGrid(Sender).Canvas.Brush.Color:=Color;
 TStringGrid(Sender).Canvas.FillRect(Rect);
 TextRect(Rect, Rect.Left+2, Rect.Top+2, TStringGrid(Sender).Cells[ACol, ARow]);
end;


 
{RASkov} ©   (2007-12-08 00:05) [17]

> TStringGrid(Sender).Canvas.Brush.Color:=Color;

Ну конечно же
TStringGrid(Sender).Canvas.Brush.Color:=TStringGrid(Sender).Color;
Я уже сам запутался :)


 
{RASkov} ©   (2007-12-08 00:09) [18]

> TextRect(Rect, Rect.Left+2, Rect.Top+2, TStringGrid(Sender).Cells[ACol, ARow]);

В общем понятно :) TextRect - это метод канвы грида)
т.е.
TStringGrid(Sender).Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, TStringGrid(Sender).Cells[ACol, ARow]);
все ж с with это компактнее :)


 
smartleds   (2007-12-08 00:11) [19]

Что то не работает , все равно выделенная ячейка синим выделяется при нажатии любой кнопки.
Может вообще запретить выделение мышкой какой либо ячейки?


 
{RASkov} ©   (2007-12-08 00:13) [20]

> [19] smartleds   (08.12.07 00:11)
> Что то не работает , все равно выделенная ячейка синим выделяется
> при нажатии любой кнопки

Не может быть!!! В данном примере я вообще выделение убрал.....


 
{RASkov} ©   (2007-12-08 00:15) [21]

> [19] smartleds   (08.12.07 00:11)

Или тебе и ФокусРект тоже мешает???
Тогда StringGrid.DefaultDrawing = False и рисуюй грид так как тебе заблагорассудится....


 
smartleds   (2007-12-08 00:22) [22]

Вставил StringGrid1.DefaultDrawing:=false;
в инициализацию и текст пропал.

procedure TForm1.FormCreate(Sender: TObject);
var i,j,k: Integer;
begin
StringGrid1.ColCount:=32;
StringGrid1.RowCount:=8;
StringGrid1.DefaultColWidth:=20;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.FixedCols:=0;
StringGrid1.FixedRows:=0;
k:=1;
StringGrid1.DefaultDrawing:=false;<<<<<<<<<<<<< Сюда вставил
for i:=0 to 7 do
  For j:=0 to 31 do
  begin
StringGrid1.Cells[j,i]:=inttostr(k);
  k:=k+1;
 end;
end;
Грид пустой текстом не заполнился


 
{RASkov} ©   (2007-12-08 00:36) [23]

> [22] smartleds   (08.12.07 00:22)
> Вставил StringGrid1.DefaultDrawing:=false;

DefaultDrawing - это не просто так..... это говорит о том, что полностью(!) вывод грида лежит на совести программиста
Т.е. тут уже нужно учитывать все и вся за исключением самой сетки, она помоему рисуется гридом....
Так вот выставив данное свойство в ложь, ты теперь должен сам рисовать и фон ячейки и содержимое (текст)...
учитывая состояние ячейки, в этом поможет параметр State....Это хорошо у тебя нет фиксированных ячеек, а то и их пришлось бы рисовать "вручную"...
Еще раз... проверь код в [15]... возможно ты не подключил обработчик ОнДравКэлл...


 
smartleds   (2007-12-08 00:50) [24]

Не все правильно, выделения ячеек нет, только синим автоматически выделяется ячейка которая предварительно выделенна мышкой в рамке.
А те ячейки хоторые я хотел выделить красным не выделяются.
Может как то запретить выделять ячейки в рамку мышкой? Потому что потом при нажатии любой кнопки эта выделенная в рамку ячейка становится синей. Код [15] проверял два раза не выделяется только те ячейки которые я сам хочу выделить.


 
smartleds   (2007-12-08 00:57) [25]

Что интересно, нарисовал грид вижу нулевая ячейка выделена в рамку, жму кнопку
procedure TForm2.Button3Click(Sender: TObject);
var i:integer;
begin
i:=0;
end;
Она становиться синей , жму мышкой на ячейку , синева пропадает , но остается выделена в рамку, жму на соседнюю ячеку , она становимться выделенной в рамку , жму на кнопку , теперь эта соседняя ячейка становиться синей. Как избавиться от этого, чтобы этот грид стал только способом отображения инфы , и не на какие дейчтвия мышкой не реагировал?


 
{RASkov} ©   (2007-12-08 01:02) [26]

> [24, 25] smartleds   (08.12.07 00:50)

Ну не знаю.... у меня все ОК)
Можешь тестовый проект с "проблемой" кинуть на почту cemvol2005(c)smtp.ru (c) - собака, гляну.... только код - без экзешника.


 
smartleds   (2007-12-08 01:17) [27]

Отправил.


 
{RASkov} ©   (2007-12-08 01:18) [28]

> [27] smartleds   (08.12.07 01:17)

Ок. Сейчас гляну)


 
{RASkov} ©   (2007-12-08 01:32) [29]

> [27] smartleds   (08.12.07 01:17)

А вот теперь сделай как в [15] и все работает....) Я не шучу)
У тебя не срабатывает условие
if  (onezero512[index]>0) then
                           begin
.....
end;

Почему? Сам разбирайся.... :)
Ну и соответственно тот кусок кода из [15] который находится в then begin .... end "в пролете"..... отсюда и все твои беды)
Почему бы сразу не проверить код на новом пустом проекте без лишних строк кода??? Давно бы сообразил в чем дело...)
Удачи)


 
smartleds   (2007-12-08 01:34) [30]

Огромное спасибо!


 
{RASkov} ©   (2007-12-08 01:43) [31]

> [30] smartleds   (08.12.07 01:34)

У тебя везде проверка элементов этого(onezero512) массива, но нигде нет его наполнения, т.е. все элементы массива содержат 0.
Отсюда в TForm2.StringGrid1DrawCell, проверка элемента массива с любым индексом, провалена и код "стирания синего выделения" - не выполняется :(


 
smartleds   (2007-12-08 01:52) [32]

Этот массив наполняется при нажатии кнопки insert DMX Channel , элементы этого массива либо 0 либо 1, если 1 то каналы считаются занятыми, и на Гриде эти каналы должны быть выделены красным, чтобы юзер знал что у него занято , а что нет.
Массив содержит 256 байт по количеству ячеек.



Страницы: 1 вся ветка

Текущий архив: 2008.01.06;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.016 c
2-1197352608
Alexandr Malygin
2007-12-11 08:56
2008.01.06
арифметика


15-1196721863
Graf
2007-12-04 01:44
2008.01.06
Почему CopyRect так уродует картинку?


2-1197227587
alikon1
2007-12-09 22:13
2008.01.06
Удаление записей в связанных таблицах


6-1177413145
DVM
2007-04-24 15:12
2008.01.06
Почему начинает подтормаживать сервер.


15-1196676782
vajo
2007-12-03 13:13
2008.01.06
Стоит ли брать эту видеокарту?