Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как со StringGrid убрать любые выделения текущий ячейки

5.3K
07 декабря 2004 года
Duch
7 / / 21.04.2004
(Borland C++ Builder)
Дело в том, что StringGrid при потере фокуса свою активную ячейку выделяет синим фоном (от этого я избавился с помощь обрабатывания OnDrawCell), а при получении фокуса компонентом, активная ячейка обводиться пунктирной рамкой (а вот от этого я никак избавиться не могу!!!).
Решение нашел: сделал грид вообще дисабл (поскольку мне от грида надо PopupMenyu, которое я теперь поцепил на панель лежащию под гридом), но сами понимаете, что это изврат, и тем более мне когда нибудь всетаки понадобится делать грид enable, и эта проблема опять встанет передомной.
Подскажите как убрать с активной ячейки пунктирную рамку?
С уважением, Duch.
259
07 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Duch
(Borland C++ Builder)
Дело в том, что StringGrid при потере фокуса свою активную ячейку выделяет синим фоном (от этого я избавился с помощь обрабатывания OnDrawCell), а при получении фокуса компонентом, активная ячейка обводиться пунктирной рамкой (а вот от этого я никак избавиться не могу!!!).
Решение нашел: сделал грид вообще дисабл (поскольку мне от грида надо PopupMenyu, которое я теперь поцепил на панель лежащию под гридом), но сами понимаете, что это изврат, и тем более мне когда нибудь всетаки понадобится делать грид enable, и эта проблема опять встанет передомной.
Подскажите как убрать с активной ячейки пунктирную рамку?
С уважением, Duch.



Так на вскидку в OnDrawCell рисуй прямоугольник ц цветом линии == фону ячейки. Вот примерчик наподебее, правда я не рамку рисую а ввод даты организую, но похоже:

Код:
[COLOR=blue]
//Dates - TstringGrid
//DateEdit1 - TDateTimePicker
void __fastcall T_FAddFirm::DatesDrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
    if(ACol == 1)
    {
        if(State.Contains(gdSelected))
        {
            DateEdit1->Left = Dates->Left+Rect.Left+3;
            DateEdit1->Top = Dates->Top+Rect.Top+3;
            DateEdit1->Height = Rect.Height();
            DateEdit1->Width = Rect.Width();
            DateEdit1->Text = Dates->Cells[ACol][ARow];
            DateEdit1->Visible = true;
        }
        else
        {
            DateEdit1->Visible = false;
        }
    }
    else
        DateEdit1->Visible = false;
}
[/COLOR]
26K
23 ноября 2013 года
pitpro
2 / / 11.11.2007
Цитата:
...как убрать с активной ячейки пунктирную рамку?


Нашел обход этой проблемы. Пунктир рисуется на ячейке, когда таблица получает фокус. Соответственно чтобы от него избавиться, надо в обработчике OnSelectCell или OnMouseDown переключить фокус на другой элемент, например форму под ней.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог