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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2011, 23:56   #1
paranoiac
Новичок
Джуниор
 
Регистрация: 30.03.2011
Сообщений: 1
Печаль Delphi, объясните принцип рисования StringGrid. Canvas

Ребят, не могу понять как доделать программу.
Имеется календарь на один месяц.
требуется чтобы по активации рамка(окружность) двигалась по датам с заданным интервалом, а по отмене - рамка вставала на первое число в календаре.

Работает почти всё, только когда рамка доходит до 6-го числа - она начинает цикл в той же строке, а на след. не переходит.

Подправьте, если вам не трудно или объясните принцип пожалуйста.



Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ComCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Timer1: TTimer;
    Label8: TLabel;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    mm1: TMainMenu;
    N2: TMenuItem;
    N3: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
   private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,j,k:byte;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1,0]:='1';
StringGrid1.Cells[2,0]:='2';
StringGrid1.Cells[3,0]:='3';

StringGrid1.Cells[4,0]:='4';
StringGrid1.Cells[5,0]:='5';
StringGrid1.Cells[6,0]:='6';
StringGrid1.Cells[0,1]:='7';
StringGrid1.Cells[1,1]:='8';
StringGrid1.Cells[2,1]:='9';
StringGrid1.Cells[3,1]:='10';

StringGrid1.Cells[4,1]:='11';
StringGrid1.Cells[5,1]:='12';
StringGrid1.Cells[6,1]:='13';
StringGrid1.Cells[0,2]:='14';
StringGrid1.Cells[1,2]:='15';
StringGrid1.Cells[2,2]:='16';
StringGrid1.Cells[3,2]:='17';

StringGrid1.Cells[4,2]:='18';
StringGrid1.Cells[5,2]:='19';
StringGrid1.Cells[6,2]:='20';
StringGrid1.Cells[0,3]:='21';
StringGrid1.Cells[1,3]:='22';
StringGrid1.Cells[2,3]:='23';
StringGrid1.Cells[3,3]:='24';

StringGrid1.Cells[4,3]:='25';
StringGrid1.Cells[5,3]:='26';
StringGrid1.Cells[6,3]:='27';
StringGrid1.Cells[0,4]:='28';
StringGrid1.Cells[1,4]:='29';
StringGrid1.Cells[2,4]:='30';
StringGrid1.Cells[3,4]:='31';

i:=20*2;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i=287 then begin i:=0; j:=j+41; end;

StringGrid1.Repaint;
StringGrid1.Canvas.Brush.Style:=bsClear;
StringGrid1.Canvas.Pen.Width:=1;
StringGrid1.Canvas.Pen.Color:=clGreen;
StringGrid1.Canvas.Ellipse(0+i,0+j,41+i,41+j);
i:=i+41;    k:=k+1;
if k=50 then begin i:=20*2; j:=0; k:=50 end;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
Timer1.Enabled:=false;

StringGrid1.Repaint;
StringGrid1.Canvas.Brush.Style:=bsClear;
StringGrid1.Canvas.Pen.Width:=1;
StringGrid1.Canvas.Pen.Color:=clGreen;
i:=20*2; j:=0; k:=0;
StringGrid1.Canvas.Ellipse(0+i,0+j,40+i,40+j);
end;

end.
Исходник : №5.zip
paranoiac вне форума Ответить с цитированием
Старый 31.03.2011, 00:27   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i=287 then begin i:=0; j:=j+41; end;

StringGrid1.Repaint;
StringGrid1.Canvas.Brush.Style:=bsClear;
StringGrid1.Canvas.Pen.Width:=1;
StringGrid1.Canvas.Pen.Color:=clGreen;
StringGrid1.Canvas.Ellipse(0+i,0+j,41+i,41+j);
i:=i+41;    k:=k+1;
if k=7 then begin i:=0; j:=j+40; k:=0 end;

end;
до ума доведете сами)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Область рисования. rubius2008 Помощь студентам 0 21.11.2010 00:23
Функция рисования окружности в Delphi virtaanen Общие вопросы Delphi 8 31.10.2009 13:13
StringGrid Canvas Djaconda Общие вопросы Delphi 4 21.10.2008 23:27
Выделение строки (canvas) в StringGrid elfo Помощь студентам 1 24.06.2008 12:12
График в Canvas (с масштабированием) из StringGrid. PereCCC Помощь студентам 1 11.05.2008 10:45