Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с Tstringgrid
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
APAL
Подскажите как изменить (пример - сделать жирным) текст в заголовках колонок таблицы TStringGrid?

Нашел вроде бы
Tabl.Cells.Canvas.Font.Style:=[fsBold]; - да не работает... sad.gif
KRUTOY
APAL

stringgrid1.Font.Style:=[fsBold];
а в Cells надо указывать номер строки и столбца: Cells[i,j]
APAL
Цитата(KRUTOY @ 12.04.04 19:08)
APAL

stringgrid1.Font.Style:=[fsBold];
а в Cells надо указывать номер строки и столбца: Cells[i,j]

Спасибо! Работает!

Вроде мелочь, но я замучился с ней... smile.gif
APAL
Только теперь другая проблема...

Жирный шрифт нужен был для заголовков колонок - он им и становиться, но после возврата предидущего стиля заголовки опять стандартного стиля.
Как сделать раздельное определение стиля на разные ячейки, а не на всю таблицу целиком?


Код
procedure TfMain.TablEnter(Sender: TObject);
Var
 Style: TFontStyles;
begin
 Style := Tabl.Font.Style;  // Получение стиля текущего шрифта.
 Tabl.Font.Style:=[fsBold];
 Tabl.Cells[0,0]:='Дата';
 Tabl.Cells[1,0]:='Время';
 Tabl.Cells[2,0]:='№ документа';
 Tabl.Cells[3,0]:='Документ';
 Tabl.Cells[4,0]:='Сумма';
 Tabl.Cells[5,0]:='Получатель';
 Tabl.Cells[6,0]:='Поставщик';
 Tabl.Cells[7,0]:='Информация';
{ Tabl.Font.Style:=Style;      }
end;
KRUTOY
Да, проблемка, попробуй что-нибудь с Canvas-ом:
Tab1.Canvas.textout...или textrect(cellsrect(0,0),0,0,'hsgjkfsk');
Tab1.Canvas.Font.Style...
APAL
Еще есть какие нибудь идеи???
P@sh@
Попробуй запихать смену шрифта в обработчик OnDrawCell, в зависимости от координаты
APAL
Искал, читал, так и не понял как это реализовать.
KRUTOY
Попробуй этот код!!!!!! МОжно даже разными цветами!!
я думаю,для себя приспособишь...
в цикле if...then параметр смени;
запускай,кликай по Stringgrid-у rolleyes.gif
Код
type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
   procedure StringGrid1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
const
 CharOffset = 3;
begin
 with StringGrid1.canvas do
 begin
   if  State=[gdFixed]then
   begin
   font.color := clMaroon;
   font.Style:=[fsBold];
   textout(rect.left + CharOffset, rect.top + CharOffset, 'Lloyd');
     font.color := clNavy;
   font.Style:=[];
   textout(rect.left + CharOffset + TextWidth('L'),
     rect.top + CharOffset, 'loyd');
 end
   else

 end;

end;

procedure TForm1.StringGrid1Click(Sender: TObject);
begin
Stringgrid1.Font.Style:=[];
Stringgrid1.Cells[2,2]:='kruto';
Stringgrid1.Cells[3,3]:='офонареть';
end;

end.
APAL
Спасибо, KRUTOY!
Немного подкорректировал и все заработало как надо!
KRUTOY
Без моргания??
APAL
Никакого моргания не наблюдаю...

Привожу итоговый код:
Код

procedure TfMain.TablEnter(Sender: TObject);
begin
 Tabl.Cells[0,0]:='Дата';
 Tabl.Cells[1,0]:='Время';
 Tabl.Cells[2,0]:='№ документа';
 Tabl.Cells[3,0]:='Документ';
 Tabl.Cells[4,0]:='Сумма';
 Tabl.Cells[5,0]:='Получатель';
 Tabl.Cells[6,0]:='Поставщик';

 Tabl.Cells[0,1]:='Информация';
 Tabl.Cells[1,1]:='Информация';
 Tabl.Rowcount:=Tabl.Rowcount+1;
 Tabl.Cells[0,2]:='Информация';
 Tabl.Cells[1,2]:='Информация';
 Tabl.Rowcount:=Tabl.Rowcount+1;
 Tabl.Cells[0,3]:='Информация';
 Tabl.Cells[1,3]:='Информация';
 Tabl.Rowcount:=Tabl.Rowcount+1;
 Tabl.Cells[0,4]:='Информация';
 Tabl.Cells[1,4]:='Информация';
 Tabl.Rowcount:=Tabl.Rowcount+1;
 Tabl.Cells[0,5]:='Информация';
 Tabl.Cells[1,5]:='Информация';

end;

procedure TfMain.TablDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
const
CharOffset = 2;
begin

With TStringGrid(Sender),TStringGrid(Sender).Canvas Do
 Begin
  IF (Odd(ARow)) then
    Brush.Color:=$f7f9fc else If ARow<>0 then Brush.Color:=Cl3Dlight;
  IF ARow<>0 then FillRect(Rect);
  TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol,ARow]);
 End;

with Tabl.canvas do
begin
  if  State=[gdFixed]then
  begin
    font.Style:=[fsBold];
    textout(rect.left + CharOffset, rect.top + CharOffset,
        Tabl.Cells[ACol,Arow]);
  end
    else
  font.Style:=[fsBold];
end;
end;
KRUTOY
тоже столкнулся с этой проблемой, только при появлении скролла Stringgrid-a
отрисовка глючит, надо свой обработчик писать... sad.gif
APAL
А вот скролл я еще не испытывал... :o
KRUTOY
надо вместо TextOut использовать:
 SG.Canvas.TextRect(SG.CellRect(0,0),SG.CellRect(0,0).left+ch,
        SG.CellRect(0,0).top+ch,'S');
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.