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

ComboBox и ListBox

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

  1. Ветеран

    Регистрация:
    15 мар 2015
    Сообщения:
    26
    Симпатии:
    5
    Пол:
    Женский
    Помогите написать циклом вот такую конструкцию:
    (весь код писать не буду, только основные моменты)
    Код (Text):

    .....
    type

    TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ListBox1: TListBox;
    procedure ComboBox1Change(Sender: TObject);

    var
      Form1: TForm1;
      i: integer;
    .....
    procedure TForm1.ComboBox1Change(Sender: TObject);
    var Colors: array[1..5] of string;
    begin
      Colors[1] := 'Red';
      Colors[2] := 'Green';
      Colors[3] := 'Blue';
      Colors[4] := 'White';
      Colors[5] := 'Black';
      Colors[6] := 'Yellow';

    if ComboBox1.ItemIndex =0 then
      begin
        Listbox1.Clear;
        for i := 1 to 2 do
        ListBox1.Items.Add(Colors[i]);
      end;
      if ComboBox1.ItemIndex =1 then
      begin
        Listbox1.Clear;
        for i := 3 to 4 do
        ListBox1.Items.Add(Colors[i]);
      end;
      if ComboBox1.ItemIndex =2 then
      begin
        Listbox1.Clear;
        for i := 5 to 6 do
        ListBox1.Items.Add(Colors[i]);
      end;
    end.
     
    Нужно сделать так, чтобы не писать каждый раз если ComboBox.ItemIndex =1......вдруг этих 'если' будет 150 или больше.
    Пробовала создать массив A: array[1..3] of string вот так:
    Код (Text):

    var A: array[1..3] of string;
    A[1] := 'Part1';
    A[2] := 'Part2';
    A[3] := 'Part3';

    for i := 1 to 3 do
    ComboBox1.Items.Add(A[i]);
     


    Получается первая строка ComboBox1 пустая, а дальше всё выводится.
     
    Последнее редактирование: 1 сен 2017
  2. Ветеран Модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    309
    Симпатии:
    339
    Пол:
    Мужской
    Ирина, может на Delphi так же работает, как и на Inno:

    Код (Delphi):
    var
      A: array [0..500] of string;
      ComboBox1: TComboBox;

    procedure Процедура;
    var
      i: integer;
    begin
    // Сдесь например создаем ComboBox1;
    for i:=0 to 500 do
    begin
    if i = 0 then begin
      A[i]:='Empty';
      ComboBox1.Items.Add(A[i]);
    end else begin
      A[i]:='Part '+IntToStr(i);
      ComboBox1.Items.Add(A[i]);
      end;
     end;
    end;
     
  3. Ветеран Модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    309
    Симпатии:
    339
    Пол:
    Мужской
    Ирина, кстати подумал, если для присвоения цвета при заполнении массива, можно прибегнуть к оператору case of, записывая значения через запятую. Пример:
    Код (Delphi):
    for i:=1 to 9 do
    begin
    case i of
      01, 02, 03: begin
      //Действие
    end;
      04, 05, 06: begin
      //Другое действие
    end;
      07, 08, 09: begin
      //Третье действие
       end;
      end;
     end;
    end;
     
  4. Developer Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    170
    Симпатии:
    88
    n:= ComboBox1.ItemIndex;
    Listbox1.Clear;
    ListBox1.Items.Add(Colors[n*2+1]);
    ListBox1.Items.Add(Colors[n*2+2]);
     
    YURSHAT и Nemko нравится это.

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