|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2012, 12:59 | #1 |
Новичок
Джуниор
Регистрация: 20.12.2012
Сообщений: 2
|
Идеальный газ в delphi
есть программа идеального газа...нужно добавить два label
чтобы в одном количество молекул указывалось а в другом скорость молекул.причем в программе я могу скороть менять Код HTML:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, StdCtrls; type TForm1 = class(TForm) Timer1: TTimer; TrackBar1: TTrackBar; Button1: TButton; Button2: TButton; Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure Render; procedure FormPaint(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Panel1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure Button1Click(Sender: TObject); procedure FormResize(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type TShar=record x,y:real; Vx,Vy:real; Color:Tcolor; end; var Form1: TForm1; M:array of TShar; V:real; x1,x2,y1,y2,r,x0,y0:integer; implementation {$R *.dfm} procedure TForm1.Render; var i,x,y:integer; BMP:TBitMap; begin BMP:=TBitMap.Create; BMP.Width:=ClientWidth; BMP.Height:=ClientHeight; For i:=0 to length(m)-1 do begin BMP.Canvas.Brush.Color:=m[i].Color; x:=round(m[i].x-r); y:=round(m[i].y-r); BMP.Canvas.Ellipse(x,y,x+2*r,y+2*r); end; form1.canvas.draw(0,0,BMP); BMP.free; end; procedure TForm1.FormCreate(Sender: TObject); var i:integer; a:real; begin v:=5; r:=10; x1:=r; y1:=panel1.Top+panel1.Height+r; x2:=ClientWidth-r; y2:=ClientHeight-r; setlength(m,10); for i:=0 to length(m)-1 do begin M[i].x:=(x2-x1)*random+x1; M[i].y:=(y2-y1)*random+y1; a:=random*2*pi; m[i].Vx:=cos(a); m[i].Vy:=sin(a); m[i].Color:=cllime; end; render; end; procedure TForm1.FormPaint(Sender: TObject); begin render; end; procedure TForm1.Timer1Timer(Sender: TObject); var i:integer; begin For i:=0 to length(m)-1 do begin m[i].x:=m[i].x+m[i].Vx*V; m[i].y:=m[i].y+m[i].Vy*V; if m[i].x<=x1 then begin m[i].vx:=-m[i].Vx; m[i].x:=(2*x1-m[i].x); end; if m[i].x>=x2 then begin m[i].vx:=-m[i].Vx; m[i].x:=(2*x2-m[i].x); end; if m[i].y<=y1 then begin m[i].vy:=-m[i].Vy; m[i].y:=(2*y1-m[i].y); end; if m[i].y>=y2 then begin m[i].vy:=-m[i].Vy; m[i].y:=(2*y2-m[i].y); end; end; render; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin v:=TrackBar1.Position*2; end; procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin x0:=x;y0:=y; panel1.BeginDrag(true); end; procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin panel1.Top:=panel1.Top+y-y0; if panel1.Top<0 then panel1.Top:=0; if panel1.Top>clientheight-panel1.height then panel1.Top:=clientheight-panel1.height; y1:=panel1.Top+panel1.Height+r; end; procedure TForm1.Button1Click(Sender: TObject); var a:real; begin setlength(M, length(m)+1); M[length(M)-1].x:=ClientWidth-r; M[length(M)-1].y:=ClientHeight-r; a:=random*2*Pi; m[length(M)-1].Vx:=cos(a); m[length(M)-1].Vy:=sin(a); m[length(M)-1].Color:=clred; end; procedure TForm1.FormResize(Sender: TObject); begin x2:=ClientWidth-r; y2:=ClientHeight-r; end; procedure TForm1.Button2Click(Sender: TObject); var a: real; begin setlength(M, length(m)-1); M[length(M)-1].x:=ClientWidth-r; M[length(M)-1].y:=ClientHeight-r; a:=random*2*Pi; m[length(M)-1].Vx:=cos(a); m[length(M)-1].Vy:=sin(a); end; end. |
20.12.2012, 15:14 | #2 |
Made In USSR!
Старожил
Регистрация: 01.09.2010
Сообщений: 3,657
|
и хде тут скорость и количество в коде? переменкам надо говорящие имена давать)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой" |
20.12.2012, 20:48 | #3 |
Новичок
Джуниор
Регистрация: 20.12.2012
Сообщений: 2
|
ну если на форму добавить два labela на одном должна показываться скорость на другом количество молекул.по идее а-это скорость в коде а length-количество.только как это вставить в прогу
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Идеальный вес | radeon123 | Общие вопросы Delphi | 2 | 11.02.2012 09:37 |
Идеальный газ (delphi) | clope | Помощь студентам | 2 | 09.10.2011 15:45 |
Идеальный народ | mihali4 | Свободное общение | 28 | 03.11.2010 21:43 |
С 2012 года не установившие счетчики на газ и воду будут платить больше | Alter | Свободное общение | 5 | 21.08.2010 10:37 |
Вопрос с долгом Украины за газ.... | anton14 | Свободное общение | 8 | 02.01.2009 02:41 |