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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 10:27   #11
fredwriter
Форумчанин
 
Регистрация: 06.10.2009
Сообщений: 121
По умолчанию

Никак не могу разобраться с OnDrawCell, в потоках у меня вычисляется какую ячейку нужно закрасить, потоки запускаются по нажатии на кнопку "поиск", перед тем как нажать на кнопку "поиск" я должен ввести в одно поле эдит размер массива, нажать на кнопку "Вывод случайного массива", после нажатия на эту кнопку четыре строки StringGrid заполняются числами, в каждой строке один и тот же массив, затем нужно ввести во второе поле эдит элемент, который нужно найти, и нажать на кнопку поиск. После нажатия на кнопку поиск запускаются потоки, каждый из которых по своему алгоритму поиска дает номер ячейки, которую нужно закрасить в OnDrawCell, первый поток вычисляет номер ячейи в первой строке, второй во второй строке и т.д. Я попробовал сделать это с одним потоком, хотя бы, но при открытии формы сразу запускается OnDrawCell, и не даёт ничего сделать.
Вот частичный код бреда, который я написал. Процедура потока, процедура OnDrawCell и процедура кнопки "поиск".

Код:
procedure Line_Find_Thread.Execute;
begin
  i_p := 1;
  Key_f2 := StrToInt(Form2.Edit2.Text);
  while (i_p <= n_f2) and (Mass_f2[i_p] <> Key_f2) do
  begin
    Inc(i_p);
    Sleep(100);
  end;
end;


procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if i_p <> 0 then
    if (ARow = i_p) and (ACol = 0) then
      with TStringGrid(Sender), Canvas do
      begin
        Brush.Color := clRed;
        FillRect(Rect);
        TextRect(Rect, Rect.Left, Rect.Top, Cells[aCol, aRow]);
      end;
end;

 
procedure TForm2.Button1Click(Sender: TObject);
begin
 // QuickSort(C_Mass_f2, n_f2);
  //QuickSort(D_Mass_f2, n_f2);
  Line_Find_Thread.Create(False);
  //QLine_Find_Thread.Create(False);
 // Dixot_Find_Thread.Create(False);
  //Interpol_Find_Thread.Create(False);
end;
Это лишнее не понял как создалось два ответа сразу
Ищущий да обрящет

Последний раз редактировалось fredwriter; 17.11.2010 в 10:31.
fredwriter вне форума Ответить с цитированием
Старый 17.11.2010, 18:11   #12
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

DrawCell срабатывает при перерисовке. Она может происходить автоматически, также можно вызывать ее самому. Автоматически это происходит или при перекрытии окна, или при старте программы, или при разворачивании. Ты не можешь это отменить. Но ты можешь управлять косвенно, условиями внутри обработчика DrawCell. И если условие ложное, сколько бы перерисовок не происходило, ничего ненужного не нарисуется.

Найди пример по обработке перерисовки TStringGrid или TDrawGrid (они по сути почти одинаковы), примеров валом в сети. В том же DelphiWorld или в DRKB посмотри.
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 вне форума Ответить с цитированием
Старый 17.11.2010, 19:06   #13
fredwriter
Форумчанин
 
Регистрация: 06.10.2009
Сообщений: 121
По умолчанию

Спасибо, mutabor, буду искать
Ищущий да обрящет
fredwriter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Координаты ячейки в StringGrid??? aslanbek Общие вопросы Delphi 13 01.08.2014 16:53
ячейки в StringGrid Desha Компоненты Delphi 3 06.09.2010 20:32
Вопрос по выделению ячейки в stringgrid robin39 Помощь студентам 8 08.07.2010 10:18
Ячейки в StringGrid ImmortalAlexSan Общие вопросы Delphi 2 17.05.2010 17:41
Выделение ячейки цветом - StringGrid. Chudo4258 Помощь студентам 1 01.04.2009 07:03