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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2015, 14:09   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Перерисовка StringGrid

Здравствуйте.
В StringGrid использую перерисовку для центрирования и закраски выходных дней.
Код:
procedure TFmGrafikEdt.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
  var
    D : TDateTime;
    chislo:integer;
    M: Integer;
begin
  if not TryStrToInt(MONIDEdt.Text, M) then Exit;
  with StringGrid1.Canvas do
    begin
      if ( (acol<>0) and (arow=0) and (StringGrid1.Cells[ACol,ARow]<>'ФИО/Дата') ) then
        begin
          D:=EncodeDate(StrToInt(GODEdt.Text), M,strtoint(StringGrid1.Cells[acol,arow]));
          chislo:=DayOfTheWeek(D);
          case chislo of
            1 : Brush.Color := clBtnFace;
            2 : Brush.Color := clBtnFace;
            3 : Brush.Color := clBtnFace;
            4 : Brush.Color := clBtnFace;
            5 : Brush.Color := clBtnFace;
            6 : Brush.Color := clYellow;
            7 : Brush.Color := clRed;
          end;
          Rect := StringGrid1.CellRect(ACol,ARow);
          FillRect(Rect);
          TextOut(Rect.left+((Rect.Right-Rect.Left) div 2)-
                  (TextWidth(StringGrid1.Cells[acol,arow]) div 2),Rect.Top+5,StringGrid1.Cells[acol,arow]);
        end;
    end;
end;
Но при использовании бегунка наблюдается эффект раздвоения

подскажите как от этого избавиться
tarakan1983 вне форума Ответить с цитированием
Старый 03.02.2015, 14:31   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

очистить в начале надо, или FillRect или (не помню точно как называется) что-то вроде EraseBackground
lomastr_ вне форума Ответить с цитированием
Старый 03.02.2015, 14:46   #3
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию

Условие нужно по столбцам описать.

var
Form1: TForm1;
I: Integer;
implementation

{$R *.dfm}

Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  inc(i);
  Memo1.Lines.Add('OnDrawCell- ïðîèçîøëî ' + IntToStr(i) + ' ðàç');
end;
NIKOLAYY2 вне форума Ответить с цитированием
Старый 03.02.2015, 15:57   #4
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Условие нужно по столбцам описать.
Не понял, как это и для чего? Можете подробнее, для тех кто на бронепоезде?
tarakan1983 вне форума Ответить с цитированием
Старый 03.02.2015, 16:10   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

FillRect, уже сказали
В #3 чепуха
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2015, 16:26   #6
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
FillRect, уже сказали
Ну вот и я пересмотрел код и увидел что это есть.
Цитата:
Сообщение от Аватар Посмотреть сообщение
В #3 чепуха
Я вот тоже не понял к чему это.
tarakan1983 вне форума Ответить с цитированием
Старый 03.02.2015, 16:37   #7
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

у вас что-то непонятное, с одной стороны рект вам приходит параметром, с другой вы его перебиваете, я уж не говорю про все остальное ..
lomastr_ вне форума Ответить с цитированием
Старый 03.02.2015, 16:41   #8
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
у вас что-то непонятное, с одной стороны рект вам приходит параметром, с другой вы его перебиваете, я уж не говорю про все остальное ..
Я поэтому и спросил как правильно сделать, чтобы было все понятно и мне и stringgrid'u
tarakan1983 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перерисовка в image Chester751 Общие вопросы Delphi 4 15.09.2013 10:23
Плавная перерисовка компанентов на форме, StringGrid Sicher Компоненты Delphi 3 08.02.2012 17:19
перерисовка StringGrid Китос Общие вопросы C/C++ 0 21.01.2012 22:35
Перерисовка PaintBox gusluk Мультимедиа в Delphi 5 26.01.2010 12:54
Перерисовка RichEdit SanekIrk Компоненты Delphi 9 15.09.2009 00:31