denmakar1990 Опубликовано 3 марта, 2012 Жалоба Поделиться Опубликовано 3 марта, 2012 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons; type TForm1 = class(TForm) Label1: TLabel; UpDown1: TUpDown; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; UpDown2: TUpDown; UpDown3: TUpDown; BitBtn1: TBitBtn; Button1: TButton; Panel1: TPanel; Image1: TImage; Image2: TImage; Image3: TImage; procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); procedure UpDown2Click(Sender: TObject; Button: TUDBtnType); procedure UpDown3Click(Sender: TObject; Button: TUDBtnType); procedure Button1Click(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Lequ, Lam, b05, b2, koef : single; j : integer; implementation {$R *.DFM} procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin Form1.Label2.Caption := FloatToStr(UpDown1.Position/10)+'`'; j := j+1; end; procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType); begin Form1.Label4.Caption := FloatToStr(UpDown2.Position)+'см'; j := j+1; end; procedure TForm1.UpDown3Click(Sender: TObject; Button: TUDBtnType); begin Form1.Label7.Caption := FloatToStr(UpDown3.Position)+'`'; j := j+1; end; procedure TForm1.Button1Click(Sender: TObject); var u : single; i : ShortInt; begin if j < 3 then MessageDlg('Не ведены параметры.', mtInformation, [mbOk], 0) else begin Lam := UpDown2.Position; b05 := UpDown1.Position/10; Lequ := 50.5*Lam/b05; koef := (pi/Lam)*Lequ; with Form1.Image1.Canvas do begin MoveTo(20,410); LineTo(620,410); LineTo(617,408); LineTo(617,412); LineTo(620,410); MoveTo(320,410); LineTo(320,0); LineTo(318,3); LineTo(322,3); LineTo(320,0); for i := 1 to 40 do if i mod 2 = 0 then begin MoveTo(20+i*15,413); LineTo(20+i*15,407); if i <> 40 then TextOut(18+i*15,415,IntToStr(i div 2-10)) else TextOut(18+i*15,415,'I'); end else begin MoveTo(20+i*15,411); LineTo(20+i*15,409); end; TextOut(280,0,'F(k)'); for i := 1 to 10 do begin MoveTo(318,410-i*40); LineTo(322,410-i*40); if i <> 10 then TextOut(300,410-i*40,'0.'+IntToStr(i)); end; MoveTo(20,410); for i := -60 to 60 do if i <> 0 then begin u := koef*sin((i/6)*(pi/180)); LineTo(20+(i+60)*5,410-abs(Trunc(400*(sin(u)/u)))); MoveTo(20+(i+60)*5,410-abs(Trunc(400*(sin(u)/u)))); end; end; end; end; procedure TForm1.FormActivate(Sender: TObject); begin j := 0; end; end. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 3 марта, 2012 Жалоба Поделиться Опубликовано 3 марта, 2012 Насколько я понимаю это вроде Дельфи, но у меня его нет, да и я на нём не писал. 1. Проще задать вопрос в Заказы "Сделайте все за меня" 2. Указать более точную проблему, т.е. что должен делать данный программный код и так же версию компилятора. С уважением. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 4 марта, 2012 Жалоба Поделиться Опубликовано 4 марта, 2012 Банально - лишний end; Но это бы должен показать отладчик. Поэтому ещё предположение - используя операторы без begin Вы попутали логику работы программы. Если дело не в этом укажите значения Label от 1 до 7, чтобы можно было попробовать программу. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 4 марта, 2012 Жалоба Поделиться Опубликовано 4 марта, 2012 Да, лишний end; Поставил в Лэйблы целые, понажимал каждый UpDown, нажал Button - построен осциллирующий график с максимумом в 0. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
denmakar1990 Опубликовано 5 марта, 2012 Автор Жалоба Поделиться Опубликовано 5 марта, 2012 А сможешь скинуть сюда текст готовой программы? Я просто в программировании вообще не бум-бум!!! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 5 марта, 2012 Жалоба Поделиться Опубликовано 5 марта, 2012 (изменено) Текст совпадает с твоим, только там, где подряд четыре end один надо выбросить. Кроме того, в Дельфи просто скопипастить не пройдёт. Есть проект формы. 1) В проект на форму накидать три UpDown, семь Label, три Image, панель, Button, BitBtn. Image1 должен быть около 700 на 500 2) Потом вставить в события OnActivate, OnClick фрагменты из текста программы через Инспектор Объектов. 3) Значения Label я поставил равными их номеру т.е. Label3.Caption - 3 и т.д. 4) Пощелкать по всем UpDown - к Лейблам прикрепятся 'см' и прочее. После этого можно нажимать Button - график построен. unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons;type TForm1 = class(TForm)Button1: TButton;Image1: TImage;Image2: TImage;Image3: TImage;Panel1: TPanel;BitBtn1: TBitBtn;UpDown1: TUpDown;UpDown2: TUpDown;UpDown3: TUpDown;Label1: TLabel;Label2: TLabel;Label3: TLabel;Label4: TLabel;Label5: TLabel;Label6: TLabel;Label7: TLabel;procedure Button1Click(Sender: TObject);procedure FormActivate(Sender: TObject);procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);procedure UpDown2Click(Sender: TObject; Button: TUDBtnType);procedure UpDown3Click(Sender: TObject; Button: TUDBtnType); private{ Private declarations } public{ Public declarations } end;var Form1: TForm1; Lequ, Lam, b05, b2, koef : single; j : integer;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);varu : single;i : ShortInt;beginif j<3 thenMessageDlg('Не ведены параметры.',mtInformation, [mbOk], 0) else beginLam := UpDown2.Position;b05 := UpDown1.Position/10;Lequ := 50.5*Lam/b05;koef := (pi/Lam)*Lequ;with Form1.Image1.Canvas do begin MoveTo(20,410); LineTo(620,410); LineTo(617,408); LineTo(617,412); LineTo(620,410); MoveTo(320,410); LineTo(320,0); LineTo(318,3); LineTo(322,3); LineTo(320,0); for i := 1 to 40 do if i mod 2 = 0 then begin MoveTo(20+i*15,413); LineTo(20+i*15,407); if i <> 40 then TextOut(18+i*15,415,IntToStr(i div 2-10)) else TextOut(18+i*15,415,'I'); end else begin MoveTo(20+i*15,411); LineTo(20+i*15,409); end; TextOut(280,0,'F(k)'); for i := 1 to 10 do begin MoveTo(318,410-i*40); LineTo(322,410-i*40); if i <> 10 then TextOut(300,410-i*40,'0.'+IntToStr(i)); end; MoveTo(20,410); for i := -60 to 60 do if i <> 0 then begin u := koef*sin((i/6)*(pi/180)); LineTo(20+(i+60)*5,410-abs(Trunc(400*(sin(u)/u)))); MoveTo(20+(i+60)*5,410-abs(Trunc(400*(sin(u)/u)))); end;// end;end; //with Form1.Image1.Canvasend; //j<3end;procedure TForm1.FormActivate(Sender: TObject);beginj:=0;end;procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);beginForm1.Label2.Caption := FloatToStr(UpDown1.Position/10)+'`';j := j+1;end;procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);beginForm1.Label4.Caption := FloatToStr(UpDown2.Position)+'см';j := j+1;end;procedure TForm1.UpDown3Click(Sender: TObject; Button: TUDBtnType);beginForm1.Label7.Caption := FloatToStr(UpDown3.Position)+'`';j := j+1;end;end. Тестирую, как работает вствавка кода на новом движке. С рисунками-то проблем. Изменено 5 марта, 2012 пользователем Teddy_Bear 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.