1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Группировка кнопок

Тема в разделе "Delphi", создана пользователем Ирина, 24 июл 2017.

  1. Пользователь

    Регистрация:
    15 мар 2015
    Сообщения:
    26
    Симпатии:
    5
    Пол:
    Женский
    [​IMG]
    Суть вопроса, как можно кнопки 1, 2, 3 и 6, 7, 8 сгруппировать, чтобы не прописывать каждую в отдельности. Вот примерно такой конструкции:

    Кнопки 1, 2, 3 - группа 1
    Кнопки 6, 7, 8 - группа 2
    По нажатию Button А:
    группа 1 - Отображаются;
    группа 2 - Скрываются;
    По нажатию Button B:
    группа 1 - Скрываются;
    группа 2 - Отображаются;
     
  2. Старожил Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    428
    Симпатии:
    453
    Пол:
    Мужской
    Ирина, извините что пример на Inno (нет Делфи да и языки схожи). А что если сделать массив кнопок, и потом в процедуре прогонять через цикл, а на группы разделить оператором case of ?

    Код (Inno):
    1. [Setup]
    2. AppName=My Application
    3. AppVersion=1.5
    4. DefaultDirName={sd}\My Application
    5.  
    6. [Code]
    7. var
    8.   OneGroup, TwoGroup: TButton;
    9.   ButtonGroup: array [1..6] of TButton;
    10.  
    11. procedure HideOrShowButtons(aCount: Integer);
    12. var
    13.   i: Integer;
    14. begin
    15. case aCount of
    16.   1: begin
    17.     for i:=1 to 3 do begin ButtonGroup[i].Visible:=True;
    18. end;
    19.     for i:=4 to 6 do begin ButtonGroup[i].Visible:=False;
    20.  end;
    21. end;
    22.   2: begin
    23.     for i:=1 to 3 do begin ButtonGroup[i].Visible:=False;
    24. end;
    25.     for i:=4 to 6 do begin ButtonGroup[i].Visible:=True;
    26.    end;
    27.   end;
    28.  end;
    29. end;
    30.  
    31. procedure OnClick(Sender: TObject);
    32. begin
    33.  case Sender of
    34.   OneGroup: HideOrShowButtons(1);
    35.   TwoGroup: HideOrShowButtons(2);
    36.  end;
    37. end;
    38.  
    39. procedure InitializeWizard;
    40. var
    41.   i: Integer;
    42. begin
    43. with WizardForm do
    44. begin
    45.   Position:=poScreenCenter;
    46.   NextButton.Width:=0; OuterNotebook.Hide;
    47.   InnerNotebook.Hide; Bevel1.Hide; Bevel.Hide;
    48. end;
    49.  
    50. for i:=1 to 3 do begin
    51.   ButtonGroup[i]:=TButton.Create(WizardForm);
    52.   ButtonGroup[i].Parent:=WizardForm;
    53.   ButtonGroup[i].SetBounds(ScaleX(10), ScaleY(i*30-20), ScaleX(100), ScaleY(25));
    54.   ButtonGroup[i].Caption:='Button '+IntToStr(i);
    55. end;
    56.  
    57. for i:=4 to 6 do begin
    58.   ButtonGroup[i]:=TButton.Create(WizardForm);
    59.   ButtonGroup[i].Parent:=WizardForm;
    60.   ButtonGroup[i].SetBounds(ScaleX(120), ScaleY(ButtonGroup[i-3].Top), ScaleX(100), ScaleY(25));
    61.   ButtonGroup[i].Caption:='Button '+IntToStr(i);
    62. end;
    63.  
    64. OneGroup:=TButton.Create(WizardForm);
    65. with OneGroup do
    66. begin
    67.   Parent:=WizardForm;
    68.   SetBounds(ScaleX(10), ScaleY(120), ScaleX(100), ScaleY(25));
    69.   Caption:='Button A';
    70.   OnClick:=@OnClick;
    71. end;
    72.  
    73. TwoGroup:=TButton.Create(WizardForm);
    74. with TwoGroup do
    75. begin
    76.   Parent:=WizardForm;
    77.   SetBounds(ScaleX(120), ScaleY(120), ScaleX(100), ScaleY(25));
    78.   Caption:='Button B';
    79.   OnClick:=@OnClick;
    80. end;
    81.   HideOrShowButtons(1)
    82. end;
     
    Последнее редактирование: 24 июл 2017
    Timick и Ramiro Cruzo нравится это.
  3. Старожил

    Регистрация:
    26 дек 2014
    Сообщения:
    314
    Симпатии:
    191
    Пол:
    Мужской
    Nemko, а зачем так сложно?))

    Просто работаем с Panel1 и Panel2...

    Код (Delphi):
    1.  
    2. Procedure TMainForm.Button_AClick(Sender: TObject);
    3. begin
    4.   if not Panel1.Visible then Panel1.Visible := True;
    5.   if Panel2.Visible then Panel2.Visible := False;
    6. end;
    7.  
    8. Procedure TMainForm.Button_BClick(Sender: TObject);
    9. begin
    10.   if not Panel2.Visible then Panel2.Visible := True;
    11.   if Panel1.Visible then Panel1.Visible := False;
    12. end;
    13.  
     

    Вложения:

    • GroupBtn.7z
      Размер файла:
      1,9 МБ
      Просмотров:
      17
    Ramiro Cruzo и Nemko нравится это.

Поделиться этой страницей