Автор: samusev
Дата сообщения: 21.11.2006 18:30
Простите за назойливость - есть еще задача.
Проект ДевЭкс сентябрьские+BSD2006
Грид содержит большое кол-во колонок с "полнозвучными" заголовками которые просто просятся нарисоваться вертикально.
Нашел на офф сайте Девок такой код
procedure TfmMainForm.cxDailyOpGridDBTableView1_Колонка_CustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
Size: TSize;
OldFont, LogFont: TLogFont;
ARect: TRect;
AFilterRect: TRect;
I: Integer;
AButtonState: TcxButtonState;
begin
with AViewInfo do
begin
GetObject(ACanvas.Font.Handle, SizeOf(OldFont), @OldFont);
LogFont := OldFont;
with LogFont do
begin
lfEscapement := 900;
lfOrientation := lfEscapement;
lfOutPrecision := OUT_TT_ONLY_PRECIS;
end;
ACanvas.Font.Handle := CreateFontIndirect(LogFont);
GetTextExtentPoint32(ACanvas.Handle, PChar(Text), Length(Text), Size);
ARect := Bounds;
if Size.cx > ARect.Bottom - ARect.Top then
begin
ACanvas.Font.Handle := CreateFontIndirect(OldFont);
Exit;
end;
AButtonState := cxbsNormal;
with TcxGridColumnHeaderViewInfoAccess(AviewInfo) do
for I := 0 to AreaViewInfoCount - 1 do
if AreaViewInfos[I] is TcxGridColumnHeaderFilterButtonViewInfo then
begin
AFilterRect := TcxGridColumnHeaderFilterButtonViewInfo(AreaViewInfos[I]).Bounds;
AButtonState := TcxGridColumnHeaderFilterButtonViewInfo(AreaViewInfos[I]).ButtonState;
Break;
end;
Sender.Painter.LookAndFeelPainter.DrawHeader(ACanvas,
Bounds, ARect, Neighbors, Borders, cxbsNormal, taCenter,
TcxAlignmentVert(vaCenter),
False, False, '', ACanvas.Font, clNone, Color);
with ARect do
begin
Left := (Left + AFilterRect.Left - Size.cy) div 2;
Right := Left + Size.cy;
Bottom := (Bottom + Top + Size.cx) div 2; // << center vertical alignment
Top := Bottom - Size.cx;
end;
ACanvas.Canvas.TextRect(ARect, ARect.Left, ARect.Bottom, Column.Caption);
Sender.Painter.LookAndFeelPainter.DrawFilterDropDownButton(ACanvas,
AFilterRect, AButtonState, AViewInfo.Column.Filtered);
ADone := True;
end;
end;
Работает сносно , НО только для колоной у которых есть кнопка фильтрации. С другими ни как.
Подскажите решение...