** Pan-SQL |
Отправлено: 22.06.2006, 11:30 |
|
Не зарегистрирован
|
Здравствуйте уважаемые участники форума. Подскажите как изменить высоту заголовков в DBGride?. Вот нашел одну статейку, но так ничего не понял. Статейка следующая :
Высота любой строки любого наследника TCustomGrid определяется свойством RowHeights[номер строки]. Так как это свойство объявлено protected, для того, чтобы высота области заголовков DBGrid'а была большая, чем стандартная, используется обычный прием доступа к защищенным свойствам компонента, с описанием наследника от требуемого класса и повышением области видимости требуемого свойства:
type
THackGrid = class(TCustomGrid)
public
property RowHeights;
end;
Высоту области надо задать один раз, что и делается в обработчике события FormShow
procedure TForm1.FormShow(Sender: TObject);
var
....
H : Integer;
{ Определение необходимой высоты строки для многострочных заголовков }
H := DbGrid1.Canvas.TextHeight('gW');
THackGrid(DBGrid1).RowHeights[0] := (H + 2) * RowCount; { RowCount
принудительно объявлено 2 }
end;
|
|
olegenty |
Отправлено: 22.06.2006, 11:43 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а что конкретно не понятно-то?
|
|
** Pan-SQL |
Отправлено: 22.06.2006, 11:59 |
|
Не зарегистрирован
|
Я так понял,нужно создать наследника TCustomGrid |
|
AVC |
Отправлено: 22.06.2006, 12:05 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Можете так,
CODE |
class tmpDBGrid : TDBGrid
{public: void __fastcall SetRow0Height (int);
};
void __fastcall tmpDBGrid::SetRow0Height (int newH)
{ TCustomGrid::RowHeights [0] = newH;
}
void __fastcall TForm1::Button10Click(TObject *Sender)
{ // пример использования
static int H = 12;
((tmpDBGrid*)DBGrid3)->SetRow0Height(++H);
}
|
Но этот способ очень нестабилен. Лучше сделать своего наследника от ??Grid'а и там перекрыть метод LayoutChanged
Например так
CODE |
void __fastcall TDBGridM::LayoutChanged (void)
{
if (LayoutLock == 1 && Options.Contains(dgTitles) && FTitleLines > 1)
RowHeights[0] = FTitleLines * (Canvas->TextHeight("Gg") + 4);
inherited::LayoutChanged();
}
| |
|
** Pan-SQL |
Отправлено: 22.06.2006, 12:06 |
|
Не зарегистрирован
|
В каом месте необходимо писать следующие строки:
type
THackGrid = class(TCustomGrid)
public
property RowHeights;
end |
|
AVC |
Отправлено: 22.06.2006, 12:36 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (** Pan-SQL @ 22/06/2006, 11:06) | В каом месте необходимо писать следующие строки:
type
THackGrid = class(TCustomGrid)
public
property RowHeights;
end |
В паскале |
|