Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DataGrid / 25 сообщений из 29, страница 1 из 2
16.11.2006, 11:10
    #34132423
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Господа , подскажите пожалуйста , как сделать что бы в элементе DataGrid (VB 6.0) строчки данных прокручивались колёсиком мыши ?
то есть :
есть DataGrid ,он выводит данные из базы. количество полей большое. сбоку у датагрида есть полоса прокрутки , но она не работает для колеса мыши. приходится передвигаться по записям с помощью курсора (передвигая полосу прокрутки).
как сделать что бы можно было оперировать колёсиком мыши ? может есть какие нибудь стандартные способы ?
...
Рейтинг: 0 / 0
16.11.2006, 11:33
    #34132519
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
...
Рейтинг: 0 / 0
16.11.2006, 12:50
    #34132973
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
вставил в модуль ваш код :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
Option Explicit
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong 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 Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Const GWL_WNDPROC = - 4 
Private Const WM_USER = &H400
Private Const WM_SETPREVPTR = WM_USER +  1 
Private Const WM_SETGRID = WM_USER +  2 
Private Const WM_RESTORE = WM_USER +  3 

Public Sub AddScroll(Grid As DataGrid)
Dim p As Long
    p = SetWindowLong(Grid.hwnd, GWL_WNDPROC, AddressOf WindowProc)
    SendMessage Grid.hwnd, WM_SETPREVPTR, p,  0 
    SendMessage Grid.hwnd, WM_SETGRID, ObjPtr(Grid),  0 
End Sub

Public Sub RemoveScroll(Grid As DataGrid)
    SendMessage Grid.hwnd, WM_RESTORE,  0 ,  0 
End Sub

Private Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Static lpPrevWndProc As Long
Static GridPtr As Long
Dim gList As Object
    If lpPrevWndProc =  0  And uMsg < WM_USER Then Exit Function
    Select Case uMsg
        Case  522 
            If GridPtr <>  0  Then
                Set gList = ObjFromPtr(GridPtr)
                If Abs(wParam) =  7864320  Then
                    gList.Scroll  0 , -(wParam / Abs(wParam))
                Else
                    gList.Scroll  0 , -(wParam / Abs(wParam)) *  10 
                End If
            End If
        Case WM_SETPREVPTR
            lpPrevWndProc = wParam
        Case WM_SETGRID
            GridPtr = wParam
        Case WM_RESTORE
            SetWindowLong hw, GWL_WNDPROC, lpPrevWndProc
    End Select
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function

Private Function ObjFromPtr(lObjPtr As Long) As Object
Dim LoTmp As Object
    If lObjPtr <>  0  Then
        CopyMemory LoTmp, lObjPtr,  4 
        Set ObjFromPtr = LoTmp
        CopyMemory LoTmp,  0 &,  4 
    End If
End Function
и что то ноль эмоций .... ни ошибок ни скрола колёсиком мыши ..... что я делаю не так ?
...
Рейтинг: 0 / 0
16.11.2006, 13:37
    #34133174
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
ау ау , ну кто нить подскажите как мне справиться со с кролом ?
...
Рейтинг: 0 / 0
16.11.2006, 13:39
    #34133183
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Не выполнил процедуру AddScroll?
В гриде слишком мало записей?
...
Рейтинг: 0 / 0
16.11.2006, 13:51
    #34133261
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
записей много в гриде.
а по какому событию выполнять процедуру AddScroll ?
...
Рейтинг: 0 / 0
16.11.2006, 13:54
    #34133276
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
и по какому событию выполнять RemoveScroll ?
...
Рейтинг: 0 / 0
16.11.2006, 14:24
    #34133412
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
ау есть кто нибудь ? так как же использовать
по какому событию , как запускать ?
я немного туповат в этом вопросе.
...
Рейтинг: 0 / 0
16.11.2006, 14:27
    #34133427
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
AddScroll при загрузке формы, RemoveScroll при выгрузке.
...
Рейтинг: 0 / 0
16.11.2006, 14:31
    #34133458
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
КЛАССССССССС
НАКОНЕЦТО ВСЁ ОКЕЙ !!!!!!!!!!!!!!!!!!!!!!!!!!
СПАСИБО ЕЩЁ РАЗ СИНСЭЙ. :)
...
Рейтинг: 0 / 0
20.12.2006, 09:59
    #34212117
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Здравствуйте, появились ослажнения.
Есть основной проект и дополнительный (в котором и был реализован скрол для DataGrid)
добавил модуль (SCrollForGrid) в основной проект, туда же добавил формы.
при вызове процедуры Call AddScroll(Ghurnal.DataGridSelGhurnal)
Выдайтся ошибка Type mismatch.
не понимаю почему.
Все референсы такие же как и были.

Что здесб может быть такого ? подскажите плиз .
...
Рейтинг: 0 / 0
20.12.2006, 14:20
    #34213309
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
up
...
Рейтинг: 0 / 0
20.12.2006, 14:56
    #34213494
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Что за тип Ghurnal.DataGridSelGhurnal? Не видя во что превратилась AddScroll и как она вызывается, не могу сказать точно.
...
Рейтинг: 0 / 0
21.12.2006, 16:35
    #34216621
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
AntonariyЧто за тип Ghurnal.DataGridSelGhurnal? Не видя во что превратилась AddScroll и как она вызывается, не могу сказать точно.

Ghurnal.DataGridSelGhurnal - это не тип, Ghurnal- это имя формы, DataGridSelGhurnal - имя datagrid.
Пробовал и без указания имени формы , т.е. просто call AddScroll(DataGridSelGhurnal) - не помогло..... :(
с модулем и процедурами в неё входящими ничего не делал.

Как исправить ситуацию? почему может не работать скрол ? и выдаавать такую странную ошибку ?
...
Рейтинг: 0 / 0
21.12.2006, 21:18
    #34217292
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Х.з. Попробуй AddScroll(Grid As Object )
...
Рейтинг: 0 / 0
07.03.2007, 12:10
    #34377014
userkot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
ребята. есть вопрос. сам никак немогу вспомнить
есть datagrid, несколько строк.
как можно получить значение ячеек выделенной строки.

давно не работал с гридом, не могу вспомнить
спасибо
...
Рейтинг: 0 / 0
07.03.2007, 12:57
    #34377209
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Что используется в качестве источника данных?
...
Рейтинг: 0 / 0
09.03.2007, 09:34
    #34379671
userkot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
adodc на форму кидаю
...
Рейтинг: 0 / 0
09.03.2007, 10:25
    #34379783
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
ADODC.Recordset("поле").value
...
Рейтинг: 0 / 0
15.03.2007, 12:21
    #34392845
userkot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
спасибо
...
Рейтинг: 0 / 0
16.03.2007, 09:12
    #34395082
userkot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
А вот может кто знает
на форме ADODC + стандартный грид VB6
если для адодс как источник привязать запрос select * from таблица
и грдиду прописать источник данных adodc то на выходе у грида будут поля таки, как называются они в таблице

вопрос можно ли у грида заранее определить название полей ?
не трогая при этом адодс?
...
Рейтинг: 0 / 0
16.03.2007, 10:19
    #34395308
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Зацени коллекцию Columns. Ты можешь вручную добавить необходимое количество колонок, Caption - подпись, DataField - поле рекордсета. Однако придется привязывать ADODC в коде, а не дизайне, потому что после добавления колонок и перед привязкой нужно выполнить HoldFields, чтобы колонки не сбросились.
...
Рейтинг: 0 / 0
03.04.2007, 18:46
    #34435339
Vanovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Многоуважаемые, а не заметили ли Вы особенность, что сколлить таким способом можно только в том случае, если мы не находимся в режиме редактирования поля грида. Почему? Как сделать чтобы сколлить можно было в любом случае?
...
Рейтинг: 0 / 0
31.05.2007, 11:04
    #34563640
ЕленаMC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
AntonariyНе выполнил процедуру AddScroll?
В гриде слишком мало записей?
А каким образом выполнить эту-самую процедуру AddScroll?
...
Рейтинг: 0 / 0
31.05.2007, 11:38
    #34563847
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid
Этот вопрос на минуту даже поставил меня в тупик...
Код: plaintext
AddScroll DataGrid1 
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DataGrid / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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