Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопросы об API
 
 автор: П.Полиграфович   (30.10.2008 в 12:22)   личное сообщение
 
 

1 Вопрос: Нашёл ссылку на API ф-ции, реализующие ввод в InputBox скрытых значений:

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
Private m_lMsgHandle As Long
Private m_lhHook As Long
Private Const ES_CENTER = &H1&

Private Function GetMessageBoxHandle(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
m_lMsgHandle = wParam
UnhookWindowsHookEx m_lhHook
m_lhHook = 0
End If
GetMessageBoxHandle = False
End Function

Private Sub InputBoxTimerUpdateEvent(hWnd As Long, uiMsg As Long, idEvent As Long, dwTime As Long)
Dim res As Long
If m_lMsgHandle = 0 Then Exit Sub
res = FindWindowEx(m_lMsgHandle, 0, "Edit", "")
SendMessage res, 1052, 42, ByVal 0&
SendMessage res, &H441, ES_CENTER, ByVal 0&
End Sub

Public Function InputBoxEx(sMsgText As String, Optional sTitle As String = "Secured InputBox") As String
Dim lTimerUpdate As Long
m_lhHook = SetWindowsHookEx(WH_CBT, AddressOf GetMessageBoxHandle, app.hInstance, GetCurrentThreadId())
lTimerUpdate = SetTimer(0, 0, 0, AddressOf InputBoxTimerUpdateEvent)
InputBoxEx = InputBox(sMsgText, sTitle)
KillTimer 0, lTimerUpdate
End Function

но во время выполнения начинает ругаться на объект. переменнную app и его метод (или член) .hInstance. Вопрос - что не дописали в объявлениях?
2 Вопрос: Как можа защитить формы от редактирования юзерами напр. отключить доступ к конструктору и св-ам объекта форма.
3 Вопрос: Не могу найти примера использования GetFocus (возвращает координаты акт. контрола). Может кто уже занимался вопросом??
4 Вопрос: При обращении к св-ам OCX Calendar? MSA закрывается предварительно предложив восстановиться. Access удалил поставил -безрезультатно. В ссылках он находится, как я понял, по умолчанию.???

  Ответить  
 
 автор: osmor   (30.10.2008 в 12:39)   личное сообщение
 
 

http://hiprog.com/index.php?option=com_content&task=view&id=451

  Ответить  
 
 автор: osmor   (30.10.2008 в 12:40)   личное сообщение
 
 

ваш пример похоже для VB

  Ответить  
 
 автор: П.Полиграфович   (30.10.2008 в 15:25)   личное сообщение
 
 

Спасибо OSMOR, работает!

  Ответить  
 
 автор: АлексейЕ   (30.10.2008 в 13:20)   личное сообщение
 
 

1. А зачем вся эта API, если есть маска ввода "Password" (Пароль)
2. MDE / ADE
3. GetFocus в Access' нет, есть метод SetFocus - переводит фокус, а не возвращает координаты
Если же имелось ввиду функция API? возвращающая дескриптор окна имеющего фокус, то вот


'On form1 place 2 textboxes (with a height for a couple of lines) and 1 picturebox.
'Select a bitmap for the picturebox and set the autosize on true.
Private Declare Function CreateCaret Lib "user32" (ByVal hwnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function ShowCaret Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetFocus Lib "user32" () As Long
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net

    'Execute the app. (F5) and you'll see the difference of the cursorshapes.
End Sub
Sub Text1_GotFocus()
    'retrieve the window which has the focus
    h& = GetFocus&()
    'retrieve the handle of our picture
    b& = Picture1.Picture
    'Create a new cursor
    '(handle, bitmap 0=none, width, height)
    Call CreateCaret(h&, b&, 10, 10)
    'Show our new cursor
    X& = ShowCaret&(h&)
End Sub
Private Sub Text2_GotFocus()
    'retrieve the window which has the focus
    h& = GetFocus&()
    'Create a new cursor
    Call CreateCaret(h&, 0, 30, 30)
    'Show the new cursor
    X& = ShowCaret&(h&)
End Sub


4. у меня OCX Calendar работает нормально. Попробуйте не Access переустанавливать, о создать новый проект и поработать в нем с OCX Calendar

  Ответить  
 
 автор: П.Полиграфович   (30.10.2008 в 14:37)   личное сообщение
 
 

Вопрос: при конвертировании в MDE, как впоследствие мне добраться до кода, если например в базе уже будет мн-во записей и потребуется корректировка кода???
За GETFOCUS Спасибо. Сейчас буду тестировать.
Календарь не работает в новом проекте.. Сегодня еще попробую на другой машине.
Маска ввода для TextBox-a? а для InputBox как задать?

  Ответить  
 
 автор: АлексейЕ   (30.10.2008 в 14:50)   личное сообщение
 
 

>Вопрос: при конвертировании в MDE, как впоследствии мне
>добраться до кода, если например в базе уже будет мн-во
>записей и потребуется корректировка кода???

Взять исходник, внести изменения и создать новый MDE

  Ответить  
 
 автор: АлексейЕ   (30.10.2008 в 14:59)   личное сообщение
 
 

>Календарь не работает в новом проекте.. Сегодня
>еще попробую на другой машине.

Может Вы не правильно с ним работаете?
Попробуйте рабочий вариант
http://hiprog.com/index.php?option=com_content&task=view&id=731&Itemid=35


>Маска ввода для TextBox-a? а для InputBox как задать?

Контекстное меню к Полю, или Полю со списком. Свойство. Выбираем вкладку Все. Ищем Маска для ввода

  Ответить  
 
 автор: П.Полиграфович   (30.10.2008 в 15:33)   личное сообщение
 
 

Пример ваш понравился и без API, только не совсем еще разобрал установку св-ва формы..

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList