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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти