![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вертикальные надписи в StringGrid
KIR © (2005-03-01 12:07:00)Народ, подскажите, как вывести содержимое строки StringGrid'а вертикально?
KIR (2005-03-02 11:34:00) [1]Делаю так:
Canv.Brush.Style := bsClear;
FillChar(lf, SizeOf(lf), Byte(0));
lf.lfHeight := -11;
lf.lfEscapement := 10 * 45;
lf.lfOrientation := 10 * 45;
lf.lfCharSet := DEFAULT_CHARSET;
lf.lfFaceName := 'MS Sans Serif';
Canv.Font.Handle := CreateFontIndirect(lf);
и ничего не меняется...
Делаю так:
...
lf.lfHeight := 15;
...
И вижу маленький кусок текста в верхнем левом углу ячейки под углом 45 градсов...
clickmaker (2005-03-02 11:20:00) [2]
> KIR (02.03.05 10:16) [11]
а где имя шрифта? lfFaceName
KIR (2005-03-02 10:16:00) [3]Точнее так:
...
lf.lfEscapement := 10 * 45;
lf.lfOrientation := 10 * 45;...
KIR (2005-03-01 17:13:00) [4]Делаю так:
procedure TRepForm.StringGrid2DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
Canv: TCanvas;
S: String;
lf: LOGFONT;
al: UINT;
begin
Canv := TStringGrid(Sender).Canvas;
S := TStringGrid(Sender).Cells[ACol,ARow];
Canv.FillRect(Rect);
al := DT_CENTER;
If ARow = 0 then
begin
Canv.Brush.Style := bsClear;
FillChar(lf, SizeOf(lf), Byte(0));
lf.lfHeight := 11;
lf.lfEscapement := 10 * 90;
lf.lfOrientation := 10 * 90;
lf.lfCharSet := DEFAULT_CHARSET;
Canv.Font.Handle := CreateFontIndirect(lf);
end;
DrawTextEx(Canv.Handle, PChar(S),-1,Rect,al,nil);
end;
А результата нет... в чем беда?
begin...end (2005-03-01 16:03:00) [5]> KIR (01.03.05 16:02) [8]
FillChar(lf, SizeOf(lf), 0) или ZeroMemory(@lf, sizeof(lf))
KIR (2005-03-01 16:02:00) [6]Так как же правильно написать в итоге? Если не сложно, можно прям в моем примере поправить...
clickmaker (2005-03-01 15:56:00) [7]
> FillChar(Addr(lf), SizeOf(lf), Byte(0)); //constant object
> cannot be passed as var parametr
не надо тут Addr
если уж по адресу, то так
ZeroMemory(@lf, sizeof(LOGFONT));
KIR (2005-03-01 15:13:00) [8]Что-то не выходит, хотя пример взят из справки D7...
KIR (2005-03-01 15:11:00) [9]procedure TRepForm.StringGrid2DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
Canv: TCanvas;
S: String;
lf: LOGFONT;
al: UINT;
begin
Canv := TStringGrid(Sender).Canvas;
S := TStringGrid(Sender).Cells[ACol,ARow];
Canv.FillRect(Rect);
al := DT_LEFT or DT_WORDBREAK or DT_END_ELLIPSIS or DT_NOPREFIX;
If ARow = 0 then
begin
Canv.Brush.Style := bsClear;
FillChar(Addr(lf), SizeOf(lf), Byte(0)); //constant object cannot be passed as var parametr
lf.lfHeight := 20;
lf.lfEscapement := 10 * 45;
lf.lfOrientation := 10 * 45;
lf.lfCharSet := DEFAULT_CHARSET;
Canv.Font.Handle := CreateFontIndirect(Addr(lf));
end;
DrawTextEx(Canv.Handle, PChar(S),-1,Rect,al,nil);
end;
KIR (2005-03-01 12:29:00) [10]спас!
clickmaker (2005-03-01 12:20:00) [11]CreateFontIndirect
logfont.lfOrientation
KIR (2005-03-01 12:16:00) [12]Можно чуть подробнее про ориентацию. Где ее выставлять?
clickmaker (2005-03-01 12:09:00) [13]OnDrawCell
ставишь нужную ориентацию и рисуешь текст сам