Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
15:04:2008, 05:43
|
|
Новенький ![]() Группа: Программист Сообщений: 2 Регистрация: 10:04:2008 Пользователь №: 16 536 Репутация: 0
|
Таблица, представляющая собой типичное двухнедельное расписание
(столбцы - недели, строки - пары). Разные недели, а также пары, соответствующие дневному и вечернему отделениям должны быть отделены жирной линией. Как сделать, которую линию нарисовали, сделать видимой на таблице. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Image1: TImage; StringGrid1: TStringGrid; ColorDialog1: TColorDialog; Button1: TButton; UpDown1: TUpDown; procedure FormPaint(Sender: TObject); procedure Button1Click(Sender: TObject); procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); begin //рисуем сплошную линию (psSolid) Canvas.Pen.Style:=psSolid; Canvas.MoveTo(468,176); Canvas.LineTo(468,394); end; procedure TForm1.Button1Click(Sender: TObject); begin if ColorDialog1.Execute then Canvas.Pen.Color:=ColorDialog1.Color; FormPaint(nil); end; procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin Canvas.Pen.Width:=UpDown1.Position; Repaint; end; procedure TForm1.FormShow(Sender: TObject); begin //заполняем значениями все колонки StringGrid1.Cells[0,1]:='8:15-9:45'; StringGrid1.Cells[0,2]:='9:55-11:25'; StringGrid1.Cells[0,3]:='11:35-13:05'; StringGrid1.Cells[0,4]:='13:35-15:05'; StringGrid1.Cells[0,5]:='15:15-16:45'; и тд. end; end. |
|
Сообщение
#1
|
|
![]() |
|
|
15:04:2008, 12:42
|
|
Новенький ![]() Группа: Программист Сообщений: 15 Регистрация: 4:03:2008 Из: СПб Пользователь №: 15 641 Специализация: прикладная математика Репутация: 0
|
Если я правильно понял вопрос, то проблема в том, что для рисования линий Вы используете своыство Canvas формы.
Чтобы рисовать линии на StrungGrid'е надо пользоваться свойством Canvas самого StrungGrid. Например так: Код procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; begin StringGrid1.Canvas.Pen.Color:=clRed; StringGrid1.Canvas.Pen.Width:=10; for i:=1 to StringGrid1.ColCount-1 do begin for j:=1 to StringGrid1.RowCount-1 do begin StringGrid1.Canvas.MoveTo(StringGrid1.CellRect(i,j).BottomRight.X, StringGrid1.CellRect(i,j).BottomRight.Y); StringGrid1.Canvas.LineTo(StringGrid1.CellRect(i,j).TopLeft.x, StringGrid1.CellRect(i,j).TopLeft.y); end; end; end; Единственно, надо будет обойти проблему перерисовки клеток при кликании по StringGrid'у. |
|
Сообщение
#2
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 10:31 |