Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Поиск в ListBox не работает из-за цифр?   Найти похожие ветки 

 
kyn66 ©   (2005-08-30 14:40) [0]

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

ListBox1.Perform(LB_SELECTSTRING, 0, LongInt(PChar(Edit1.text)))

, то при MultiSelect = True, если в листе присутствует 10, то 1 уже не добавляется после проверки. Если MultiSelect = False, то 10 проскакивает, хоть в листе 10 уже есть. Почему поиск не работает? Может потому, что я ввожу цифры?


 
tesseract ©   (2005-08-30 22:34) [1]

С точки зрения Tedit  - всё символы, с точки зрения Longint - всё цифры.
подумай что ты реально добавляешь


 
Наиль ©   (2005-08-30 22:37) [2]

Только сейчас заметил (спасибо  tesseract)
LongInt(PChar(Edit1.text)) - числовое значение адреса первой буквы текста


 
Наиль ©   (2005-08-30 22:39) [3]

Стормозил. Передать строку в Perform можно только таким способом.


 
begin...end ©   (2005-08-31 08:41) [4]

> kyn66 ©   (30.08.05 14:40)

> ListBox1.Perform(LB_SELECTSTRING, 0, LongInt(PChar(Edit1.text)))

ListBox1.Perform(LB_SELECTSTRING, -1, LongInt(PChar(Edit1.text)))

> то при MultiSelect = True...

MSDN: Do not use this message with a list box that has the LBS_MULTIPLESEL or the LBS_EXTENDEDSEL styles.


 
kyn66 ©   (2005-08-31 11:51) [5]

>> begin...end
Насчет -1 я в курсе, уже исправил, но это не столько важно в данной ситуации. Меня угнетает поиск в принципе. А что означает сия строка, штось не допру.. Do not use this message with a list box that has the LBS_MULTIPLESEL or the LBS_EXTENDEDSEL styles Т.е. MultiSelect нельзя ставить True? Так каой выход?. Сечас делаю проверку через таблицу в памяти, но не хотелось-бы прогу раздувать, подвешивая лишние компоненты. 8-(

>> LongInt(PChar(Edit1.text)) - числовое значение адреса первой буквы текста

Так ка-же тогда искать на полное совпадение?


 
tesseract ©   (2005-08-31 13:43) [6]

>>Так ка-же тогда искать на полное совпадение?

А просто PChar не подходит?
Тогда выбери нужный вариант

var temp:PCHAR;
new(temp);
temp:=PCHAR(edit.text);
ListBox1.Perform(LB_SELECTSTRING, -1, @temp);

ListBox1.Perform(LB_SELECTSTRING, -1, LongInt(@PChar(Edit1.text)))


 
kyn66 ©   (2005-08-31 14:37) [7]

>> а это уже проверено? Ща буду пробывать искать.


 
begin...end ©   (2005-08-31 14:55) [8]

> kyn66 ©   (31.08.05 11:51) [5]

> Т.е. MultiSelect нельзя ставить True?

MultiSelect можно ставить в True, но при этом не надо использовать LB_SELECTSTRING.

> Так ка-же тогда искать на полное совпадение?

ListBox.Items.IndexOf вызывать?

> tesseract ©   (31.08.05 13:43) [6]

Неверно.


 
kyn66 ©   (2005-08-31 19:24) [9]

>> Действительно не работает.


 
tesseract ©   (2005-08-31 21:22) [10]

Странно, должно работать.
Проблема в том что ты должен передать адрес PChar в функцию,
Попробуй (PChar(edit1.text)^) без longint.


 
begin...end ©   (2005-08-31 21:32) [11]

> tesseract ©   (31.08.05 21:22) [10]

> Странно, должно работать.

Не должно.

> ты должен передать адрес PChar в функцию

Не должен.

> Попробуй (PChar(edit1.text)^) без longint.

Не надо.


 
Германн ©   (2005-09-01 01:03) [12]

2 begin...end ©   (31.08.05 21:32) [11]

Ты не так ответил! :)

Надо бы было так:
> tesseract ©   (31.08.05 21:22) [10]

> Странно, должно
Не должно.

> ты должен
Не должен.

> Попробуй
Не надо.

Но тогда бы пришлось ставить копирайт. :(


 
kyn66 ©   (2005-09-01 11:03) [13]

>> begin...end
ListBox.Items.IndexOf - работает. Тогда и StringList должен с этим отработать правильно?


 
begin...end ©   (2005-09-01 11:06) [14]

> kyn66 ©   (01.09.05 11:03) [13]

> Тогда и StringList должен с этим отработать правильно?

Да. А причём здесь TStringList?


 
Наиль ©   (2005-09-01 11:15) [15]

У меня очущение, что отвечаю не в тему из-за фразы
> то 10 проскакивает, хоть в листе 10 уже есть
Но всё равно попробую.
Если нужно полное совпадение, то я делаю так:
ListBox1.ItemIndex:=ListBox1.Items.IndexOf("10");


 
kyn66 ©   (2005-09-01 15:07) [16]

Все нормально. После применения IndexOf (спасибо begin...end) все проверяет как надо.

Хочу попросить администратора форума присвоить begin...end степень магистра за неоднократные, грамотные, очень понятные ответы. СПАСИБО !



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
3-1123788901
Alexander Panov
2005-08-11 23:35
2005.09.25
СУБД для WEPApplication.


1-1125656129
leonid
2005-09-02 14:15
2005.09.25
Нужен компонент, работающий с ZIP-архивами


1-1125398415
kyn66
2005-08-30 14:40
2005.09.25
Поиск в ListBox не работает из-за цифр?


14-1125824649
KilkennyCat
2005-09-04 13:04
2005.09.25
4 сентября. С Днем рождения!


3-1123686062
Виталька2005
2005-08-10 19:01
2005.09.25
Фильтр и количество строк в табличке