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

Discussion in 'Russian Forum' started by vendim, Nov 16, 2008.

  1. vendim

    vendim Member

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

    AlexSVC Member

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

    vendim Member

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

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

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

    AlexSVC Member

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

    vendim Member

     
  6. Pavel

    Pavel Member

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

    AlexSVC Member

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

    vendim Member

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

    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: Nov 20, 2008
  10. vendim

    vendim Member

    Ñïàñèáî!

    Спасибо! Не только работает, но и с фильтрами получилось, я бы сказал, довольно просто и элегантно.
    Есть еще вопрос, но лучше я его вынесу в отдельную ветку.
    Еще раз спасибо :sign0100:
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice