C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Убрать выделение ячейки в StringGrid  (Прочитано 2584 раз)
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


« : 12 Январь 2019, 21:26:41 »

Доброго времени суток
имеется кодик
Код
//---------------------------------------------------------------------------
 
#include
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class TMyGrid : public TCustomGrid
{
public:
  using TCustomGrid::InvalidateCell;
  using TCustomGrid::InvalidateRow;
  using TCustomGrid::InvalidateCol;
};
TColor MyColor;
int i;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 MyColor = clRed;
 reinterpret_cast<TMyGrid*>(Grid1)->InvalidateCell(3,2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Grid1DrawCell(TObject *Sender, int ACol, int ARow,
     TRect &Rect, TGridDrawState State)
{
Grid1->Canvas->Brush->Color = MyColor;
i++;
Edit1->Text = IntToStr(i);
String text = Grid1->Cells[ACol][ARow];
 
//Ðèñóåì ôèêñèðîâàííûå ÿ÷åéêè:
//if(State.Contains(gdFixed))
//{
   Grid1->Canvas->Font->Color = clYellow;                  //Öâåò øðèôòà (ñèíèé)
   Grid1->Canvas->Font->Style = TFontStyles() << fsBold; //Æèðíûé øðèôò
   Grid1->Canvas->Font->Size  = 10;                      //Ðàçìåð øðèôòà
//}
 
Grid1->Canvas->FillRect(Rect);
// Âûðàâíèâàåì òåêñò ïî öåíòðó:
Grid1->Canvas->TextOut(Rect.Left + (Rect.Width() - Grid1->Canvas->TextWidth(text))/2,
Rect.Top + (Rect.Height() - Grid1->Canvas->TextHeight(text))/2, text);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
MyColor = clBlue;
for (int i=1; i<5; i++)
for (int j=1; j<5; j++)
Grid1->Cells[i][j] = IntToStr(i+j*10);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Grid1SelectCell(TObject *Sender, int ACol,
     int ARow, bool &CanSelect)
{
   CanSelect = false;
}
//---------------------------------------------------------------------------
 
где Grid1 это компонент класса TStringGrid. Не могу понять как удалить выделение ячейки [1][1] после того как нажал на Button1 и потом как бы случайно щелкнул по сетке. С заранее спасибо.
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2136

S0mbre


« Ответ #1 : 07 Февраль 2019, 14:08:11 »

Там вроде есть метод ClearSelections() - если мне память не изменяет... Посмотрите доки.

PS. Код вызывает сомнения. Приводить TStringGrid к своему потомку TCustomGrid через reinterpret_cast неправильно, это нарушает принципы инкапсуляции и классовой иерархии. Лучше наследуйте сразу от TCustomGrid или TStringGrid и этот компонент применяйте.
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


« Ответ #2 : 04 Апрель 2019, 20:27:16 »

Ну не знаю... Так великий volvo посоветовал сделать. Думаю его все знают.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.061 секунд. Запросов: 22.