Задать вопрос
@Romanson

Кто поможет разобраться в коде по ListBox?

309e4281c2264f919aadb1ae9b7422af.pngНа форме есть 2 listbox и memo, что я пытаюсь сделать на андроид приложение- Есть некая база в memo в ней строки вида "#0 Гостиница 1", "#0 Гостиница 2","#1 Ресторан 1", "#1 Ресторан 2" и т.д. Listbox1 выступает как меню навигации в нем так же есть Префикс в названии строки "#0 Гостиницы", "#1 Рестораны".

Пытаюсь в lstbox2 вывести результат по событию OnItemClick -

Проверяет если номер нажатой строки совпадает с префиксом строки в Listbox (номер ищу по второму символу) т.е. с "#0" получаю просто "0" то в listbox2 выводился из базы Memo список строк начинающихся с #0.

Так вот - У меня вышло получить номер нажатой строки в listbox1 "МЕню навигации" но не могу вывести результат с мемо... помогите

procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
var
  n, i: integer;
  s, k, t, d: string;
begin
  n := ListBox1.ItemIndex;

  k := ListBox1.Items[ListBox1.ItemIndex];
  if length(k) = 1 then
    s := k
  else
    s := k[2];

  if n = strtoint(s) then
  begin
    ListBox2.Clear;

    for i := 0 to Memo1.Lines.Count - 1 do

      t := Memo1.Lines[i];
    if length(t) = 1 then
      t := d
    else
      t := d[2];

    if t = inttostr(n) then

      ListBox1.Items.Add(Memo1.Lines[i]);

  end;

end;


ОТВЕТ Может кому понадобится:

procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
var
  n, i: integer;
  s, k, c, v, d: string;
begin
  ListBox2.Clear;
  n := ListBox1.ItemIndex;

  k := ListBox1.Items[ListBox1.ItemIndex];
  if length(k) = 1 then
    s := k
  else
    s := k[2];

  if n = strtoint(s) then
  begin
    for i := 0 to Memo1.Lines.Count - 1 do
    begin

      v := Memo1.Lines.Strings[i];

      if length(v) = 1 then
        c := v

      else
      begin
        c := v[2];
        if c = s then
        begin

          d := Memo1.Lines.Strings[i];
          ListBox2.Items.Add(d);
        end;
      end;
    end;
  end;

end;
  • Вопрос задан
  • 244 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@zRabbit
Заменить k := ListBox1.Items[ListBox1.ItemIndex]; на k := ListBox1.Items.Strings[ListBox1.ItemIndex];
Примерно так, тут ошибка обращения по несуществующему иднексу, возможно нужно использовать -1(index)
Ответ написан
@Romanson Автор вопроса
77e86ca2258d4edcb96d1f2eb466b526.pngвот что выводит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы