Topic: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

Проблема 2 процедуры, при этом нужны одни и те же поля... как можно 2 процедуры повесить на одно событие?

2 (edited by pavlenko.vladimir.v 2022-07-04 08:49:44)

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

Aza wrote:

Проблема 2 процедуры, при этом нужны одни и те же поля... как можно 2 процедуры повесить на одно событие?

begin
procedureOne(var);
procedureTwo(var);
end;

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

pavlenko.vladimir.v wrote:
Aza wrote:

Проблема 2 процедуры, при этом нужны одни и те же поля... как можно 2 процедуры повесить на одно событие?

begin
procedureOne(var);
procedureTwo(var);
end;

вот сюда прописать?

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

Aza wrote:
pavlenko.vladimir.v wrote:
Aza wrote:

Проблема 2 процедуры, при этом нужны одни и те же поля... как можно 2 процедуры повесить на одно событие?

begin
procedureOne(var);
procedureTwo(var);
end;

вот сюда прописать?

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

[img]photo1656924728.jpeg[/img]

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

что именно Вам нужно?
опишите что Вы хотите сделать

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

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

Aza wrote:

Проблема 2 процедуры, при этом нужны одни и те же поля... как можно 2 процедуры повесить на одно событие?

Вызывайте одну процедуру из другой.


Q: Problem 2 procedures, thus the same fields are necessary... how it is possible to hang up 2 procedures on one event?
A: 1) Call one procedure from another. 2) Мake a third handler in which call the procedures you need, passing parameters to them

Визуальное программирование: блог и телеграм-канал.

8 (edited by Aza 2022-07-04 09:34:21)

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

pavlenko.vladimir.v wrote:

что именно Вам нужно?
опишите что Вы хотите сделать



Здесь картины не вставляются оказывается. Хотел визуально показать.

В общем у меня в расчете задействованы 6 поля: условно назовем - поле1, поле 2, поле 3, поле 4, поле 5 и поле 6

в одной процедуре1 я задействовал 3 поля:
       если поле 1 = знач
            и поле 2 = знач
               поле 3 = знач то
           поле 5 = знач (и так далее, очен длинная процедура)

потом я эту процедуру скопировал 2 раза (получилось процедура 1, 2, 3), чтобы повесить в Свойстве компонента => События => onChange

процедуру 1 я повесил в поле 1 (для расчета);
процедуру 2 я повесил в поле 2;
процедуру 3 я повесил в поле 3.


проблема в том что мне еще нужно расчитать поле 6

где я пишу процедуру 4;
     если поле 4 = знач
       и поле 2 равно знач
       и поле 3 равно знач
     то
       поле 6 = знач
что бы расчитывала скопировать 2 раза аргументы и создать процедуры 5 и 6... затем повесить в событиях поле 4, поле 2 и поле 3

но в "Событиях" onChange в полях 2 и 3 висят уже процедуры 2 и 3.




It turns out that pictures are not inserted here. I wanted to show visually.

In general, I have six fields involved in the calculation: field1, field 2, field 3, field 4, field 5 and field 6

In one procedure1 I used three fields:
       if field 1 = value.
            and the field 2 = significant
               field 3 = significant then
           field 5 = significant (and so on, it's a very long procedure)

then I copied this procedure twice (procedure 1, 2, 3) to put it in Component Properties => Events => onChange

i put procedure 1 in the field 1 (for calculation);
I put procedure 2 in the field 2;
I put procedure 3 in the field 3.


the problem is, I still need to calculate the field 6

where I write procedure 4;
     if the field 4 = value.
       and the field 2 is equal to znach
       and the field 3 is equal to znach
     then
       the field 6 = znach
to calculate copy arguments twice and create procedures 5 and 6... then hang field 4, field 2 and field 3 in events

but in "Events" onChange fields 2 and 3 are already hanging procedures 2 and 3.

Translated with www.DeepL.com/Translator (free version)

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

k245 wrote:

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

Aza wrote:

Проблема 2 процедуры, при этом нужны одни и те же поля... как можно 2 процедуры повесить на одно событие?

Вызывайте одну процедуру из другой.


Q: Problem 2 procedures, thus the same fields are necessary... how it is possible to hang up 2 procedures on one event?
A: 1) Call one procedure from another. 2) Мake a third handler in which call the procedures you need, passing parameters to them


First procedure =>

procedure Client_culc2_onChange (Sender: TObject; Var Cancel: String);
begin                                                         // США, Канада, Малазия//
           if (Client.CheckBox1.Checked = true)
               and (client.ComboBox1.Text = '1per')
                  and (client.ComboBox2.Text = '1-7') then
               begin
                  client.Edit13.Value := 18;
               end
                  else if (Client.CheckBox1.Checked = true)
                           and (client.ComboBox1.Text = '2per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit13.Value := 27;
                             end
                    else if (Client.CheckBox1.Checked = true)
                             and (client.ComboBox1.Text = '3per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit13.Value := 33;
                             end
                    else if (Client.CheckBox1.Checked = true)
                             and (client.ComboBox1.Text = '4per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit13.Value := 37;
                             end

end;


second procedure =>

           procedure Client_culcCovid1_onChange (Sender: TObject; Var Cancel: String);
begin                                                         //Начало  расчета Covid-19//
           if (Client.CheckBox4.Checked = true)
               and (client.ComboBox1.Text = '1per')
                  and (client.ComboBox2.Text = '1-7') then
               begin
                  client.Edit15.Value := 5;
               end
                    else if (Client.CheckBox4.Checked = true)
                           and (client.ComboBox1.Text = '2per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit15.Value := 5;
                             end
                    else if (Client.CheckBox4.Checked = true)
                           and (client.ComboBox1.Text = '3per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit15.Value := 5;
                             end
                    else if (Client.CheckBox4.Checked = true)
                           and (client.ComboBox1.Text = '4per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit15.Value := 5;
                             end
                    else if (Client.CheckBox4.Checked = true)
                           and (client.ComboBox1.Text = '5per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit15.Value := 5;
                             end
                   else if (Client.CheckBox4.Checked = true)
                           and (client.ComboBox1.Text = '6per')
                                and (client.ComboBox2.Text = '1-7') then
                             begin
                                    client.Edit15.Value := 5;
                             end
   end;



      How make a third handler in which call the procedures?

like this?


procedure Client_addtwoprocedure_onChange (Sender: TObject; Var Cancel: String);
begin         
            procedure Client_culc2_onChange (Sender: TObject; Var Cancel: String);
            procedure Client_culcCovid1_onChange (Sender: TObject; Var Cancel: String);

end;

10 (edited by pavlenko.vladimir.v 2022-07-04 10:56:10)

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

Procedure ifClient;
begin
  if (Client.CheckBox4.Checked = true) then
  begin 
    if (client.ComboBox1.Text = '') AND (client.ComboBox2.Text = '') then client.Edit4.Value := 5;
    if (client.ComboBox3.Text = '') AND (client.ComboBox4.Text = '') then client.Edit6.Value := 5;
  end;
end;

 
в событиях Вам нужно просто сослаться на процедуру (ifClient)

11

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

pavlenko.vladimir.v wrote:
Procedure ifClient;
begin
  if (Client.CheckBox4.Checked = true) then
  begin 
    if (client.ComboBox1.Text = '') AND (client.ComboBox2.Text = '') then client.Edit4.Value := 5;
    if (client.ComboBox3.Text = '') AND (client.ComboBox4.Text = '') then client.Edit6.Value := 5;
  end;
end;

 
в событиях Вам нужно просто сослаться на процедуру (ifClient)

да, я сосласлся.

так у меня еще одна процедура есть (ifClient2)
которую нужно повесить на то же поле.

Yes, I referred to it.

So I have another procedure (ifClient2)
which I need to put on the same field.

12

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

pavlenko.vladimir.v wrote:
Procedure ifClient;
begin
  if (Client.CheckBox4.Checked = true) then
  begin 
    if (client.ComboBox1.Text = '') AND (client.ComboBox2.Text = '') then client.Edit4.Value := 5;
    if (client.ComboBox3.Text = '') AND (client.ComboBox4.Text = '') then client.Edit6.Value := 5;
  end;
end;

 
в событиях Вам нужно просто сослаться на процедуру (ifClient)


проблем в том, что CheckBox у меня два, если он одну выберет , то одна процедура
если другую, то другая процедура при двух одинаковых полях(в обоих случаях) ComboBox



The problem is that I have two CheckBoxes, if it selects one, then one procedure
If the other, then the other procedure with two identical fields (in both cases) ComboBox

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

Aza wrote:

да, я сосласлся.

так у меня еще одна процедура есть (ifClient2)
которую нужно повесить на то же поле.

у Вас две одинаковых процедуры, в них нет смысла
Вам нужно ссылаться на одну процедуру, просто нужно правильно написать условие
Вот пример:

Post's attachments

Attachment icon test.rar 3.08 kb, 168 downloads since 2022-07-04 

14

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

pavlenko.vladimir.v wrote:
Aza wrote:

да, я сосласлся.

так у меня еще одна процедура есть (ifClient2)
которую нужно повесить на то же поле.

у Вас две одинаковых процедуры, в них нет смысла
Вам нужно ссылаться на одну процедуру, просто нужно правильно написать условие
Вот пример:

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

Isn't it easier to simplify it all?


begin                                                         //Начало  расчета Covid-19//
           if (Client.CheckBox4.Checked = true)
               and (client.ComboBox1.Text = '1per')
                  and (client.ComboBox2.Text = '1-7') then
               begin
                  client.Edit15.Value := 5;
               end
                    else if ...
                             begin
                                    client.Edit15.Value := 5;
                             end
                    else if ....
                             begin
                                    client.Edit15.Value := 5;
                             end
                    else if ...
                             begin
                                    client.Edit15.Value := 5;
                             end
                    else if ... then
                             begin
                                    client.Edit15.Value := 5;
                             end
                   else if ...
                             begin
                                    client.Edit15.Value := 5;
                             end
   end;

Isn't it easier to simplify it all? All this returns only one value... Might think first...

16 (edited by k245 2022-07-04 12:42:54)

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

Aza wrote:

      How make a third handler in which call the procedures?

like this?


procedure Client_addtwoprocedure_onChange (Sender: TObject; Var Cancel: String);
begin         
            procedure Client_culc2_onChange (Sender: TObject; Var Cancel: String);
            procedure Client_culcCovid1_onChange (Sender: TObject; Var Cancel: String);

end;


procedure Client_addtwoprocedure_onChange (Sender: TObject; Var Cancel: String);
begin         
  Client_culc2_onChange (Sender, Cancel);
  Client_culcCovid1_onChange (Sender, Cancel);
end;
Визуальное программирование: блог и телеграм-канал.

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

maybe it's easier to control?
Especially if you show what you have in the program and what you want?
At least for an example.

18

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

sparrow wrote:

maybe it's easier to control?
Especially if you show what you have in the program and what you want?
At least for an example.

I cant(

Warning! The following errors must be corrected before your message can be posted:
The selected file was too large to upload. The server didn't allow the upload.

19

Re: Сколько процедур можно прикрепить на 1 поле в "События" OnChange?

k245 wrote:
Aza wrote:

      How make a third handler in which call the procedures?

like this?


procedure Client_addtwoprocedure_onChange (Sender: TObject; Var Cancel: String);
begin         
            procedure Client_culc2_onChange (Sender: TObject; Var Cancel: String);
            procedure Client_culcCovid1_onChange (Sender: TObject; Var Cancel: String);

end;


procedure Client_addtwoprocedure_onChange (Sender: TObject; Var Cancel: String);
begin         
  Client_culc2_onChange (Sender, Cancel);
  Client_culcCovid1_onChange (Sender, Cancel);
end;


огромное спасибо!!!! Получилось!!!

thanks a lot!!!! It worked!!!