IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Работа с Tstringgrid, Изменение стиля текста в TStringGrid
сообщение
Сообщение #1


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Подскажите как изменить (пример - сделать жирным) текст в заголовках колонок таблицы TStringGrid?

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

Сообщение отредактировано: APAL -


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской

Репутация: -  -1  +


APAL

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

Сообщение отредактировано: KRUTOY -


--------------------
Главное - чтобы воля была, к победе...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цитата(KRUTOY @ 12.04.04 19:08)
APAL

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

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

Вроде мелочь, но я замучился с ней... smile.gif


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Только теперь другая проблема...

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


Код
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;


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской

Репутация: -  -1  +


Да, проблемка, попробуй что-нибудь с Canvas-ом:
Tab1.Canvas.textout...или textrect(cellsrect(0,0),0,0,'hsgjkfsk');
Tab1.Canvas.Font.Style...

Сообщение отредактировано: KRUTOY -


--------------------
Главное - чтобы воля была, к победе...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Еще есть какие нибудь идеи???


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


Попробуй запихать смену шрифта в обработчик OnDrawCell, в зависимости от координаты
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Искал, читал, так и не понял как это реализовать.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской

Репутация: -  -1  +


Попробуй этот код!!!!!! МОжно даже разными цветами!!
я думаю,для себя приспособишь...
в цикле 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.


Сообщение отредактировано: KRUTOY -


--------------------
Главное - чтобы воля была, к победе...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Спасибо, KRUTOY!
Немного подкорректировал и все заработало как надо!


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской

Репутация: -  -1  +


Без моргания??


--------------------
Главное - чтобы воля была, к победе...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Никакого моргания не наблюдаю...

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

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;


Сообщение отредактировано: APAL -


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской

Репутация: -  -1  +


тоже столкнулся с этой проблемой, только при появлении скролла Stringgrid-a
отрисовка глючит, надо свой обработчик писать... sad.gif


--------------------
Главное - чтобы воля была, к победе...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


А вот скролл я еще не испытывал... :o


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской

Репутация: -  -1  +


надо вместо TextOut использовать:
 SG.Canvas.TextRect(SG.CellRect(0,0),SG.CellRect(0,0).left+ch,
        SG.CellRect(0,0).top+ch,'S');


--------------------
Главное - чтобы воля была, к победе...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 12:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name