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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2017, 12:59   #1
Delphinub
 
Регистрация: 22.07.2017
Сообщений: 3
По умолчанию Задваение текста в ячейке Stringgrid

Добрый день. Помогите пожалуйста. Необходимо чтобы текст в ячейке Stringgrid располагался по центру, при этом у Stringgrid в option проставлено GoRowSelect=true;
текст в ячейке центрую так:
Код:
procedure TForm5.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  cr:TRect;
begin
     with StringGrid1.Canvas do
      begin
        cr:=StringGrid1.CellRect(acol,arow) ;
        FillRect(cr);
        TextOut(cr.left+((cr.Right-cr.Left) div 2)-(TextWidth(StringGrid1.Cells[acol,arow]) div 2),
        cr.Top,StringGrid1.Cells[acol,arow]);
      end;
end;
но при выделении какой-либо строки текст в ней двоится
2017-07-22_12-53-16.jpg
как это можно исправить?

Последний раз редактировалось Delphinub; 22.07.2017 в 13:32.
Delphinub вне форума Ответить с цитированием
Старый 22.07.2017, 13:22   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Рисовать текст нужно в событии OnDrawCell
Black Fregat вне форума Ответить с цитированием
Старый 22.07.2017, 13:29   #3
Delphinub
 
Регистрация: 22.07.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Рисовать текст нужно в событии OnDrawCell
ни оттуда вкопировал. этот код из procedure TForm5.StringGrid1DrawCell
Код:
procedure TForm5.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  cr:TRect;
begin
     with StringGrid1.Canvas do
      begin
        cr:=StringGrid1.CellRect(acol,arow) ;
        FillRect(cr);
        TextOut(cr.left+((cr.Right-cr.Left) div 2)-(TextWidth(StringGrid1.Cells[acol,arow]) div 2),
        cr.Top,StringGrid1.Cells[acol,arow]);
      end;
end;
Delphinub вне форума Ответить с цитированием
Старый 23.07.2017, 01:01   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Но тот код Вы откуда-то взяли, значит, Вы два раза отрисовываете?
Black Fregat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос текста в фиксированной ячейке StringGrid artemavd Общие вопросы Delphi 1 30.05.2011 10:57
StringGrid и курсор в ячейке RgnRok C++ Builder 0 13.04.2011 20:33
Подогнать ширину текста по ширине ячейке StringGrid Neko13 Общие вопросы Delphi 8 21.06.2010 10:46
изменение текста в ячейке stringgrid!!! GREENpes Помощь студентам 4 04.05.2010 16:33
Присвоить ячейке StringGrid переменную DimOn4Ik Помощь студентам 6 19.01.2010 16:27