Главная страница
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
6-1117704753
Marabunt
2005-06-02 13:32
2005.09.25
Файл FTPDemo.dpr


2-1124355965
Гость22
2005-08-18 13:06
2005.09.25
Как в поле DBLookupComboBox1 уствновить необходимое ...


1-1125571062
dreamse
2005-09-01 14:37
2005.09.25
Вопрос про TreeView


4-1122710481
ink
2005-07-30 12:01
2005.09.25
взять текст из RichEdit


14-1124922608
TG
2005-08-25 02:30
2005.09.25
Delphi или Microsoft Visual C++,