Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ListBox


Автор: Andervers 18.2.2006, 21:31
Начнём задавать тупые вопросы...smile

Есть ListBox, Memo, Image.

При выборе одного из пунктов ListBox должно меняться Image и Memo.
Memo должно брать инф. из внешнего *.txt

Для начала просто скажите, как сделать выделение(вроде: при щелчке на ListBox.ItemIndex:=1 then ....)

PS: Сразу хочу сказать, что прочесал FAQ и в поиске, ив Yandex'e прошелся, но не нашел

Автор: SoWa 18.2.2006, 21:39
Цитата

ListBox.ItemIndex:=1

Это присваивание, а не условие.
условие:
Код

if listbox1.itemindex=x then
{for example}
begin
memo1.Lines.LoadFromFile(listbox1.items(ListBox1.ItemIndex));
Image1.Picture.loadFromFile('sample.bmp');
end;


А вообще почитай книжки для.... начинающих. Там есть все для человека твоего уровня.
PS
FAQ не поможет, т.к. там такие простые примеры не выкладывают.

Автор: Andervers 18.2.2006, 21:52
Просто до этого с ListBox'ом практически не работал...
А твой код - он при клике работае? Или при каком условии??

(Самому стыдно за такие вопросы))
Добавлено @ 22:02
Всё, можете не отвечать, разобрался))

Автор: SoWa 18.2.2006, 22:02
Если загнать этот код в событие OnClick или OnDbClick, то по одному или двум кликам соответственно будет происходить это распознавание строчки и все вытекающие последствия. smile

Автор: Демо 18.2.2006, 22:30
Код

procedure TForm1.ListBox1Click(Sender: TObject);
begin
    if ListBox1.Items.Count>0 then ShowMessage('Клик на '+IntToStr(ListBox1.ItemIndex)+' элементе');
end;


Автор: Snowy 20.2.2006, 10:28
Но не будет изменяться при выборе с клавиатуры.
Если нужно фиксировать все, то лучше запоминать последнюю выбранную позицию, а в OnIdle проверять, не изменилась ли она.
Но проверять на клик проще. Многие программы проверяют только клик и Enter, а клавишами не выбирают.
Добавлено @ 10:30
Демо, нужна поправочка на то, что клик может быть в листбоксе, но не на пункте.
То есть я могу кликнуть ниже списка - клик все равно будет.

Автор: Демо 20.2.2006, 17:08
Цитата(Snowy @ 20.2.2006, 10:28 Найти цитируемый пост)
То есть я могу кликнуть ниже списка - клик все равно будет.


Разве? Я вроде попробовал - не срабатывает OnClick. Ну да могу ошибаться...

Автор: Guedda 20.2.2006, 20:54
Ну тогда можно еще одно условие сделать:
Код

if ListBox1.ItemIndex >=0 //...

Автор: Демо 20.2.2006, 20:55
Код

procedure TForm1.ListBox1Click(Sender: TObject);
begin
        ShowMessage(IntToStr(TListBox(Sender).ItemIndex));
end;



Специально еще раз проверил. Срабатывает только в области, заполненной строками.
В другом месте OnClick не возникает.

Автор: Snowy 20.2.2006, 22:08
Цитата(Демо @ 20.2.2006, 20:55 Найти цитируемый пост)
Специально еще раз проверил. Срабатывает только в области, заполненной строками.
Угу. Это я с ListView спутал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)