Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ComboBox и его события / 25 сообщений из 30, страница 1 из 2
11.12.2003, 22:11
    #32351204
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Есть поле_со_списком. При ползании по списку идет реакция других полей формы (заполняются в соответствии с той, что выделена в списке)

Вопрос: При событиях этого контрола(ComboBox) можно ль добится, чтоб событие состоялось (напр. KeyDown), а потом сделать то, что хочу по окончании ентого события?
...
Рейтинг: 0 / 0
11.12.2003, 22:16
    #32351207
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
авторПри ползании по списку идет реакция других полей
Не совсем так. На само ползание он вроде не реагирует.

авторможно ль добится, чтоб событие состоялось (напр. KeyDown), а потом сделать то, что хочу по окончании ентого события?
А чем отличается от этого та ситуация, которая есть?
...
Рейтинг: 0 / 0
11.12.2003, 22:21
    #32351209
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
СанычНе совсем так. На само ползание он вроде не реагирует
А может и реагировать. Если подчиненная форма (а этот список - master)
...
Рейтинг: 0 / 0
11.12.2003, 22:25
    #32351210
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Моя твоя не понимай. Что такое ползание? Это комбобокс открыт и по открытой части ползают мышом или стрелками. Когда закроют, сработает AfterUpdate. А до того?
...
Рейтинг: 0 / 0
11.12.2003, 22:35
    #32351212
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Аааа.... Тогда это моя ничей не понимай. Был неправ.
...
Рейтинг: 0 / 0
11.12.2003, 22:36
    #32351213
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Все в стадии разработки, но
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub fNameSel_KeyDown(KeyCode As Integer, Shift As Integer)
  
  If IsNull(fNameSel.ListIndex) Then fNameSel.ListIndex =  0 
  Select Case KeyCode
    Case Is = vbKeyDown
      echoNameSel fNameSel.ListIndex +  1 
    Case Is = vbKeyUp
      echoNameSel fNameSel.ListIndex -  1 
    Case Else
      echoNameSel fNameSel.ListIndex
  End Select
End Sub

где echoNameSel - sub, который изменяет сведения полей формы.
Но KeyDown опаздывает на последнее нажатие на клаве. Предсказать навигац.клавиши еще можно, а вот на симв. будет сложно. Только через recordset, в котором придется делать поиск, иль через запрос. Но поскольку возня с текстом, то будут наверняка тормоза.
А вот если б echoNameSel fNameSel.ListIndex запустить после KeyDown, то жить стало б легче...
...
Рейтинг: 0 / 0
11.12.2003, 22:48
    #32351216
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Правильно ли я понял, что опаздывает не KeyDown, а ListIndex? И приведенные в программе два первых кейса (+1 и -1) - это те самые попытки предсказать, от которых нужно избавиться?
...
Рейтинг: 0 / 0
11.12.2003, 22:49
    #32351219
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Ага
...
Рейтинг: 0 / 0
11.12.2003, 22:53
    #32351222
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Кажется, я понял. При нажатии на клавишу происходят следующие вещи в следующем порядке:

событие KeyDown
изменение Value и ListIndex (только тут, после KeyDown)
событие AfterUpdate

Так что проще всего пользоваться событием AfterUpdate и все. Если же важно именно знать, что юзер пользовался именно клавишами, то в KeyDown можно что-нибудь занести в переменную/ные, а в AfterUpdate проверить.
...
Рейтинг: 0 / 0
11.12.2003, 23:04
    #32351226
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Хе, AfterUpdate не дает этого кайфа.
Все дело в том, что отбор позиции очень удобен ч/список. Беда в другом: слишком много сразу нужно видеть в этой записи - будет куча столбцов. А так все просто - пару-тройку буковок, список развернул и давай глядеть в удобовизуальном виде...

А AfterUpdate - тока и будешь тыкать тыды-сюды.

А по списку ходить нужно, поскольку в списке ну немеренно одинаковых названий (но не одинаковых записей!!!)
...
Рейтинг: 0 / 0
11.12.2003, 23:05
    #32351227
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Все равно моя ничей не понимай
На фига нужно нажатие клавиш отслеживать у комбобокса? Какая разница какая строчка там сейчас подсвечена? И чем эта подсветка вызвана - кнопкой на клаве, движением мышки или прочим рукомашеством и ногодрыжеством?
Или использовать список вместо поля со списком, или, как Саныч прописал, у комбобокса ловить событие AfterUpdate
...
Рейтинг: 0 / 0
11.12.2003, 23:11
    #32351231
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
пока писал что моя ничей не понимай - вай апаздал совсем.

2 Mar
Не трахай себе мозг. Сделай как все нормальные люди делают - список + текстбокс для быстрого поиска. Вколотишь туда пару-тройку буковок - и перейдешь в списке куда надо.
Люди пользуются лингвой и не жалуются, что там слишком много слов в списке.
...
Рейтинг: 0 / 0
11.12.2003, 23:13
    #32351232
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Каюсь, что не могу объяснить, но попробую:
Есть товар. Много одинаковых названий, но они относятся к разным записям. Всего полей около 25. Но фигня в том, что две записи могут отличаться лишь одним полем, причем абсолютно неизвестно каким (кроме названия, есно).

Поскоку если в компобох затолкать все 25 полей, а все будут в одной строке, то вид будет безобразный.

Кончно к штрих-кодам все кода-нть придет, но пока...
...
Рейтинг: 0 / 0
11.12.2003, 23:19
    #32351235
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Лох прав. Если взять листбокс, то AfterUpdate будет срабатывать, когда надо.
...
Рейтинг: 0 / 0
11.12.2003, 23:23
    #32351237
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Еще раз говорю.

Листбокс, он же список. В нем - названия и только.
Текстбокс. Он же поле. По событию Change позиционируешь листбокс первую из подходящих записей.
Подчиненная форма с доп. информацией о записи, идентифицируемой листбоксом.

Набрал две-три буквы - отпозиционировался список - в списке бегаешь хоть стрелками, хоть мышками, хоть кошками - подчиненная форма сама обновляется. Вот и выбирай из одинаковых записей те, которые отличаются одним полем.
Максимум эффективности при минимуме програмирования.
...
Рейтинг: 0 / 0
11.12.2003, 23:34
    #32351241
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
В принципе согласен. И даже очень. Разница лишь в том, что вместо одного контрола будут два, но отень дазо ницо...

А если о том, что после того как событие выполнилось, можно его дополнить? Я про вообще. Такую нужду серьезно чувствую раз в третий.

Программно, хоть и мутурно, но ведь в том кайф тоже есть...
...
Рейтинг: 0 / 0
11.12.2003, 23:37
    #32351244
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Не надо дополнять. Оно само произойдет, только позже. Если дополнить, то произойдет два раза.

И вообще, это же разные события. Нажатие клавиши и изменение значения.
...
Рейтинг: 0 / 0
11.12.2003, 23:44
    #32351245
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
про то что два раза понятно. Я про другое.

С асесом выходит так
Событие -> Делаю что теле события (Sub) -> Делаю событие

А если хотеть так
Событие -> Делаю событие -> Делаю что теле события (Sub)
...
Рейтинг: 0 / 0
11.12.2003, 23:49
    #32351246
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
2Mar
"Делаю событие" - что значит?
"Делаю что теле события (Sub)" - что значит?
Совсем не понятно.
...
Рейтинг: 0 / 0
11.12.2003, 23:57
    #32351251
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Последовательность одна:

Событие -> Sub.

Правда, событий много и у каждого это происходит отдельно.
...
Рейтинг: 0 / 0
11.12.2003, 23:59
    #32351252
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
авторТакую нужду серьезно чувствую раз в третий.
Не повезло тебе. Аксес плохо приспособлен для справления нужды.

Имхо одно из двух. Если тебя так приперло на аксесовских контролах - то скорее всего что-то ты не так делаешь. Обычно стандартных событий вполне хватает
мне вот только AfterDelete недостает :(

Или же ты юзаешь сторонние контролы, как вариант с плохо продуманной системой событий.
...
Рейтинг: 0 / 0
12.12.2003, 00:04
    #32351253
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Нажимаю клавишу - происходит событие, после которого, а не во время которого хочу что-нть сделать

Если нет реакции на onKeyDown, то
1. нажалась клавиша, 2. выполнилось событие

Если есть отслеживание на onKeyDown, то
1. нажалась клавиша, 2.программный код, 3. выполнилось событие

А если хочу так:
1. нажалась клавиша, 2. выполнилось событие, 3.программный код
это возможно?
...
Рейтинг: 0 / 0
12.12.2003, 00:07
    #32351254
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Кстати, все оказалось еще проще

Без усяких наваротов, если в деле только клава, то по событию onKey Up все идет как по маслу

Т.е. если клава, то KeyUp. Но поскольку мышом тоже могут ткнуть - еще и AfterUpdate
...
Рейтинг: 0 / 0
12.12.2003, 00:14
    #32351255
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
Попробую штоли Темным побыть...

> Есть поле_со_списком.
Принято.

>При ползании по списку идет реакция других полей формы (заполняются в соответствии с той, что выделена в списке)
Перевожу на понятный мне язык:
"При ползании по списку должна идти реакция других контролов формы".
Что такое "ползании". Ты, видимо, считаешь, что Нажатие кнопки (т.е. KeyDown). Читаем KeyDown - кнопка нажата, но сам акцесс - ни контрол, ни форма, - ее нажатие еще не обрабатывают, отдают на откуп тебе, где ты можешь и отменить нажатие, а можешь и оставить в силе. Но ведь выбрать другое значение можно, например, и мышой.

>Вопрос: При событиях этого контрола(ComboBox) можно ль добится, чтоб событие состоялось (напр. KeyDown), а потом сделать то, что хочу по окончании ентого события?
Итак, по KeyDown я уже сказал: чтобы добиться, чтоб оно состоялось, достаточно его не отменять. Чтобы делать что-то по окончании события, надо определиться, какого именно события.
Я нажал на кнопку "А". Я ее еще не отпустил. Она генерит первую букву "а" (в зависимости от регистровых клавиш), а потом начинает их дублировать, пока я кнопку не отпущу: аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа.
При этом акцесс генерит как минимум три события. KewDown, когда я нажал на кнопку. KeyPress каждый раз, когда виндовс стал отдавать акцессу по буковке "а". И KeyUp, когда я кнопку отпустил.

Но тебе все это, имхо, не нужно. А нужно AfterUpdete - после обновления. События все уже состоялись к моменту возникновения этого, и ты можешь делать то, что хочешь.
---------------------
А вообще f1 стоит полистать.
...
Рейтинг: 0 / 0
12.12.2003, 00:14
    #32351256
Mar
Mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox и его события
2Лох
Эта нужда, у кого нада нужда. Ну дык ладно пусть будет необходимостью.

А вот
Form_AfterDelConfirm(Status As Integer)
в связке с
Form_Delete(Cancel As Integer)

у меня отень даже работают... если конечно это о том, как вернуть уже удаленные после ДА
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ComboBox и его события / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]