![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.11.2008
Сообщений: 21
|
![]()
Как бы суть программы в том чтобы постоить сетевой график.
Я рисую груги, как перерисовывать линии нашел на форуме ))) Теперь другая загвозтка, мне надо цифры которые над линиями вывожу чтобы тоже перерисовывали. А то они стираются. ((( И еще вопрос. Я в процедуре procedure TGlavForm.FormMouseUp Есть строчка t.Tag := tag; запоминание кругу его порядкового номера. Но при дальнейшей работе Когда линией соединяю 2-а круга мне надо чтобы в переменные New и Clo помещались их порядковые номера, но получается получить только один из 2-х номеров. Подскажите что делать. Заранее спасибо. Вот текст программы. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, ExtCtrls, ComCtrls, StdCtrls, Buttons; type TDrawingTool = (dtLine, dtRectangle, dtEllipse, dtRoundRect); TGlavForm = class(TForm) SpeedButton1: TSpeedButton; BitBtn1: TBitBtn; StatusBar1: TStatusBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure SpeedButton1Click(Sender: TObject); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public s : array of TShape; lines : array of TRect; { Public declarations } end; var GlavForm: TGlavForm; vershina :boolean; //Ðèñóåò ëè ïîëüçîâàòåëü êðóã implementation {$R *.dfm} procedure TGlavForm.SpeedButton1Click(Sender: TObject); begin vershina:=true; statusbar1.SimpleText:='Âûáåðèòå ìåñòî ðàñïîëîæåíèå ñîáèòèÿ'; end; procedure TGlavForm.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var t : TShape; // Êðóã c : TLabel; // Ïîðÿäêîâûé íîìåð êðóãà buf : string; begin if vershina then begin SetLength(s,length(s)+2); t:=TShape.Create(GlavForm); s[High(s)]:=t; // Ðèñîâêà êðóæêîâ t.top:=y; // t.left:=x; // t.visible:=true; // t.width:=50;t.height:=t.width; // t.Shape:=stCircle; // t.parent:=GlavForm; // t.show; // Ðèñîâêà êðóæêîâ t.OnMouseDown:=Shape1MouseDown; c:=TLabel.Create(s[High(s)]); // Ïîðÿäêîâûé íîìåð c.Left:=t.Left+t.Width div 2;c.Top:=t.Top+t.Height div 2;c.Visible:=true; c.Transparent:=true;c.AutoSize:=tru e; // c.Parent:=t.Parent; // tag:=tag+1; // c.Caption:=inttostr(tag); t.Tag := tag; // c.BringToFront; // Ïîðÿäêîâûé íîìåð end; end; procedure TGlavForm.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var st:string; xz,code,q,w : integer; New, Clo : integer; buf : string; begin if SpeedButton1.Tag<>151 then begin New := TShape(Sender).Tag; setlength(lines,length(lines)+1); lines[high(lines)].Left:=TShape(sender).Left+TShape(s ender).Width div 2; lines[high(lines)].Top:=TShape(sender).Top+TShape(sen der).Height div 2; SpeedButton1.Tag:=151; end else begin lines[high(lines)].Right:=TShape(sender).Left+TShape( sender).Width div 2; lines[high(lines)].Bottom:=TShape(sender).Top+TShape( sender).Height div 2; Clo := TShape(Sender).Tag; GlavForm.Canvas.MoveTo(lines[high(lines)].Left,lines[high(lines)].Top); GlavForm.Canvas.LineTo(lines[high(lines)].Right,lines[high(lines)].Bottom); SpeedButton1.Tag:=1; Repeat st:=InputBox('Ðàáîòà','Ââåäèòå ïðîäîëæèòåëüíîñòü ðàáîòû','0'); val(st,xz,code); Until ((code=0) and (st<>'') and (xz>0)); q:=round((lines[high(lines)].Right+lines[high(lines)].Left)/2); w:=round((lines[high(lines)].Bottom+lines[high(lines)].Top)/2); GlavForm.Canvas.TextOut(q,w,st); buf := (IntToStr(New) + 'äî' + IntToStr(Clo)); MessageDlg(buf,mtInformation,[mbok],0); end; end; procedure TGlavForm.FormCreate(Sender: TObject); begin vershina:=false; end; procedure TGlavForm.FormPaint(Sender: TObject); var i:integer; begin for i:=1 to length(lines) do begin GlavForm.Canvas.MoveTo(lines[i].Left,lines[i].Top); GlavForm.Canvas.LineTo(lines[i].Right,lines[i].Bottom); end; end; end. |
![]() |
![]() |
![]() |
#2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
А почему бы вам не использовать предназначенный именно для этого чарт? Там есть круговая диаграмма...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 16.11.2008
Сообщений: 21
|
![]()
В смысле ??? Зачем мне диаграмма. Когда мне именно нужна фигура круг.
А если диаграмма то что это исправит ??? |
![]() |
![]() |
![]() |
#4 | |||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Цитата:
![]() Цитата:
|
|||
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 16.11.2008
Сообщений: 21
|
![]()
Хорошо. Только сначала где он находиться на панели инстументов ???
Или как вообще с ним работать ??? |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 16.11.2008
Сообщений: 21
|
![]()
Дак вопрос не в кругах. Меня и эти устраивают. Вопрос совершенно в другом.
|
![]() |
![]() |
![]() |
#7 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Цитата:
Не помогает? Качаем с сайта клуба нашего форума (ссылка в самом низу каждой страницы форума) книгу "100 компонентов дельфи"... |
||
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 16.11.2008
Сообщений: 21
|
![]()
Ясно. Но чем это поможет чтобы на экране текст не затирался ???
И у этого TChart чтоли есть встроенная ф-ция порядкового номера. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 16.11.2008
Сообщений: 21
|
![]()
Я та спрашивал что можно сделать чтобы нарисованный на экране ТЕКСТ не затирался.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Люди добрые помогите!!!... | Stas))) | Помощь студентам | 3 | 02.06.2007 20:07 |