Консультация № 27744
15.10.2005, 17:44
0.00 руб.
0 7 7
Здравствуйте уважаемые эксперты!

Проблема такая. Мне нужно что бы внутири моей программы по щелчку на button1 переменная i увеличиволась на единицу и при этом сохраняла свой результат. Заранее спасибки!

Обсуждение

Неизвестный
15.10.2005, 17:49
общий
это ответ
Здравствуйте, NIKOLLAY!
тогда обьявляй переменную не в вызываемой процедуре а в самом моделе тогда эта переменная станет глобальной для этого модуля
смотри приложение


Приложение:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; i: integer;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin inc(i); Caption:= IntToStr(i);end;end.
Неизвестный
15.10.2005, 18:06
общий
это ответ
<i>Здравствуйте, <b>NIKOLLAY</b>!</i>
Куда "сохраняла" результат?

Для увеличения переменной i на единицу используйте процедуру <i>inc(i);</i>

Если Вы используете эту переменную только в форме, опишите ее в разделе <i>Private</i> класса формы
<i>TForm1 = <b>class</b>(TForm)
...
<b>private</b>
i: Integer;
...
<b>end;</b></i>

Если Вы хотите, чтобы переменная была доступна из всех модулей, то определите ее как глобальную переменную:
<i><b>var</b>
Form1: TForm1;
i: Integer;
...</i>

Но не определяйте ее в обоих местах - это может привести к ошибкам
давно
Мастер-Эксперт
425
4118
15.10.2005, 18:45
общий
это ответ
Здравствуйте, NIKOLLAY!
Сделайте глобальную переменную и работайте с ней. Пример см в приложении.


Приложение:
unit Unit4;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;type TForm4 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form4: TForm4; i: integer; {Это Ваша глобальная переменная}implementation{$R *.dfm}procedure TForm4.Button1Click(Sender: TObject);begin Inc(i);end;end.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
15.10.2005, 19:06
общий
это ответ
Здравствуйте, NIKOLLAY!
В дополнение ко всем ответам - можно не заводить новую переменную, а просто использовать TButton1.Tag. Это свойство позволяет хранить любые числовые значения, да и связь с TButton1 более чем очвидна - не ошибешься, как с глобальной переменной. Только увеличивать значение придется не инкрементом, а через TButton1.Tag := TButton1.Tag + 1
Неизвестный
15.10.2005, 21:18
общий
это ответ
Здравствуйте, NIKOLLAY!
У каждого компонента есть незадествованная переменная Tag целого типа, её можно использовать в своих целях. Установите 0 в свойстве Tag кнопки Button1, а дав обработчике нажатия напишите:

procedure TForm1.Button1Click(Sender: TObject);
begin
button1.tag:=button1.tag+1;
end;

Тепрерь при нажатии на кнопку Tag будет увеличиваться на 1, при этом его значение будет доступно и из других процедур
Неизвестный
16.10.2005, 09:14
общий
это ответ
Здравствуйте, NIKOLLAY!
Надо объявить глобальную переменную( там же где Form:Tform1}
var i:integer;

и писать inc(i) в событии Button1Click;
Неизвестный
16.10.2005, 10:12
общий
это ответ
Здравствуйте, NIKOLLAY!
Хм. Я немного не понял второй части вопроса - что значит "сохраняла свой результат" ? Пишем: <font color=#0066CC><b>Inc(i);</b></font>. Переменная i увеличивается на единицу. Куда её сохранить-то нужно? В памяти она и сохраняется.
Форма ответа