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

Ваш аккаунт

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

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

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

Объединение ячеек в StringGrid

9.0K
08 декабря 2006 года
j_anna
45 / / 10.07.2006
у меня мышью можно выделить несколько ячеек в StringGrid, но, выделяя другие ячейки, объединение предыдущих пропадает. Как это обойти?
Код:
TGridCoord gc;
...
void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
gc=StringGrid1->MouseCoord(X,Y);
Rect1 = StringGrid1->CellRect(gc.X, gc.Y);
}
//------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  long Column, Row;
  StringGrid1->MouseToCell(X, Y, Column, Row);
  gc=StringGrid1->MouseCoord(X,Y);
Rect2 = StringGrid1->CellRect(gc.X, gc.Y);
 Caption="caption";
::UnionRect(&Rect, &Rect1, &Rect2);
StringGrid1->Canvas->Brush->Color = StringGrid1->FixedColor;
StringGrid1->Canvas->FillRect(Rect);
Frame3D(StringGrid1->Canvas, Rect, clBtnHighlight, clWindowFrame, 1);
CaptionLength = Caption.Length();
::SetBkMode(StringGrid1->Canvas->Handle, TRANSPARENT );
::DrawText(StringGrid1->Canvas->Handle, Caption.c_str(), CaptionLength, &Rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
}
246
09 декабря 2006 года
GIZMO
1.8K / / 30.07.2004
Цитата: j_anna
у меня мышью можно выделить несколько ячеек в StringGrid, но, выделяя другие ячейки, объединение предыдущих пропадает. Как это обойти?
Код:
TGridCoord gc;
...
void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
gc=StringGrid1->MouseCoord(X,Y);
Rect1 = StringGrid1->CellRect(gc.X, gc.Y);
}
//------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  long Column, Row;
  StringGrid1->MouseToCell(X, Y, Column, Row);
  gc=StringGrid1->MouseCoord(X,Y);
Rect2 = StringGrid1->CellRect(gc.X, gc.Y);
 Caption="caption";
::UnionRect(&Rect, &Rect1, &Rect2);
StringGrid1->Canvas->Brush->Color = StringGrid1->FixedColor;
StringGrid1->Canvas->FillRect(Rect);
Frame3D(StringGrid1->Canvas, Rect, clBtnHighlight, clWindowFrame, 1);
CaptionLength = Caption.Length();
::SetBkMode(StringGrid1->Canvas->Handle, TRANSPARENT );
::DrawText(StringGrid1->Canvas->Handle, Caption.c_str(), CaptionLength, &Rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
}


1. Запоминать где-нибудь выделенные ячейки (напр. StringGrid1->Objects[col][row]...)
2. В обработчике OnDrawCell их отрисовывать

9.0K
11 декабря 2006 года
j_anna
45 / / 10.07.2006
что-то с Objects у меня тоже никак ...
по идее, получается, что нужно запоминать несколько значений о:
превом объединении ячеек, их координатах(left,top.right,bottom),текст;
втором объединении ячеек, их координатах(left,top.right,bottom),текст;
...
последнем объединении ячеек, их координатах(left,top.right,bottom),текст;

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