Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Борланд
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 9
#1

Свойства кнопки

16.05.2013, 20:37. Просмотров 1082. Ответов 7
Метки нет (Все метки)

Здраствуйте. В общем, мне нужно сделать программу так, чтобы написать код, а компоненты появились на форме. Я все это сделал, но есть проблема. Чтобы кнопка работала нужно указать в свойствах OnClick и свою процедуру на эту кнопку. Но сделать это можно, если кнопка есть на форме. А у меня ее там нету, она создается во время запуска программы. Как быть?
Скрин
Свойства кнопки

Код прилагаю:
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
  procedure FormCreate(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
    
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Edit1,Edit2: TEdit;
  Label1,Label2,Label3,Label4: TLabel;
  Button1,Button2: TButton;
 
implementation
 
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
 
 
Label1:=Tlabel.Create(Form1);
with Label1 do
 begin
 Parent:=Form1;
 Left:=50;
 Top:=50;
 Caption:='Катет 1: ';
 end;
 
 Label2:=Tlabel.Create(Form1);
with Label2 do
 begin
 Parent:=Form1;
 Left:=50;
 Top:=80;
 Caption:='Катет 2: ';
 end;
 
 
 Label3:=Tlabel.Create(Form1);
with Label3 do
 begin
 Parent:=Form1;
 Left:=50;
 Top:=130;
 Caption:='Гипотенуза: ';
 end;
 
  Label4:=Tlabel.Create(Form1);
with Label4 do
 begin
 Parent:=Form1;
 Left:=40;
 Top:=10;
 Caption:='прога бла бла бла ';
 end;
 
 
  Edit1:=TEdit.Create(Form1);
with Edit1 do
 begin
 Parent:=Form1;
 Left:=100;
 Top:=50;
 end;
 
 
 
   Edit1:=TEdit.Create(Form1);
with Edit1 do
 begin
 Parent:=Form1;
 Left:=100;
 Top:=80;
 end;
 
  Button1:=TButton.Create(Form1);
with Button1 do
 begin
 Parent:=Form1;
 Left:=250;
 Top:=50;
 Caption:='Рассчитать';
 end;
 
 
   Button2:=TButton.Create(Form1);
with Button2 do
 begin
 Parent:=Form1;
 Left:=250;
 Top:=80;
  Caption:='Выход';
 
 end;
 
 
 end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
d,k,t:real;
begin
k:= StrToFloat(Edit1.Text);
d:= StrToFloat(Edit1.Text);
t:= sqrt((k*k+d*d));
label3.Caption := 'Гипотенуза: ' + FloatToStr(t);
end;
 
 procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
 
 end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2013, 20:37
Ответы с готовыми решениями:

Свойства кнопки
Здраствуйте. Помогите пожалуйста подписать кнопки. Что это значит: когда мышкой...

Как сделать так, чтобы определенные свойства при нажатии кнопки
Как сделать так, чтобы определенные свойства при нажатии кнопки № 2 происходили...

Нажатие каждой кнопки приводит к ее сокрытию и показу ранее скрытой кнопки
Нажатие каждой кнопки приводит к ее сокрытию и показу ранее скрытой кнопки. При...

Добавить блокировку по определенным условиям кнопки(1), строки(edt) и кнопки(2)
1.Создать кнопку для добавления в список переключателей (RadioGroup1)...

Как вызвать событие кнопки, если я знаю номер кнопки?
У меня на форме несколько кнопок. Как вызвать событие кнопки, если я знаю номер...

7
Скандербег
930 / 889 / 293
Регистрация: 07.08.2012
Сообщений: 2,481
16.05.2013, 21:01 #2
Но сделать это можно, если кнопка есть на форме
Вас ввели в заблуждение.
Кто помешает объявить такую процедуру, а затем (во время создании кнопки) присвоить имя этой процедуры событию OnClick кнопки?
Delphi
1
2
3
4
5
6
7
8
9
10
  ...
  Button1:=TButton.Create(Form1);
  with Button1 do begin
    Parent:=Form1;
    Left:=250;
    Top:=50;
    Caption:='Рассчитать';
    OnClick := Button1Click;
  end;
  ...
1
Борланд
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 9
16.05.2013, 21:15  [ТС] #3
Спасибо большое
И меня не ввели в заблуждение, я просто не знал этого =)
0
Борланд
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 9
16.05.2013, 21:58  [ТС] #4
Еще проблема. Я заметил, что брал значение только с одного поля Edit1. Я исправил ошибку, программа компилируется, но при нажатии кнопки "рассчитать" выдает ошибку (скрин)
Свойства кнопки

Проблема в двух строках:
Delphi
1
2
k:= StrToFloat(Edit1.Text);
d:= StrToFloat(Edit2.Text);
Вот код с процедурой:
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
var
d,k,t:real;
begin
k:= StrToFloat(Edit1.Text);
d:= StrToFloat(Edit2.Text);
t:= sqrt((k*k+d*d));
label3.Caption := 'Гипотенуза: ' + FloatToStr(t);
end;
0
Скандербег
930 / 889 / 293
Регистрация: 07.08.2012
Сообщений: 2,481
16.05.2013, 22:03 #5
Проблема либо с пустым текстом в едитах, либо с запятой, разделяющей целую и дробные части числа в едитах.

Не по теме:

Надо заменить тип real на double.

0
Борланд
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 9
16.05.2013, 22:08  [ТС] #6
Вводил целые числа, числа из точкой или запятой. Одно и то же. =(

Добавлено через 1 минуту
И пробовал заменить тип на double, все то же.
0
Скандербег
930 / 889 / 293
Регистрация: 07.08.2012
Сообщений: 2,481
16.05.2013, 22:10 #7
В соседней теме обсуждалась точно такая же проблема. Может это обсуждение поможет. Иначе надо смотреть проект.
1
Борланд
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 9
16.05.2013, 22:24  [ТС] #8
Все работает, спасибо.
Ошибка была моя, я дважды задал одно поле Edit1 а потом вызывал значение из поля Edit2, которого не существовало
0
16.05.2013, 22:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2013, 22:24

Нужно написать программу, что бы при нажатии кнопки, появлялись другие кнопки, а та пропадала
То есть, нас перекидало на другую форму, но она должна быть на месте первой, и...

Как активировать кнопки при нажатии другой кнопки
Есть 1 кнопка, которая активная и 4 кнопки которые не активные вначале. По...

Бешенные кнопки». Изобразить игровое поле, по которому будут двигаться в произвольном порядке кнопки и другие элементы различного размера. Задача игро
Бешенные кнопки». Изобразить игровое поле, по которому будут двигаться в...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru