êàê ñäåëàòü êîíòåêñòíûé ïîèñê?

vendim

Member
íóæíî ÷òî-òî òèïà òàêîãî:
åñòü òàáëèöà. â íåé åñòü êîëîíêà "àðòèêóë".
è åñòü ïîëå ââîäà. ß â íåì íà÷èíàþ ââîäèòü àðòèêóë, à íèæå ìíå óæå äîëæíû ïðåäëàãàòüñÿ âñå âàðèàíòû ñòðîê èç òàáëèöû, àðòèêóë êîòîðûõ íà÷èíàåòñÿ íà ââåäåííûå ñèìâîëû. âî êàê. êòî çíàåò êàê ýòî ðåàëèçîâàòü?
 
Last edited:

AlexSVC

Member
Событие keypress, на текстовом поле, сорт таблицы по указанной колоки с указанным ключем в текстовом поле.
 

vendim

Member
Событие keypress, на текстовом поле, сорт таблицы по указанной колоки с указанным ключем в текстовом поле.

Спасибо, щаз омсмыслю и прапробою. ;)

А не. Не совсем то что хотелось... бы.

Хочется чтобы под TextBox-ом выпадал ниспадающий список вариантов (че-то типа ListBox-а), а таблица при этом оставалась бы неизменной. Так смогем?
 
Last edited:

AlexSVC

Member
Можно, тока я так не пробывал
На пальцах так:
Копия исходной таблицы с одной колонкой которую будеш выбирать (как и прошлый раз сорт и т.д.), и эта таблица становится видимой только когда нада (т.е. когда в клацать буквы будеш). Исчезать ее можно по таймеру.
 

vendim

Member
... ñîðò òàáëèöû ïî óêàçàííîé êîëîêè ñ óêàçàííûì êëþ÷åì â òåêñòîâîì ïîëå.[/QUOTE said:
À ýòî êàê?
Çíàþ òèïà:
TableSort("Àðòèêóë ASC")

èëè

TableSort("Àðòèêóë DESC")

à âîò êàê ïðåäëàãàåòñÿ ýòî êàê?
 

Pavel

Member
íóæíî ÷òî-òî òèïà òàêîãî:
åñòü òàáëèöà. â íåé åñòü êîëîíêà "àðòèêóë".
è åñòü ïîëå ââîäà. ß â íåì íà÷èíàþ ââîäèòü àðòèêóë, à íèæå ìíå óæå äîëæíû ïðåäëàãàòüñÿ âñå âàðèàíòû ñòðîê èç òàáëèöû, àðòèêóë êîòîðûõ íà÷èíàåòñÿ íà ââåäåííûå ñèìâîëû. âî êàê. êòî çíàåò êàê ýòî ðåàëèçîâàòü?

Ïîïðîáóé ïîâåñèòü îáðàáîòêó çàïðîñà íà ñîáûòèå MouseUp
*** тут я был категорически не прав... :)
 
Last edited:

AlexSVC

Member
À ýòî êàê?
Çíàþ òèïà:
TableSort("Àðòèêóë ASC")

èëè

TableSort("Àðòèêóë DESC")

à âîò êàê ïðåäëàãàåòñÿ ýòî êàê?

Sub TextBox1_KeyPress (key)
Table2.TableSort(TextBox1.Text&" DESC")
End Sub
 

vendim

Member
Ñóäÿ ïî õåëïó àðãóìåíòîì â TableSort("... ASC") ìîæåò áûòü òîëüêî èìÿ êîëîíêè òàáëèöû. Äà è èíòåðïðåòàòîð íà ïðåäëîæåííóþ êîíñòðóêöèþ ðóãàåòñÿ. Íå ïîèíìàþ êàê òóäà ìîæíî âïèõíóòü ñâîéñòâî .Text äðóãîãî îáúåêòà.
 

Pavel

Member
Решение есть... правда не через TableSort, а через Filter: Table1.Filter ("colFirstName LIKE '*hn')
Для проверки я взял пример из поставки Table.sbp
добавил к форме TextBox3

Неприятная сторона события TextBox.KeyPress(key) заключается в том, что событие происходит до того, как вновь введенный символ присоеденится к содержимому бокса... т.е. если TextBox.Text = "ABC", то после введения символа "D", TextBox.Text = "ABC"

Приходится позаботиться о присоединении введенного символа:

Sub TextBox3_KeyPress (key)
key=TextBox3.Text & key
key="Column1 LIKE '*" & key &"*'"
Table1.Filter(key)
End Sub

для возможности выбора нужного столбца в глобал объявил переменную fc, а в процедуре:

Sub Table1_SelectionChanged (ColName, Row)
fc=ColName
End Sub

теперь фильтр можно организовать по любому столбцу... но только по одному:

Sub TextBox3_KeyPress (key)
If Asc(key)<=31 Then
key=TextBox3.Text
Else
key=TextBox3.Text & key
End If
key=fc &" LIKE '*" & key &"*'"
Table1.Filter(key)
End Sub
 
Last edited:

vendim

Member
Ñïàñèáî!

Спасибо! Не только работает, но и с фильтрами получилось, я бы сказал, довольно просто и элегантно.
Есть еще вопрос, но лучше я его вынесу в отдельную ветку.
Еще раз спасибо :sign0100:
 
Top