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
    Сообщения:
    316
    Симпатии:
    346
    Пол:
    Мужской
    Ирина, извините что пример на Inno (нет Делфи да и языки схожи). А что если сделать массив кнопок, и потом в процедуре прогонять через цикл, а на группы разделить оператором case of ?

    Код (Inno):
    [Setup]
    AppName=My Application
    AppVersion=1.5
    DefaultDirName={sd}\My Application

    [Code]
    var
      OneGroup, TwoGroup: TButton;
      ButtonGroup: array [1..6] of TButton;

    procedure HideOrShowButtons(aCount: Integer);
    var
      i: Integer;
    begin
    case aCount of
      1: begin
        for i:=1 to 3 do begin ButtonGroup[i].Visible:=True;
    end;
        for i:=4 to 6 do begin ButtonGroup[i].Visible:=False;
     end;
    end;
      2: begin
        for i:=1 to 3 do begin ButtonGroup[i].Visible:=False;
    end;
        for i:=4 to 6 do begin ButtonGroup[i].Visible:=True;
       end;
      end;
     end;
    end;

    procedure OnClick(Sender: TObject);
    begin
     case Sender of
      OneGroup: HideOrShowButtons(1);
      TwoGroup: HideOrShowButtons(2);
     end;
    end;

    procedure InitializeWizard;
    var
      i: Integer;
    begin
    with WizardForm do
    begin
      Position:=poScreenCenter;
      NextButton.Width:=0; OuterNotebook.Hide;
      InnerNotebook.Hide; Bevel1.Hide; Bevel.Hide;
    end;

    for i:=1 to 3 do begin
      ButtonGroup[i]:=TButton.Create(WizardForm);
      ButtonGroup[i].Parent:=WizardForm;
      ButtonGroup[i].SetBounds(ScaleX(10), ScaleY(i*30-20), ScaleX(100), ScaleY(25));
      ButtonGroup[i].Caption:='Button '+IntToStr(i);
    end;

    for i:=4 to 6 do begin
      ButtonGroup[i]:=TButton.Create(WizardForm);
      ButtonGroup[i].Parent:=WizardForm;
      ButtonGroup[i].SetBounds(ScaleX(120), ScaleY(ButtonGroup[i-3].Top), ScaleX(100), ScaleY(25));
      ButtonGroup[i].Caption:='Button '+IntToStr(i);
    end;

    OneGroup:=TButton.Create(WizardForm);
    with OneGroup do
    begin
      Parent:=WizardForm;
      SetBounds(ScaleX(10), ScaleY(120), ScaleX(100), ScaleY(25));
      Caption:='Button A';
      OnClick:=@OnClick;
    end;

    TwoGroup:=TButton.Create(WizardForm);
    with TwoGroup do
    begin
      Parent:=WizardForm;
      SetBounds(ScaleX(120), ScaleY(120), ScaleX(100), ScaleY(25));
      Caption:='Button B';
      OnClick:=@OnClick;
    end;
      HideOrShowButtons(1)
    end;
     
    Последнее редактирование: 24 июл 2017
    Timick и Ramiro Cruzo нравится это.
  3. Ветеран

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

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

    Код (Delphi):

    Procedure TMainForm.Button_AClick(Sender: TObject);
    begin
      if not Panel1.Visible then Panel1.Visible := True;
      if Panel2.Visible then Panel2.Visible := False;
    end;

    Procedure TMainForm.Button_BClick(Sender: TObject);
    begin
      if not Panel2.Visible then Panel2.Visible := True;
      if Panel1.Visible then Panel1.Visible := False;
    end;
     
     

    Вложения:

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

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