Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> StringGrid, Как убрать подсветку области? 
:(
    Опции темы
Digo
  Дата 12.10.2004, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 30.9.2004
Где: Ростов на Дону

Репутация: нет
Всего: нет



У меня на форме несколько StringGrid - ов и в каждом подсвечено по одной ячейке. Они используются для вывода и поэтому подсветка портит внешний вид. Можно ли убрать это выделение. Спасибо.
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс )
PM MAIL WWW ICQ   Вверх
x77
Дата 12.10.2004, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



штатными средствами - нельзя. извратами - можно, но, мне кажется, не нужно. если в гридах используется всего одна ячейка, то какой вообще смысл использовать гриды? может, стоит подыскать чего попроще, Label, Panel, PaintBox в конце-концов.
Добавлено @ 17:38
Pakshin A. S., коллега, вы бредите smile.gif

здесь проблема не в отрисовке ячейки. вместо всего, что вы написали достаточно убрать из StringGrid1.Options goDrawFocusSelected - эффект будет тот же.

здесь проблема в самой винде, которая при потере контролом фокуса выделяет его цветом. в некоторых контролах это обходится установкой свойства HideSelection, но в StringGrid'е такого свойства просто нет.

протесть сам свой код на двух гридах. на одном он будет работать, а на двух в момент смены активного контрола опять появится выделение.
Добавлено @ 17:40
эк оно проглючило adv/wow.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 12.10.2004, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Создаем событие OnDrawCell
Код

var
Col:integer absolute ACol;
Row: integer absolute ARow;
Buf: array[byte] of char;
begin
if (gdFixed in State) then Exit;
with StringGrid1 do begin
 Canvas.Font:=Font;
 Canvas.Font.Color:=clWindowText;
 Canvas.Brush.Color:=clWindow;
 canvas.FillRect(Rect);
 StrPCopy(buf, Clls[ACol, ARow]);
 DrawText(canvas.Handle, Buf, -1, Rect, DT_SENGLELINE or DT_VCENTER or DT_NOCLIP or DT_LEFT);
end;
end;


Это сообщение отредактировал(а) Pakshin A. S. - 12.10.2004, 17:34
PM   Вверх
Pakshin A. S.
Дата 12.10.2004, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Цитата(x77 @ 12.10.2004, 18:33)
эк оно проглючило 

Меня?
Может, но этот код небходим: при Options goDrawFocusSelected;=false при появлении формы первая ячейка будет выделенной!!! Мой код убирает её выделение...
PM   Вверх
x77
Дата 12.10.2004, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Pakshin A. S., да нет, проглючило форум. посмотри на время постингов, я писал после тебя, а сообщения легли до тебя.

не будет она выделенной. а вот при потере фокуса - станет выделенной, хоть с твоим кодом, хоть без него.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 12.10.2004, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Цитата(x77 @ 12.10.2004, 19:53)
проглючило форум.

А, по-моему, всё в порядке: после первого поста не прошло десять минут...
PM   Вверх
Digo
Дата 12.10.2004, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 30.9.2004
Где: Ростов на Дону

Репутация: нет
Всего: нет



x77 - я гирдами пользуюсь потому что нужно много данных выводить.
StringGrid1.Options goDrawFocusSelected:=false у меня стоит по умолчанию, конечно если таблица активна выделение пропадает, но от этого не легче sad.gif

Pakshin A. S. В твоем коде выводится ошибка на StrPCopy(buf, Clls[ACol, ARow]); Это наверное Cells?
и в DT_SENGLELINE наверно DT_SINGLELINE... На одной выделение пропадает на 2 и более нет.
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс )
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 12.10.2004, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Верно, просто спешил... sad.gif
PM   Вверх
x77
Дата 12.10.2004, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Digo, а если взять тот же TListView?


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
p0s0l
Дата 12.10.2004, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата
На одной выделение пропадает на 2 и более нет.
Странно, но код Pakshin A. S. у меня с несколькими гридами нормально работает, только надо DefaultDrawing := false у всех гридов...



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 12.10.2004, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Ан нет, поспешил я smile.gif - там его дорабатывать надо...
Можно так попробовать:
Код

procedure MyProc(S : TStringGrid);
var gr : TGridRect;
begin
 FillChar (gr, SizeOf(gr), -1);
 S.Selection := gr;
end;

procedure TForm1.StringGrid1Exit(Sender: TObject);
begin
 MyProc (Sender as TStringGrid);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MyProc (StringGrid1);
 MyProc (StringGrid2);
...
end;
Т.е. вешаем на OnExit обработчик (единый для всех гридов) и в OnCreate формы убираем выделение...

Чуть не забыл:
goRangeSelect = False,
goDrawFocusSlected = False,
goRowSelect = False


Это сообщение отредактировал(а) p0s0l - 12.10.2004, 23:30


--------------------
С уважением, г-н Посол.
PM   Вверх
Digo
Дата 13.10.2004, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 30.9.2004
Где: Ростов на Дону

Репутация: нет
Всего: нет



Спасибо всем за помощь thumbs-up.gif
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс )
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0757 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.