Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> комоненты Tstringgrid и Tdrawgrid, нарисовать линию так чтобы было видно на таблице
newnat
Вставить ник
сообщение 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
 
Новая тема 
Ответов (1 - 1)
SMitty
Вставить ник
сообщение 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


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 10:31
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net