Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.11.2014
Сообщений: 9
1

Не работает "анимация". Движение проходит лишь при смены числа в поле, хотя поле по идеи должнозадаватьскороть

17.05.2015, 23:34. Показов 598. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Edit1: TEdit;
    Timer1: TTimer;
    Clickpl: TCheckBox;
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
procedure Line(Image:TImage;x1,y1,x2,y2:integer);
begin
  with Image.Canvas do begin
    MoveTo(x1,y1); LineTo(x2,y2);
  end;
end;
 
procedure Opora(Image:Timage;x,y,Orient:integer);
var i:integer;
begin
  with Image.Canvas do begin
  pen.Style:=psSolid;
  pen.Width := 3;
  case Orient of
    0:begin
        MoveTo(x+4,y-2);   LineTo(x+20,y-10);
        MoveTo(x+2,y+2);   LineTo(x+20,y+10);
        MoveTo(x+20,y-15); LineTo(x+20,y+15);
        pen.Width:=1;
        for i := 1 to 6 do begin
          MoveTo(x+20,y-15+i*5);
          LineTo(x+25,y-20+i*5);
        end;
      end;
   90:begin
        MoveTo(x+2,y-4);    LineTo(x+10,y-20);
        MoveTo(x-2,y-4);    LineTo(x-10,y-20);
        MoveTo(x-15,y-20);  LineTo(x+15,y-20);
        pen.Width:=1;
        for i := 1 to 6 do begin
          MoveTo(x-15+i*5,y-20);
          LineTo(x-20+i*5,y-25);
        end;
      end;
  180:begin
        MoveTo(x-4,y-2);    LineTo(x-20,y-10);
        MoveTo(x-2,y+2);    LineTo(x-20,y+10);
        MoveTo(x-20,y-15);  LineTo(x-20,y+15);
        pen.Width:=1;
        for i := 1 to 6 do  begin
          MoveTo(x-20,y-15+i*5);
          LineTo(x-25,y-20+i*5);
        end;
      end;
  270:begin
        MoveTo(x+2,y+4);     LineTo(x+10,y+20);
        MoveTo(x-2,y+4);     LineTo(x-10,y+20);
        MoveTo(x-15,y+20);   LineTo(x+15,y+20);
        pen.Width:=1;
        for i := 1 to 6 do begin
          MoveTo(x-15+i*5,y+20);
          LineTo(x-20+i*5,y+25);
        end;
      end;
  end;
  end;
end;
procedure uzel(Image:TImage; x,y:integer ;Name:string);
var i:integer;
begin
  with Image.Canvas do begin
    pen.Style:=psSolid;
    pen.Width := 3;
    Ellipse(x-4,y-4,x+4,y+4);
    i:=Pen.Color;
    Pen.Color := clBackground;
    ellipse(x-2,y-2,x+2,y+2);
    Pen.Color :=i;
    TextOut(x+5,y-5,Name);
  end;
end;
procedure StoykaVer(Image:Timage;x,y,lRt,LLf:integer);
const l1=10;
begin
with Image.Canvas do begin
  pen.Style:=psSolid;
  pen.Width := 3;
  Line(Image,x-LLf,y-l1,x+LRt,y-l1);
  Line(Image,x-LLf,y+l1,x+LRt,y+l1);
  Arc(x-LLf-l1,y-l1,x-LLf+l1,y+l1,x-LLf,y-l1,x-LLf,y+l1);
  Arc(x+LRt-l1,y-l1,x+LRt+l1,y+l1,x+LRt,y+l1,x+LRt,y-l1);
  line(Image,x,y-l1,x,y-(LRt+LLf));
end;
end;
procedure NapravVer(Image:Timage;x,y,l:integer);
var i:integer;
const d=8;
begin
with Image.Canvas do begin
  pen.Style:=psSolid;
  pen.Width := 3;
  line(Image,x-d,y-l,x-d,y);
  line(Image,x+d,y-l,x+d,y);
    pen.Width := 1;
  for i := 0 to round(l/5-1) do
    line(Image,x+d,y-l+i*5,x+2*d,y-l+(i+1)*5);
end;
end;
function Yp(H,B,e:real;a:real):real;
begin
Yp:=((H/2+B/2))+round(e*sin(a));
end;
 
function u(e, a:real):real;
 begin
 u:=e*cos(a);
 end;
{$R *.dfm}
 
procedure TForm1.Timer1Timer(Sender: TObject);
var p,code,w,i:integer; e1,b1,d1,l1,h1,k:real;
a,e,b,d,l,h,Yp1:real;   x0,y0,xa,ya,yb,xb:integer;
begin
i:=i;
p:=0;
e:=40;
d:=2*e+10;
b:=d+10;
l:=b+2*e;
h:=B+2*e+30;
  {1}
 if e=0 then e:=35;
 k:= 45/e;
 e1:=e*k;
 b1:=b*k;
 d1:=d*k;
 l1:=l*k;
 h1:=h*k;
val(Edit1.Text,p,code);
i:=i+p;
if i>360  then i:=i-360;
{2}
a:=i*Pi/180;
Yp1:=Yp(H1,B1,e1,a);
{3}
x0:=350; y0:=300;
xA:=(x0+round(e1*cos(a)));
yA:=(y0+round(e1*sin(a)));
xb:=x0;
Yb:=round(y0-(yp1-h1/2));
w:=round(b1/2);
 
 
 
if Clickpl.Checked
then Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));
{5}
 
Opora(Image1,x0,y0,0);
 
image1.Canvas.Pen.Width:=3;
Image1.Canvas.MoveTo(x0,y0); Image1.Canvas.LineTo(xA, yA);
StoykaVer(Image1,x0,ya,w,w);
NapravVer(Image1,x0,y0-round(d1/2)-15,w);
Uzel(Image1,x0,y0, '');
Uzel(Image1,xA,yA, '');
end;
 
 
 
 
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 Timer1.Enabled:=true
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 Timer1.Enabled:=false
end;
 
end.
Добавлено через 6 минут
Происходит при смене числа в поле едит1.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 23:34
Ответы с готовыми решениями:

При скрытом поле не проходит проверку
Написал небольшой тестик на знание языка. Правильный ответ пока писал, оставлял в обычном текстовом...

На форме предоставьте пользователю возможность вводить целые числа (в поле для ввода Edit). При нажатии на клавишу Enter (если поле не пусто) его соде
Разработайте приложение в соответствии с заданием. На форме предоставьте пользователю возможность...

Если в текстовое поле введены целые числа – поле подсвечивается зелёным, в остальных случаях красным
Написать программу, которая будет контролировать вводимые в текстовое поле значения. Если в...

Имеется поле с 10 значным числом, нужно взять из этого числа 3,4,5 знак и скопирывать в другое поле
Подскажите как проще это сделать

Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле?
Препод на защите лабораторной по классам дал задание большое. В общем-то все пункты я знаю как...

2
243 / 193 / 94
Регистрация: 01.05.2015
Сообщений: 732
17.05.2015, 23:37 2
скорее всего из-за того что переменные в таймере локальные и вычисляются каждый раз одинаково, а когда меняешь значение в Edit, то вычисляется по другому и картинка меняется
1
0 / 0 / 0
Регистрация: 01.11.2014
Сообщений: 9
18.05.2015, 07:13  [ТС] 3
Спасибо! Всё заработало )
0
18.05.2015, 07:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2015, 07:13
Помогаю со студенческими работами здесь

При вводе в одно поле, текст должен появляться в другом поле
как это сделать напомните пожалуиста

Поиск по базе данных при пустом исходном поле поле
Помогите доделать поиск в базе данных при условии что поле с выпадающим списком...

Автоматически обновить поле в форме при добавлении нового значения в поле со списком
помогите плииииз, у меня форма в ней поля: код(счетчик); фамилия(текст); профессия(подстановка из...

Нужно, чтобы в поле V формула считала при условии что в поле M стоит 0
привет нужно, чтобы в поле V формула считала при условии что в поле M стоит 0 в противном случае...

TChromium, поле заполняется, но при сабмите сайт пишет что поле пустое
В TChromiume надо заполнить форму логина. Поля заполняю, но при сабмите формы, сайт выдает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru