Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определенный текст в определенной ячейке 
V
    Опции темы
Alexey91
Дата 25.5.2011, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Можно ли выделить в StringGrid'e определенные символы (т.е. не все) в какой-нибудь ячейке StringGrid'a?
PM   Вверх
srt
Дата 25.5.2011, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



брось классику
пиши сам или используй разумное - JEDI Visual Component Library
PM MAIL   Вверх
Usper
Дата 26.5.2011, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что вы имеете ввиду? Выделить вручную? Или другим цветом программно? Или...?


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Alexey91
Дата 26.5.2011, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Usper, таблица содержит некоторую информацию.
И мне нужно определенным цветом эту информацию выделить. (По аналогии с тем, как в RE выделялись различным цветом определенные куски текста, т.е. программно)
Но если использовать OnDrawCell, то мы сможем залить всю ячейку. А мне нужно выделить ну например синим цветом 
определенную ЧАСТЬ текста, в определенной ячейке

Это сообщение отредактировал(а) Alexey91 - 26.5.2011, 13:24
PM   Вверх
Usper
Дата 26.5.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В этом обработчике можно в ячейку не только писать всё-что угодно, но и рисовать всё что угодно. Я в, своё время, там реализовывал подстрочный индекс и даже рисовал стрелочки smile. Я это делал с помощью служебных символов, как-то так:
Код

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
    int x, y;
    AnsiString S;
    S = StringGrid1->Cells[ACol][ARow];
    x = Rect.left + 1; //начинаем вывод текста от левого края ячейки, отступив 1 пиксель
    y = Rect.top + Rect.Height()/2 - StringGrid1->Canvas->TextHeight(S)/2; //центрируем текст по вертикали, возможна нехорошая ситуация, когда y будет меньше нуля, надо дополнительно это проверять
    if(State.Contains(gdFixed)) StringGrid1->Canvas->Brush->Color = StringGrid1->FixedColor;
    else StringGrid1->Canvas->Brush->Color = clWindow;
    StringGrid1->Canvas->FillRect(Rect);
    StringGrid1->Canvas->Font->Color = clBlack;
    for(int i = 1; i <= S.Length(); i++)
    {
     if(S[i] == '@')   //если повстречали символ '@' то выводим надписи красным цветом
        {
         StringGrid1->Canvas->Font->Color = clRed;
            continue;
        }
        if(S[i] == '#')  //а если повстречали '#' обратно возвращем чёрный цвет надписей
        {
         StringGrid1->Canvas->Font->Color = clBlack;
            continue;
        }
        StringGrid1->Canvas->TextOutA(x, y, S[i]);
        x += StringGrid1->Canvas->TextWidth(S[i]);
    }

}

Но у предложенного способа есть недостатки: надо занимать некоторые символы под служебную информацию (хотя можно использовать не символы, а что-то вроде эскейп-последовательностей или тегов), при доступности редактирования содержимого ячеек таблицы пользователем, при редактировании он увидит эти самые служебные символы. 


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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