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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2011, 01:57   #1
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию Timer и advstring1DrawCell грузит процессор

Здравствуйте

Есть Таймер с кодом:

Код:
procedure Tmain1.TimerTimer(Sender: TObject);
begin
  ........................................
        for j := 1 to Size do
        begin
          if grid1.Cells[1, ARow] = mas[0, j - 1] then
            grid1.Cells[4, ARow] := mas[3, j - 1];
          if grid1.Cells[1, ARow] = mas[0, j - 1] then
            if (grid1.Cells[2, ARow] <> mas[1, j - 1]) and
              (mas[3, j - 1] <> '2') then
              grid1.Cells[4, ARow] := '0';
        end;
  ........................................
  Timer.Interval := SpinTime.Value * 60000;
end;
и также

Код:
procedure Tmain1.advstring1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if grid1.Cells[2, ARow] = '0' then
  begin
    grid1.RowColor[ARow] := RGB(240, 120, 104);
    grid1.RowColorTo[ARow] := RGB(240, 120, 104);
  end;
  if grid1.Cells[4, ARow] = '2' then
  begin
    grid1.RowColor[ARow] := ColorBox2.Colors[ColorBox2.ItemIndex];
    grid1.RowColorTo[ARow] := ColorBox2.Colors[ColorBox2.ItemIndex];
  end;
end;
Вот после запуска таймера нагрузка на процессор увеличивается на 50 процентов, определил что дело в advstring1DrawCell, когда удаляю код процедуры то всё нормально, но без него не как)) что можно сделать в этом случаи?
designer999 вне форума Ответить с цитированием
Старый 30.08.2011, 08:01   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

А вы попробуйте ещё ячейки отдельно красить вообще проц на 100% грузится. По ходу компонент такой кривой, по этому стараюсь с ним не связываться, хотя красивый гад
SERG1980 вне форума Ответить с цитированием
Старый 30.08.2011, 08:31   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Зачем переносить значение массива в грид в таймере?!!!! Это КАТЕГОРИЧЕСКИ неправильно!!!

Вы спросите - "где же их переносить?" отвечаю.
Там, где массив изменяется!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.08.2011, 14:46   #4
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
А вы попробуйте ещё ячейки отдельно красить вообще проц на 100% грузится. По ходу компонент такой кривой, по этому стараюсь с ним не связываться, хотя красивый гад
да сам компонент нормальный, просто видно не правильно реализовал.

Цитата:
Сообщение от Serge_Bliznykov
Вы спросите - "где же их переносить?" отвечаю.
Там, где массив изменяется!
вот это не понял, перед этим в массив просто вводятся данные, а во время работы таймера, эти данные нужно передать в таблицу, когда же их можно ещё переносить ?
designer999 вне форума Ответить с цитированием
Старый 30.08.2011, 15:22   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
вот это не понял, перед этим в массив просто вводятся данные, а во время работы таймера, эти данные нужно передать в таблицу, когда же их можно ещё переносить ?
данные в массив вводятся ОДИН раз?
Так чего Вы их МНОГОКРАТНО раз в сколько-то секунд/минут опять переносите?!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.08.2011, 18:10   #6
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
данные в массив вводятся ОДИН раз?
Так чего Вы их МНОГОКРАТНО раз в сколько-то секунд/минут опять переносите?!!!
procedure Tmain1.TimerTimer(Sender: TObject);
begin

Вводятся данные в массив
................................... .....
код
................................... .....
for j := 1 to Size do
begin
if grid1.Cells[1, ARow] = mas[0, j - 1] then
grid1.Cells[4, ARow] := mas[3, j - 1];
if grid1.Cells[1, ARow] = mas[0, j - 1] then
if (grid1.Cells[2, ARow] <> mas[1, j - 1]) and
(mas[3, j - 1] <> '2') then
grid1.Cells[4, ARow] := '0';
end;
................................... .....
Timer.Interval := SpinTime.Value * 60000;
end;
designer999 вне форума Ответить с цитированием
Старый 31.08.2011, 08:26   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вводятся данные в массив
нет. это данные из массива mas переписываются в грид Grid1

если данные в массиве mas не изменяются, то нет смысла повторять процедуру переноса данных mas -> grid1 несколько раз!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.09.2011, 17:29   #8
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

да нет, это я специально написал сверху что данные сначала вносятся в массив, дальше идёт произвольный код, а в конце из массива данные переписываю в грид.
designer999 вне форума Ответить с цитированием
Старый 04.09.2011, 09:42   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
данные сначала вносятся в массив, дальше идёт произвольный код, а в конце из массива данные переписываю в грид.
ну всё правильно.

Только в таймере не нужно этого делать. и всё будет хорошо.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.09.2011, 12:06   #10
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Код:
    grid1.RowColor[ARow]
    grid1.RowColorTo[ARow]
А изменения свойств часом не вызывают перерисовку? Если это так тогда понятно причину из за чего забивается проц. (у меня нет сего грида посему я не знаю что в нем внутри.)
ViktorXP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
торрент быстро грузит, а страницу открывает секунд 20. mr.Jar Свободное общение 10 26.05.2010 13:23
svchost грузит систему Kn793 Windows 2 25.12.2009 13:04
Excel 2007 грузит систему на 100% kzld Microsoft Office Excel 5 29.03.2009 20:12
Нужна помощь - Не грузит Windows XP Kamilla 92 Компьютерное железо 5 05.02.2009 20:43
Skype систему сильно грузит Viteef Софт 4 09.11.2007 12:44