Как закрыть Combo?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Здравствуйте!
Как-то, кажеться, в рассылке уже звучало что-то подобное. По-моему, от Вадима Синявского?
Но не помню - был-ли ответ?
Может кто знает, как заставить Combo-контрол закрыть выпадющий список? Естественно, без клавиатуры и мыши, чисто программно. И желательно без сабклассинга.
Единственное, чего удалось добится - закрытие списка при передаче фокуса на другой контрол. Через Select или PressKey(TabKey). Но это, имхо, не есть хорошо.
И заодно - если кто разбирался с этим контролом - есть-ли способ определить, открыт-ли список или нет?
Спасибо!
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Как-то, кажеться, в рассылке уже звучало что-то подобное. По-моему, от Вадима Синявского?
Но не помню - был-ли ответ?
Может кто знает, как заставить Combo-контрол закрыть выпадющий список? Естественно, без клавиатуры и мыши, чисто программно. И желательно без сабклассинга.
Единственное, чего удалось добится - закрытие списка при передаче фокуса на другой контрол. Через Select или PressKey(TabKey). Но это, имхо, не есть хорошо.
И заодно - если кто разбирался с этим контролом - есть-ли способ определить, открыт-ли список или нет?
Спасибо!
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Олег - как раз это как два пальца об асфальт
Когда нужно закрыть список - почти достаточно сделать:
(?Combo{PROP:ListFeq}){PROP:Hide} = True
Правда после этого наивный движек продолжает считать, что дропик открыт и нужно дважды нажимать на стрелку для вторичного открытия списка.
--
Best regards,
Vadim mailto:vadim@softcreator.com
ICQ: 82308757
Написал: ClaList(2)
Когда нужно закрыть список - почти достаточно сделать:
(?Combo{PROP:ListFeq}){PROP:Hide} = True
Правда после этого наивный движек продолжает считать, что дропик открыт и нужно дважды нажимать на стрелку для вторичного открытия списка.
--
Best regards,
Vadim mailto:vadim@softcreator.com
ICQ: 82308757
Написал: ClaList(2)
Ну-у-у, так тоже, имхо, не совсем красиво!
К тому-же, как ты сам заметил, имеется побочный эффект, не совсем приятный для юзера.
У меня, в конце-концов, и то лучше получилось - эмулирую нажатие мыши на кнопке открытия/закрытия.
Через WinAPI. Правда, в этом случае курсор мыши остается на кнопке. Хотя, конечно, можно его вернуть туда, откуда взял Вот сейчас и думаю - возвращать или оставить на кнопке? Типа дополнительного сервиса
Вообщем, не хорошо они поступили с дроп-списками - добраться до кнопки можно, а вот работать с ней (кроме как через WinAPI) - нельзя!
А весь "сыр-бор", кстати, из-за желания юзверей иметь в формах яля-ДОС навигацию по полям, когда переход идет по Enter`у. Особых проблем нет - работало всегда прекрасно, пока не ввел в одну из форм дроп-списки на своем классе (таких списков там много и не хочеться, что-бы код "распухал" из-за многократного повторения кода бровз-шаблона). И выбор, естественно, в этих списках хочеться иметь то-же по Enter-у.
Сначала пришлось решать задачу определения состояния списка (закрыт-открыт), что-бы не обрабатывать закрытый список. И здесь разработчики SV "забыли" дать нужную инфу. Ну и, в конце, когда запись выбрана надо теперь закрыть этот список. Пока оставил закрытие по переходу на следующее поле - как-бы "вписывается" в общую идеологию перехода по Enter-у!
И еще с одним столкнулся - проблемы с PRESS/PRESSKEY.
Причем - ужасные. PRESS практически не работает, а KEYPRESS "залипает" на SHIFT-комбинациях!
=============================
С уважением, Олег А. Руденко
Написал: ClaList(2)
К тому-же, как ты сам заметил, имеется побочный эффект, не совсем приятный для юзера.
У меня, в конце-концов, и то лучше получилось - эмулирую нажатие мыши на кнопке открытия/закрытия.
Через WinAPI. Правда, в этом случае курсор мыши остается на кнопке. Хотя, конечно, можно его вернуть туда, откуда взял Вот сейчас и думаю - возвращать или оставить на кнопке? Типа дополнительного сервиса
Вообщем, не хорошо они поступили с дроп-списками - добраться до кнопки можно, а вот работать с ней (кроме как через WinAPI) - нельзя!
А весь "сыр-бор", кстати, из-за желания юзверей иметь в формах яля-ДОС навигацию по полям, когда переход идет по Enter`у. Особых проблем нет - работало всегда прекрасно, пока не ввел в одну из форм дроп-списки на своем классе (таких списков там много и не хочеться, что-бы код "распухал" из-за многократного повторения кода бровз-шаблона). И выбор, естественно, в этих списках хочеться иметь то-же по Enter-у.
Сначала пришлось решать задачу определения состояния списка (закрыт-открыт), что-бы не обрабатывать закрытый список. И здесь разработчики SV "забыли" дать нужную инфу. Ну и, в конце, когда запись выбрана надо теперь закрыть этот список. Пока оставил закрытие по переходу на следующее поле - как-бы "вписывается" в общую идеологию перехода по Enter-у!
И еще с одним столкнулся - проблемы с PRESS/PRESSKEY.
Причем - ужасные. PRESS практически не работает, а KEYPRESS "залипает" на SHIFT-комбинациях!
=============================
С уважением, Олег А. Руденко
Написал: ClaList(2)
Я себе (в chSTD) добавил такую процедурку (примерно):
Сергей - chusha@mail333.com ; chusha@hotbox.ru
Написал: ClaList(2)
Код: Выделить всё
fCloseDrop procedure(signed parCombo)
code
if parCombo{prop:type} = create:combo
if IsWindowVisible((parCombo{prop:ButtonFeq}){prop:Handle})
SendMessage((parCombo{prop:ButtonFeq}){prop:Handle}, 0100h, enterkey, 0)
end
end
Сергей - chusha@mail333.com ; chusha@hotbox.ru
Написал: ClaList(2)
О! Это - наиболее красивый вариант!
Надо будет проверить - а то я в своих экспериментах что-то подобное делал, но ничего не получалось.
Правда, я "дергал" кнопку не через SendMessage, а через mouse_event и посылал ему нажатие левой кнопки мышки.
Спасибо!
Здесь, скорее всего, надо так
if IsWindowVisible((parCombo{prop:ListFeq}){prop:Handle})
А то будешь не только закрывать комбо, но еще и открывать!
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Надо будет проверить - а то я в своих экспериментах что-то подобное делал, но ничего не получалось.
Правда, я "дергал" кнопку не через SendMessage, а через mouse_event и посылал ему нажатие левой кнопки мышки.
Спасибо!
Здесь, скорее всего, надо так
if IsWindowVisible((parCombo{prop:ListFeq}){prop:Handle})
А то будешь не только закрывать комбо, но еще и открывать!
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
SendMessage часто "рулит". Например, в svGraph я с её помощью определяю размер текста который будет выведен в контроле
(метод Graph2PrimitiveClass.GetTextRec).
Пока мне Соловьёв не сказал, как можно получить истинные
параметры шрифта - измучался, пытаясь понять почему рассчитанные
размеры не совпадают с реальными. :/
Сергей
Написал: ClaList(2)
(метод Graph2PrimitiveClass.GetTextRec).
Пока мне Соловьёв не сказал, как можно получить истинные
параметры шрифта - измучался, пытаясь понять почему рассчитанные
размеры не совпадают с реальными. :/
Сергей
Написал: ClaList(2)
Привет, Всем!
Не пробовал WinAPI функцию GetTextExtentPoint32 использовать? Ее прямая обязанность посчитать размер строки. Хотя шрифт все равно в контексте устанавливать, видимо, придется, потому разницы наверное с DrawText особой не будет
Удачи!
__________________________________
Владимир Якимченко (IСQ 16 993 194)
Написал: ClaList(2)
Не пробовал WinAPI функцию GetTextExtentPoint32 использовать? Ее прямая обязанность посчитать размер строки. Хотя шрифт все равно в контексте устанавливать, видимо, придется, потому разницы наверное с DrawText особой не будет
Удачи!
__________________________________
Владимир Якимченко (IСQ 16 993 194)
Написал: ClaList(2)
Упссс Да, конечно так. Очепятка...А то будешь не только закрывать комбо, но еще и открывать!
По началу у меня так и было. Но это медленнее и не всегда удобно. А в некоторых случаях и невозможно было.У меня так работает. Или ты имеешь в виду вывод текста через API-функции?
Да и не правильно это: получать параметры контрола посредством другого.
Это как-то по нашенски получится - "через то самое место"
Не пробовал WinAPI функцию GetTextExtentPoint32 использовать? Ее прямая обязанность посчитать размер строки. Хотя шрифт все равно в контексте устанавливать, видимо, придется, потому разницы наверное с DrawText особой не будет
Пробовал, но ничего путного не получилось - размеры получал "не те".
Сергей
Написал: ClaList(2)