Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2008, 02:23   #11
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Главное это сделать надо в обработчике OnDrawCell и текст потом снова вывести
Код:
  StringGrid.Canvas.Brush.Color:=clRed;
  StringGrid.Canvas.FillRect(Rect);
  StringGrid.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid.Cells[ACol,ARow]);
eoln вне форума Ответить с цитированием
Старый 11.07.2008, 02:38   #12
zzzzz
Пользователь
 
Регистрация: 25.05.2007
Сообщений: 69
По умолчанию

можете пожалуйста пример кода написать, а то оно у меня нужную ячейку полностью закрашивает, а в (0,0) вставляет моё значение на цветном фоне так как и должно быть. И ещё одна запара, после того как закрашивает ячейку, то любая ячейка на которую бы я не кликнул, она становится цветная!!!!
zzzzz вне форума Ответить с цитированием
Старый 11.07.2008, 02:42   #13
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

показывай свой код.
_Engine_ вне форума Ответить с цитированием
Старый 11.07.2008, 02:48   #14
zzzzz
Пользователь
 
Регистрация: 25.05.2007
Сообщений: 69
По умолчанию

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin

if strtoint(stringgrid1.Cells[2,2]) > 0 then begin
stringgrid1.canvas.Brush.Color:=clG reen;
stringgrid1.canvas.FillRect(rect);
stringgrid1.Canvas.TextOut(5,5,stri nggrid1.Cells[2,2]); end;
end;
zzzzz вне форума Ответить с цитированием
Старый 11.07.2008, 02:56   #15
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Код:
with StringGrid1 do
begin
  if strtoint(Cells[ACol,ARow]) > 0 then 
  begin
    canvas.Brush.Color:=clGreen;
    canvas.FillRect(rect);
    canvas.TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]);  
  end
end;
_Engine_ вне форума Ответить с цитированием
Старый 11.07.2008, 03:04   #16
zzzzz
Пользователь
 
Регистрация: 25.05.2007
Сообщений: 69
По умолчанию

спасиб!!!!помог!!!
zzzzz вне форума Ответить с цитированием
Старый 13.07.2008, 00:31   #17
zzzzz
Пользователь
 
Регистрация: 25.05.2007
Сообщений: 69
По умолчанию

А можно в Stringgrid сделать в некоторых ячейках допустим текст жирный, а в некоторых нет??????
zzzzz вне форума Ответить с цитированием
Старый 13.07.2008, 01:36   #18
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Canvas.Font.Style:=Canvas.Font.Styl e+[fsBold];
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 14.07.2008, 00:25   #19
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

вот тебе пример еще:
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; 
Rect: TRect; State: TGridDrawState); 
Const   //сдесь определяем Ваш цвет. Так же можно использовать 
       //цвета по умолчанию. 
clPaleGreen = TColor($CCFFCC); 
clPaleRed =   TColor($CCCCFF); 
begin 
//Если ячейка получает фокус, то нам надо закрасить её другими цветами 
if (gdFocused in State) then begin     
  StringGrid1.Canvas.Brush.Color := clBlack; 
  StringGrid1.Canvas.Font.Color := clWhite; 
end 
else //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным 
  if ACol = 2   //Вторая колонка будет зелёной , другие - ячейки красными 
   then StringGrid1.Canvas.Brush.color := clPaleGreen 
   else StringGrid1.canvas.brush.Color := clPaleRed; 
//Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column 
//Естевственно это завит от того, есть у Вас title-Row/Columns или нет. 
If (ACol > 0) and (ARow>0) then 
begin 
     //Закрашиваем бэкграунд 
   StringGrid1.canvas.fillRect(Rect); 
     //Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д.. 
StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]); end; 

end;
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросик про ООП!!! R@mec Общие вопросы C/C++ 2 22.08.2008 13:38
вопросик по оформлению shmelvs Microsoft Office Excel 3 24.07.2008 11:10
Вопросик про StringGrid zzzzz Общие вопросы Delphi 3 10.07.2008 20:54