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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2008, 11:32   #1
Summerrain
Пользователь
 
Аватар для Summerrain
 
Регистрация: 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.
Summerrain вне форума Ответить с цитированием
Старый 22.11.2008, 20:01   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А почему бы вам не использовать предназначенный именно для этого чарт? Там есть круговая диаграмма...
mihali4 вне форума Ответить с цитированием
Старый 22.11.2008, 23:42   #3
Summerrain
Пользователь
 
Аватар для Summerrain
 
Регистрация: 16.11.2008
Сообщений: 21
По умолчанию

В смысле ??? Зачем мне диаграмма. Когда мне именно нужна фигура круг.
А если диаграмма то что это исправит ???
Summerrain вне форума Ответить с цитированием
Старый 22.11.2008, 23:54   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Зачем мне диаграмма. Когда мне именно нужна фигура круг.
Ответ:
Цитата:
TChart. Там есть круговая диаграмма
Это и есть круг И линии там рисуются.
Цитата:
А если диаграмма то что это исправит ?
Попробуйте. Понравится.
mihali4 вне форума Ответить с цитированием
Старый 22.11.2008, 23:57   #5
Summerrain
Пользователь
 
Аватар для Summerrain
 
Регистрация: 16.11.2008
Сообщений: 21
По умолчанию

Хорошо. Только сначала где он находиться на панели инстументов ???
Или как вообще с ним работать ???
Summerrain вне форума Ответить с цитированием
Старый 23.11.2008, 00:02   #6
Summerrain
Пользователь
 
Аватар для Summerrain
 
Регистрация: 16.11.2008
Сообщений: 21
По умолчанию

Дак вопрос не в кругах. Меня и эти устраивают. Вопрос совершенно в другом.
Summerrain вне форума Ответить с цитированием
Старый 23.11.2008, 00:05   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
где он находиться на панели инстументов
Вторая закладка - "Additional".
Цитата:
как вообще с ним работать
Выделяем компонент, жмем заветную пимпу F1...
Не помогает? Качаем с сайта клуба нашего форума (ссылка в самом низу каждой страницы форума) книгу "100 компонентов дельфи"...
mihali4 вне форума Ответить с цитированием
Старый 23.11.2008, 10:58   #8
Summerrain
Пользователь
 
Аватар для Summerrain
 
Регистрация: 16.11.2008
Сообщений: 21
По умолчанию

Ясно. Но чем это поможет чтобы на экране текст не затирался ???
И у этого TChart чтоли есть встроенная ф-ция порядкового номера.
Summerrain вне форума Ответить с цитированием
Старый 23.11.2008, 10:59   #9
Summerrain
Пользователь
 
Аватар для Summerrain
 
Регистрация: 16.11.2008
Сообщений: 21
По умолчанию

Я та спрашивал что можно сделать чтобы нарисованный на экране ТЕКСТ не затирался.
Summerrain вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди добрые помогите!!!... Stas))) Помощь студентам 3 02.06.2007 20:07