Форум: "Начинающим";
Текущий архив: 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