Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос про StringGrid  (Прочитано 14362 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« : 27-05-2010 06:29 » 

Есть StringGrid у него стоит Option->goRowSelect по умолчанию синим цветом подсвечивается
При закрашивании ячеек в StringGrid это самое подсвечивание пропадает остается только контур на той ячейке на которой стоит курсор. Вопрос, как вернуть обратно подсвечивание?
в onDrawCell:
Код:
if (ARow != 0)
{
  if (CheckBox5->Checked == true)
     {
        if ( StringGrid1->Cells[4][ARow] == "Emergency")
          {
                StringGrid1->Canvas->Brush->Color       = StringToColor(Colors_mes->color1);
                StringGrid1->Canvas->Font->Color        = StringToColor(Colors_mes->text1);
          }
      //...............
     }
 int y=Rect.top+(Rect.Height()-StringGrid1->Canvas->TextHeight(StringGrid1->Cells[ACol][ARow]))/2;
 StringGrid1->Canvas->FillRect(Rect);
 StringGrid1->Canvas->TextOutA(Rect.Left+2, y, StringGrid1->Cells[ACol][ARow]);
}
После закраски и пропадает... =(
Записан

Улыбаюсь Ага
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 27-05-2010 07:11 » 

борланд не ведаю, но а есть ли что нибудь вроде
StringGrid1->Canvas->SetBkMode(TRANSPARENT)
?

это сделает фон шрифта прозрачным.
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 27-05-2010 07:22 » 

Это две разные вещи - курсор и выделение.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 27-05-2010 07:44 » 

борланд не ведаю, но а есть ли что нибудь вроде
StringGrid1->Canvas->SetBkMode(TRANSPARENT)
?

это сделает фон шрифта прозрачным.
неа, нету такого=(

Это две разные вещи - курсор и выделение.
ну когда передвигаешь что? выделение что ли.. По мне курсор, как в Екселе там же курсор который подсвечивает ту ячейку на которой стоит.
Записан

Улыбаюсь Ага
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 27-05-2010 07:57 » 

Когда перемещаешь курсор стрелками, то и выделение перемещается. Однако если скролировать колесом, то перемещается курсор, а выделение остается на месте. Так сделано в BCB...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 27-05-2010 08:43 » 

Есть еще предложения?
пробовал в событии onSeleckSell
Код:
StringGrid1->Canvas->Brush->Color = clBlue;
и просто
Код:
StringGrid1->Brush->Color = clBlue;
не выходит А черт его знает...
Записан

Улыбаюсь Ага
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 27-05-2010 08:48 » 

alex87, я шота не пойму. Ты ячейку закрашиваешь ? Закрашиваешь
 StringGrid1->Canvas->FillRect(Rect);

Текст выводишь ? Ага
StringGrid1->Canvas->TextOutA(Rect.Left+2, y, StringGrid1->Cells[ACol][ARow]);

что при этом произойдёт ?


PS либо я что-то не понимаю...
Записан

zubr
Гость
« Ответ #7 : 27-05-2010 09:06 » 

alex87, так в чем проблема. Там же в обработчике onDrawCell для выделенных ячеек устанавливай синий цвет у канваса, используя свойство Row:
Код:
if(StringGrid1->Row == ARow)
  StringGrid1->Canvas->Brush->Color = clBlue;
  else
  StringGrid1->Canvas->Brush->Color = clRed;
Записан
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 28-05-2010 01:01 » 

alex87, так в чем проблема. Там же в обработчике onDrawCell для выделенных ячеек устанавливай синий цвет у канваса, используя свойство Row:
Код:
if(StringGrid1->Row == ARow)
  StringGrid1->Canvas->Brush->Color = clBlue;
  else
  StringGrid1->Canvas->Brush->Color = clRed;
о, точно. Спасибо огромное!
Записан

Улыбаюсь Ага
alex87
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 28-05-2010 01:05 » new

alex87, я шота не пойму. Ты ячейку закрашиваешь ? Закрашиваешь
 StringGrid1->Canvas->FillRect(Rect);

Текст выводишь ? Ага
StringGrid1->Canvas->TextOutA(Rect.Left+2, y, StringGrid1->Cells[ACol][ARow]);

что при этом произойдёт ?


PS либо я что-то не понимаю...
не ячейку а полностью строку в которой значение определенного столбца совпадает с заданным.
Происходит закрашивание строки, но при этом пропадает подсвечивание выбранной ячейки.
Комрад zubr, меня понял меня, ему спасибо огромное.
Записан

Улыбаюсь Ага
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines