Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];

Вниз

Подскажите плз как убрать выделение ячейки у 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.005 c
4-1179382172
Pearled
2007-05-17 10:09
2008.01.06
Помогите с NetShareGetInfo()


2-1196877967
Student00
2007-12-05 21:06
2008.01.06
Строка таблицы - как кнопка


6-1177420044
tytus
2007-04-24 17:07
2008.01.06
idTCPClient 10 в длл - как проверить коннект?


15-1196771663
Игорь Шевченко
2007-12-04 15:34
2008.01.06
Новости CodeGear, Декабрь 2007


15-1196715422
барбос в тапочках
2007-12-03 23:57
2008.01.06
анимэ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский