Тема: OnKeyPress

Как обрабатывать событие OnKeyPress в форме ввода?
События OnClick недостаточно во многих случаях.

Re: OnKeyPress

У наших контролов таких обработчиков пока нет. на внешних ActiveX форма ввода увидит все их события, но это будут внешние (не наши) контролы.

Re: OnKeyPress

Какой ActiveX компонент можно использовать по аналогии с компонентом SpinEdit?

Re: OnKeyPress

Не знаю. Мы свои стараемся развиваться :).

Re: OnKeyPress

А где взять описание активных компонентов используемых у ВАС?

Re: OnKeyPress

У нас в хелпе список просто, если не ошибаюсь. Подробное описание можно увидеть непосредственно в дизайнере форм, там вся информация присутствует.

Re: OnKeyPress

Хелп есть, но описания компонентов ActiveX, в нём нет.

Re: OnKeyPress

Полного описания там нет (да оно и излишне в хелпе TechnologiCS). Все свойства есть в самом дизайнере (скажем так аналогично TCS Prop Explorer).

16.4.2 Обработчики (события) в форме

16.4.3 Обработчик событий от модулей TechnologiCS

16.4.5 Дизайнер форм

16.4.6 Визуальные элементы формы

Re: OnKeyPress

Вопрос по поводу события OnKeyPress возник из-за отсутствия компонента SpinEdit. Решил
фильтровать символы спомощью события OnChange. Написал такую кроху:

Sub FormEvent_Edit_1_OnObjectChange( Form, ObjName )
'Form As ITCSForm, ObjName As String 
Dim n 
    On Error Resume Next
    n = cInt(c_Edit_1.Text)
    If Err Then
        Call TCSApp.ShowMessageBox(Err.Source, "Îïèñàíèå: " + Err.Description)       
        Err.Clear
        c_Edit_1.Text = cStr(c_Edit_1.Tag)
    End If                   
    c_Edit_1.Tag - cInt(c_Edit_1.Text)
End Sub

В Delphi эта логика отрабатывает правильно. На каждое нажатие клавишы вызывается
подобная процедура. Каково-же было моё удивление, что в VBScript-е попадаем в неё
только при покидании поля редактирования. Почему?

Re: OnKeyPress

ну это же не дельфа, это TechnologiCS.

а наш СalcEdit никак не подходит?

(изменено: , 13 ноября 2013 12:45:50)

Re: OnKeyPress

ну это же не дельфа, это TechnologiCS

На написана-то на дельфях. Так почему-же не наследуются от туда события и компоненты?

а наш СalcEdit никак не подходит?

Нет. Нужно жёстко вводить целыею И без лишнего интерфейса.

Re: OnKeyPress

у нас  много чего используется, но выводы на этом делать не следует :).

Возьмите СalcEdit лучше.

Re: OnKeyPress

у нас  много чего используется, но выводы на этом делать не следует

А надо бы. хотя бы в следующих версиях TCS.

Возьмите СalcEdit лучше.

Рад бы, да пользователь путается.

(изменено: Дмитрий Гамий, 13 ноября 2013 20:00:07)

Re: OnKeyPress

Для того, чтобы в CalcEdit можно было вводить ТОЛЬКО целые числа задайте следующие свойства:

  • DecimalPlaces = 0

  • DisplayFormat = ,0

OnKeyPress

Спасибо сказали: JAEAEJ1
Post's attachments

calcEdit.png 7.99 Кб, файл не был скачан. 

You don't have the permssions to download the attachments of this post.

Re: OnKeyPress

То, что надо.

Re: OnKeyPress

Для того, чтобы в CalcEdit можно было вводить ТОЛЬКО целые числа задайте следующие свойства:

    DecimalPlaces = 0

    DisplayFormat = ,0

Конечнр это хорошо, но наглость пользователей такова, что они обязательно
воспользуются значком калькулятора. Я нашёл выход из этого положения.
Оказывается, что не надо изобретать велосипед. Разработчики компонента
Edit предусмотрели необходимость ввода, только, целого числа. Для этого
достаточно задать стиль окну TEdit - ES_NUBER. И всё!

Re: OnKeyPress

Конечно-же не ES_NUBER, а ES_NUМBER

Re: OnKeyPress

Если уж пошла речь, то это не разработчики CaclEdit, это разработчики Windows. Только когда у вам программа после модификации стилей будет падать - не надо писать о том что программа не работает, так как стиль окна порой сильно влияет на работу всего приложения.

Если вас интересует хакерство - для этого есть масса отдельных форумов, если вас интересует нормальная работа приложения с последующей поддержкой - тогда надо пользоваться тем что предлагают разработчики (да конечно при это месть ограничения, но они есть в любых системах, а данном случае есть еще и решение).

вопрос думаю исчерпан, тему закрываю дабы не разводить пустые дискуссии.