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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 16:09   #1
Stranger333
Пользователь
 
Аватар для Stranger333
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию StringGrid1 помощь!

мне надо что бы сначало закрасило ячейки, а потом выводило на них текст (здесь закрашиваю парные столбцы и в них хочу вывести цифры). В этом коде сначало выводится текст, а потом поля закрашиваются:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  k := 15;
  with StringGrid1 do
  begin
    for i := 0 to ColCount - 1 do
    for j := 0 to RowCount - 1 do
    if i mod 2 = 0 then
    begin
      Cells[i,j]:=IntToStr(k);
      k:=k-1;
    end;
  end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
    with Form1.StringGrid1.Cells[ACol,ARow] do
  begin
    if ACol mod 2 = 0 then
    begin
      Canvas.Brush.Color := clRed;
      Canvas.FillRect(Rect);
     Canvas.TextOut(3,3,Form1.StringGrid1.Cells[ACol,ARow]);
    end;
  end;
end;
Stranger333 вне форума Ответить с цитированием
Старый 11.10.2009, 16:16   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Ну, дык и правильно. Вы сначала создаете форму и при создании выводите цифры, а потом перерисовываете таблицу.
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
    with Form1.StringGrid1.Cells[ACol,ARow] do
  begin
    if ACol mod 2 = 0 then
    begin
      Canvas.Brush.Color := clRed;
      Canvas.FillRect(Rect);
     Canvas.TextOut(3,3,Form1.StringGrid1.Cells[ACol,ARow]);
    end;
  end;

  k := 15;
  with StringGrid1 do
  begin
    for i := 0 to ColCount - 1 do
    for j := 0 to RowCount - 1 do
    if i mod 2 = 0 then
    begin
      Cells[i,j]:=IntToStr(k);
      k:=k-1;
    end;
  end;

end;
---------------
Правда у меня даже Ваш вариант не работает

Последний раз редактировалось psycho-coder; 11.10.2009 в 16:28.
psycho-coder вне форума Ответить с цитированием
Старый 11.10.2009, 16:39   #3
Stranger333
Пользователь
 
Аватар для Stranger333
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию

просто я не ток код дал, с ошибками (перепутал).
Код:
with Form1.StringGrid1.Cells[ACol,ARow] do
на этом месте у меня ошибка, но если я записуваю так:
Код:
with StringGrid1 do
то у меня результат выводится только в первой клетке и значения меняетя от 1..15 (зацикливание делается)
Stranger333 вне форума Ответить с цитированием
Старый 11.10.2009, 16:47   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
то у меня результат выводится только в первой клетке и значения меняетя от 1..15 (зацикливание делается)
Я тут лохонулся.( Но выводит тоже в Cells[0, 0] число одиннадцать.
А если без закраски ячеек и вынести вывод чисел из DrawCell в FormCreate, то все нормально
psycho-coder вне форума Ответить с цитированием
Старый 11.10.2009, 16:53   #5
Stranger333
Пользователь
 
Аватар для Stranger333
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию

Цитата:
А если без закраски ячеек и вынести вывод чисел из DrawCell, то все нормально
да так и выходит с моим кодот на OnCreate
но мне так не надо, мне нужно щоб цифра выводилась на закрашеном фоне
Stranger333 вне форума Ответить с цитированием
Старый 11.10.2009, 16:55   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Код:
Canvas.TextOut(3,3,Form1.StringGrid1.Cells[ACol,ARow]);
Вот где собака зарыта . Вывод всегда в координаты 3, 3)
psycho-coder вне форума Ответить с цитированием
Старый 11.10.2009, 17:00   #7
Stranger333
Пользователь
 
Аватар для Stranger333
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию

Код:
with Form1.StringGrid1.Cells[ACol,ARow] do //здесь всегда ошибка
у Вас этот вариант нормально пропускается???
Stranger333 вне форума Ответить с цитированием
Старый 11.10.2009, 17:06   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от Stranger333 Посмотреть сообщение
Код:
with Form1.StringGrid1.Cells[ACol,ARow] do //здесь всегда ошибка
у Вас этот вариант нормально пропускается???
У меня
Код:
with Form1.StringGrid1 do
psycho-coder вне форума Ответить с цитированием
Старый 11.10.2009, 17:17   #9
Stranger333
Пользователь
 
Аватар для Stranger333
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию

но у Вашем коде всегда цыфры выводит, тоесть всегда идет прорисовка.

мне надо что бы цыфры выводились в OnCreate но перед этим нужно сделать фон ячейки! Возможно такое или нет?
Stranger333 вне форума Ответить с цитированием
Старый 11.10.2009, 17:43   #10
Stranger333
Пользователь
 
Аватар для Stranger333
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию

все решил проблему, если кому то нужно вот:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  k := 15;
  with StringGrid1 do
  begin
    for i := 0 to ColCount - 1 do
    for j := 0 to RowCount - 1 do
    if i mod 2 = 0 then
    begin
      Cells[i,j]:=IntToStr(k);
      k:=k-1;
    end;
  end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
    with StringGrid1 do
  begin
    if ACol mod 2 = 0 then
    begin
      Canvas.Brush.Color := clGray;
      Canvas.FillRect(Rect);
     Canvas.TextOut(Rect.Left + Font.Size, Rect.Top + 2,Form1.StringGrid1.Cells[ACol,ARow]);
    end;
  end;
end;
Stranger333 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid1 и StringGrid2. Их связь 2Live Общие вопросы C/C++ 4 03.09.2009 20:10
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
StringGrid1 Ратмир Помощь студентам 2 04.04.2009 14:51
Button1 и на Form2 открылся текст из файла (таблица)в StringGrid1. KSP Общие вопросы Delphi 2 19.09.2007 18:51
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27