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

ComboBox и ListBox

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

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

    Регистрация:
    15 мар 2015
    Сообщения:
    26
    Симпатии:
    5
    Пол:
    Женский
    Помогите написать циклом вот такую конструкцию:
    (весь код писать не буду, только основные моменты)
    Код (Text):
    1.  
    2. .....
    3. type
    4.  
    5. TForm1 = class(TForm)
    6. ComboBox1: TComboBox;
    7. ListBox1: TListBox;
    8. procedure ComboBox1Change(Sender: TObject);
    9.  
    10. var
    11.   Form1: TForm1;
    12.   i: integer;
    13. .....
    14. procedure TForm1.ComboBox1Change(Sender: TObject);
    15. var Colors: array[1..5] of string;
    16. begin
    17.   Colors[1] := 'Red';
    18.   Colors[2] := 'Green';
    19.   Colors[3] := 'Blue';
    20.   Colors[4] := 'White';
    21.   Colors[5] := 'Black';
    22.   Colors[6] := 'Yellow';
    23.  
    24. if ComboBox1.ItemIndex =0 then
    25.   begin
    26.     Listbox1.Clear;
    27.     for i := 1 to 2 do
    28.     ListBox1.Items.Add(Colors[i]);
    29.   end;
    30.   if ComboBox1.ItemIndex =1 then
    31.   begin
    32.     Listbox1.Clear;
    33.     for i := 3 to 4 do
    34.     ListBox1.Items.Add(Colors[i]);
    35.   end;
    36.   if ComboBox1.ItemIndex =2 then
    37.   begin
    38.     Listbox1.Clear;
    39.     for i := 5 to 6 do
    40.     ListBox1.Items.Add(Colors[i]);
    41.   end;
    42. end.
    43.  
    Нужно сделать так, чтобы не писать каждый раз если ComboBox.ItemIndex =1......вдруг этих 'если' будет 150 или больше.
    Пробовала создать массив A: array[1..3] of string вот так:
    Код (Text):
    1.  
    2. var A: array[1..3] of string;
    3. A[1] := 'Part1';
    4. A[2] := 'Part2';
    5. A[3] := 'Part3';
    6.  
    7. for i := 1 to 3 do
    8. ComboBox1.Items.Add(A[i]);
    9.  


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

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

    Код (Delphi):
    1. var
    2.   A: array [0..500] of string;
    3.   ComboBox1: TComboBox;
    4.  
    5. procedure Процедура;
    6. var
    7.   i: integer;
    8. begin
    9. // Сдесь например создаем ComboBox1;
    10. for i:=0 to 500 do
    11. begin
    12. if i = 0 then begin
    13.   A[i]:='Empty';
    14.   ComboBox1.Items.Add(A[i]);
    15. end else begin
    16.   A[i]:='Part '+IntToStr(i);
    17.   ComboBox1.Items.Add(A[i]);
    18.   end;
    19.  end;
    20. end;
     
  3. Старожил Супер модератор

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

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

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