Страница 1 из 1
procedure TForm1.DigitBtnClick(Sender: TObject);
Добавлено: 29 янв 2007, 16:20
Сейчас_не_спящий
procedure TForm1.DigitBtnClick(Sender: TObject); такая вот строчка в примере написана, наверняка кто-нибудь встречал её.
А как её вызвать? Глупо но факт - я не могу найти как.
Кто-нибудь знает как вызвать эту процедуру? На что надо нажать? В учебниках не нашёл.
Re: procedure TForm1.DigitBtnClick(Sender: TObject);
Добавлено: 29 янв 2007, 16:45
somewhere
Судя по названию, это наверняка кнопка, по нажатию которой зовется процедура
" писал(а):такая вот строчка в примере написана, наверняка кто-нибудь встречал её
Процедуру можно назвать как угодно, даже если ее кто-то и встречал, не факт что она делает тоже самое.
" писал(а):Кто-нибудь знает как вызвать эту процедуру? На что надо нажать?
Где-то на форме возможно есть кнопка с именем DigitBtn. Вот на нее и надо нажать.
Вызвать можно так:
Re: procedure TForm1.DigitBtnClick(Sender: TObject);
Добавлено: 29 янв 2007, 17:40
Сейчас_не_спящий
Я оже так думал, но проштудировал справочники, такой не нашёл, вообще компонента с похожим названием не нашёл. Вот поный код программы Калькулятор из учебника:
var
accum: real;
oper: integer;
// аккумулятор
// операция: 1 — '+'; 2 — '-';
//О — "выполнить" (кнопка "=")
f: integer;
{ f = 0 ждем первую цифру нового числа, например,
после выполнения операции, когда
на индикаторе результат. f = 1 ждем остальные цифры. }
// Щелчок на кнопках "О" — "9"
procedure TForml.DigitBtnClick(Sender: TObject);
var
Btn: TButton;
ch: Char; begin
Btn := Sender as TButton;
ch := Chr(48+Btn.Tag);
// chr(48) = '0'; chr(49) = 4' и т. д.
// можно и так: ch := Btn.Caption;
case Btn.Tag of
1..9: // кнопки "1" - "9"
if f = 0 // первая цифра числа then begin
Editl.Text := ch; f := 1;
// ждем остальные цифры end else Editl.Text := Editl.Text + ch;
0: // кнопка "О"
if Editl.Text <> '0' //на индикаторе О
// чтобы на индикаторе не было
// нескольких нулей в начале числа then Editl.Text := Editl.Text + 'О1; end; end;
// десятичная точка
procedure TForml.ButtonZClick(Sender: TObject);
begin
if Editl.Text = '0' then
begin
Edit1.Text := '0, ' ; f := 1; end; if Pos (', ',Editl.Text) = 0 then
Editl.Text := Editl.Text + ','; end;
// выполнение операции procedure DoOper; var
numb: real; // число на индикаторе begin
// accum содержит результат предыдущей
// операции, орег — код операции, которую
// надо выполнить. Операнд находится // на индикаторе.
numb := StrToFloat(Forml.Editl.Text); case oper of 0:
accum := numb; 1: accum := accum + numb; 2: accum := accum — numb; end;
Forml.Editl.Text := FloatToStr(accum); end;
// Обрабатывает щелчок на кнопках "+", "-" и "="
procedure TForml.OpBtnClick(Sender: TObject);
l Надо выполнить предыдущую операцию, вывести результат
на индикатор, запомнить текущую операцию и установить
режим ожидания первой цифры нового числа. } var
Btn: TButton; begin
Btn := Sender as TButton;
if f = 0 // ждем первую цифру, но пользователь
// щелкнул на кнопке операции then
// свойство Tag кнопки хранит код операции oper := Btn.Tag
// запомним операцию else begin
DoOper; // выполнить предыдущую операцию oper := Btn.Tag; // запомнить текущую операцию f1=0; // ждем первую цифру нового числа
end; end;
// кнопка "с" — очистка
procedure TForml.ButtonCClick(Sender: TObject);
begin
Edit1.Text := '0';
accum := 0;
oper := 0;
f := 0; // ждем первую цифру числа end;
// нажатие клавиши в поле Editl
procedure TForml.EditIChange(Sender: TObject; var Key:Char);
begin
Key := Chr(0); // не отображать символы end;
procedure TForml.FormCreate(Sender: TObject); begin
oper := 0; end;
end.
Просто не хочу описывать каждую кнопку, нашёл такой вариант обработки, решил попробовать и застопорился на этой процедуре procedure TForm1.DigitBtnClickSender: TObject); Описания про неё нету. Помоги разобраться как её найти? Если разберёшся распиши подробно как и что, буду весьма признателен.
Re: procedure TForm1.DigitBtnClick(Sender: TObject);
Добавлено: 30 янв 2007, 08:57
somewhere
На форме видимо есть некая цифровая панель в виде кнопок. Все они завязаны по нажатию на эту процедуру. У каждой кнопки есть Tag, по которому их собственно и различают. Потом Tag преобразуют в символ и добавляют к эдиту, но с условиями - например, чтобы нулей вначале больше одного не было. Калькулятор похоже...
" писал(а):Я оже так думал, но проштудировал справочники, такой не нашёл, вообще компонента с похожим названием не нашёл. Вот поный код программы Калькулятор из учебника:
Повторяю еще раз, DigitBtnClick - это название процедуры, оформлена она как событие, потому очень многие события РАЗНЫХ контролов можно завязать именно на нее. TButton есть в любом справочнике, странно что ты его не нашел. Процедуру можно назвать даже
TForm1.PoNazhatiuCifrovihKnopok(Sender: TObject);
Тогда уж точно никто ни в каком справочнике ее не найдет :-)
Re: procedure TForm1.DigitBtnClick(Sender: TObject);
Добавлено: 30 янв 2007, 09:37
Сейчас_не_спящий
" писал(а): TButton есть в любом справочнике, странно что ты его не нашел.
=))) Кнопку само собой нашёл=))), просто с процедурами не разобрался.
В любом случае спасибо, буду знать что учить. Тему можно и закрыть.
Re: procedure TForm1.DigitBtnClick(Sender: TObject);
Добавлено: 30 янв 2007, 17:54
Игорь Акопян
Сейчас_не_спящий, для справки:
довольно часто одна процедура обработки события используется в несколких контролах. В данном случае событие OnClick компонента TButton (предположительно) было назначено всем цифровым кнопкам калькулятора (для этого выделяются кнопки формы и даблклик по событию) В последствии в ObjectInspector можно изменить автоматически созданное имя процедуры...