powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите в чем проблема
25 сообщений из 68, страница 2 из 3
Подскажите в чем проблема
    #36724401
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
решение не нашел
смотрел здесь ,хотя много интересного описано там
Так решение чего? Ты повнятней изложи проблему, я подскажу.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724406
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
начало
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724417
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
начало

Да, но проблему я не понял.
Ты создаешь функцию и размещаешь ее в модуле, в качестве параметра передаешь ФлексГрид. Проблема-то в чем?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724428
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
в том что у меня несколько гридов,
пример названий FlexGrid1,FlexGrid2,FlexGrid3
так мне надо чтобы допустим написав flexname(3) или flexname(2)(это вызов функции)
работать с конкретным гридом какой мне нужен будь то первый или третий
этот код
Код: plaintext
1.
2.
Private gridname As FlexGridPlus
Public Sub flexname(flexnum as integer)
Set gridname = ME.Controls.Item("FlexGridPlus" + Str(flexnum)) 
не будет работать в модуле
так вот хотелось бы узнать как сделать то же самое но в модуле
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724434
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
в том что у меня несколько гридов,
пример названий FlexGrid1,FlexGrid2,FlexGrid3
так мне надо чтобы допустим написав flexname(3) или flexname(2)(это вызов функции)
работать с конкретным гридом какой мне нужен будь то первый или третий
этот код
Код: plaintext
1.
2.
Private gridname As FlexGridPlus
Public Sub flexname(flexnum as integer)
Set gridname = ME.Controls.Item("FlexGridPlus" + Str(flexnum)) 
не будет работать в модуле
так вот хотелось бы узнать как сделать то же самое но в модуле

ненене
Код: plaintext
Public Sub flexname(flex as FlexGridPlus)
(я не зря тебе давал ссылку на тутти-фрутти, мы с ним нечто похожее обсуждали)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724435
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
ну да с treeview по мойму называлось , но че то я подумал там другое
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724444
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admну да с treeview по мойму называлось , но че то я подумал там другое

Смысл в том, что ты передаешь в свою функцию не номер сетки, а непосредственно сетку (ссылку на нее). Иначе тебе пришлось бы передавать в модуль не только номер сетки, но и ссылку на форму, на которой она расположена, а в этом нет никакого смысла.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724447
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
прописал так в модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Sub flexname(gridname As FlexGridPlus)
MsgBox gridname.Name
gridname.Cols = rs.Fields.Count
gridname.Rows =  1 
gridname.ColWidth( 1 ) =  2000 
gridname.ColWidth( 2 ) =  1000 
For i =  0  To rs.Fields.Count -  1 
    gridname.TextMatrix( 0 , i) = rs.Fields(i).Name
Next i
Do While Not rs.EOF
    gridname.Rows = gridname.Rows +  1 
    For i =  0  To rs.Fields.Count -  1 
    If Not rs.Fields(i) = "" Then
        gridname.TextMatrix(gridname.Rows -  1 , i) = rs.Fields(i)
    End If
    Next i
rs.MoveNext
Loop
Set Conn = Nothing
Set rs = Nothing
End Sub
вызываю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command1_Click()
strsql = "Select d.name, r.date , r.time from registr as r " + _
" right JOIN documents as d on r.nom_doc= d.id"
query (strsql)
flexname ("FlexGridPlus1")
' либо так 
flexname (Me.FlexGridPlus1)
End Sub
че то не получается
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724473
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
решилась проблема так
Код: plaintext
flexname FlexGridPlus2
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724484
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
подскажите а как на кнопке делают рисунок
по типу дискетка или плюс(иконки)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724511
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
разобрался спасибо
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724514
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
процедура вызывается либо так:
Код: plaintext
MyProc Param1, Param2
либо так:
Код: plaintext
Call MyProc(Param1, Param2)

тут:
Код: plaintext
flexname ("FlexGridPlus1")
вообще фигня - тип параметра FlexGridPlus, а ты ему отдаешь строку
максимум так:
Код: plaintext
flexname Me.Controls("FlexGridPlus1")

тут:
Код: plaintext
flexname (Me.FlexGridPlus1)
возник очень хитрый эффект. Наличие скобок - это уже начинается выражение, а Me.FlexGridPlus1 - это объект, чтобы он поучаствовал в выражении, от него берется значение свойства по умолчанию (не знаю, что там, возможно текст текущей ячейки).
То есть если бы параметр процедуры был числом, это прокатило бы, а с объектом - возникает этот эффект

Ну молодец, что разобрался, просто хорошо бы понимать эти моменты.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724531
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо
автор Наличие скобок - это уже начинается выражение
что понимается под выражением?
то есть объекты надо передавать без скобок так понял
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724543
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
еще кое что хотел спросить
я делаю так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
strsql = "Select * from clients"
query (strsql)
k =  0 
rs.MoveFirst
Do Until rs.EOF
    a = rs.Fields("id").Value
    b = rs.Fields("name").Value
    Combo1.AddItem b, k
    Combo1.ItemData(Combo1.NewIndex) = a
    rs.MoveNext
    k = k +  1 
Loop
strsql = "Select * from uslugi"
query (strsql)
k =  0 
rs.MoveFirst
Do Until rs.EOF
    a = rs.Fields("id").Value
    b = rs.Fields("name").Value
    Combo2.AddItem b, k
    Combo2.ItemData(Combo2.NewIndex) = a
    rs.MoveNext
    k = k +  1 
Loop
ну вот будет у меня в таблице clients 40000 тысяч записей ,
такая конструкция будет очень долго загружать все данные в combobox или msflexgrid
за счет чего в той же самой 1с так быстро загружаются все данные в грид
или у них загрузка идет при запуске программы , а далее догружается чтоли ?
и если так то неужели это все висит в оперативной памяти , комп по идее должен жестко висеть
после всего этого
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724703
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admза счет чего в той же самой 1с так быстро загружаются все данные в грид
или у них загрузка идет при запуске программы , а далее догружается чтоли ?
У них не загружаются данные в грид полностью, они подгружаются из базы по мере прокрутки грида.
Обрати внимание, как идиотски ведет себя квадратик на линейке прокрутки.

Грид в Аксессе поступает так же. Связанный ДБГрид возможо тоже, но я им не пользовался, не наблюдал за ним.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724731
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admчто понимается под выражением?
вот определение выражения из хелпа:
expression
Any combination of operators, constants, literal values, functions, names of columns, controls, and properties that result in a single value. In a query, you can use expressions anywhere that you can use a column name. In the Query Designer, you can use expressions as settings for many action and properties arguments, to set criteria or define calculated fields in queries, and to set conditions in macros. In the Database Designer, you can use expressions to define check constraints.

То есть
5 - не выражение
5+2 - выражение
(5+2)*3 - выражение
(5) - с точки зрения VB получается тоже выражение

TextBox1 - не выражение (это ссылка на объект)
TextBox1 & TextBox2 - выражение (конкатенация), однако для большей ясности правильно было бы записать TextBox1.Text & TextBox2.Text. То есть VB неявно берет свойство объекта по умолчанию, что в данном случае - Text
(TextBox1) - это выражение, хоть и неочевидно. А так как выражение - VB опять же берет свойство по умолчанию, то есть это эквивалентно TextBox1.Text. То есть это уже не ссылка на объект

aduka05admто есть объекты надо передавать без скобок так понял

Нет, неправильно понял. Есть скобки, относящиеся к синтаксису , есть скобки, которые участвуют в выражении.
a = rs.Fields("id").Value - скобки относятся к синтаксису
call query(strsql) - скобки относятся к синтаксису
query (strsql) - скобки НЕ относятся к синтаксису, так как в таком вызове процедуры они не предусмотрены, поэтому ты превратил переменную strsql в выражение с участием переменной strsql. В данном случае это просто лишнее действие, которое ни к чему не приводит, в случае с объектами будет все запутаннее. Просто надо четко осознавать синтаксис и не делать лишних действий.

А с ситуацией я столкнулся реально, когда один программер передавал таким образом рекордсет, а в процедуру передавалась коллекция Fields (она у рекордсета по умолчанию). Он два дня ошибку искал. А все лишь надо было синтаксис соблюдать
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724830
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proвот определение выражения из хелпа:
блин, не то скопировал
expressionA combination of keywords, operators, variables, and constants that yields a string, number, or object. An expression can be used to perform a calculation, manipulate characters, or test data.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36725093
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
очень интересно)))
авторУ них не загружаются данные в грид полностью, они подгружаются из базы по мере прокрутки грида.
не совсем понимаю как это , буду искать
спасибо за ценную информацию ))))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36725207
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
query (strsql)
при передаче переменной не нужно использовать скобки получается?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36725273
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Код: plaintext
query (strsql)
при передаче переменной не нужно использовать скобки получается?
Еще раз прочти начало этого сообщения. Переменная тут не причем.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726649
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.ProЕще раз прочти начало этого сообщения. Переменная тут не причем.
это я понял спасибо большое
Shocker.ProНаличие скобок - это уже начинается выражение,
я об этом, то есть делая так
Код: plaintext
query (strsql)
и так
Код: plaintext
query strsql
один эффект , при передаче объекта было бы совсем другое,
а правильнее в этом случае второе , так как это не выражение а передача просто переменной
Shocker.ProЕсть скобки, относящиеся к синтаксису, есть скобки, которые участвуют в выражении
то есть здесь эти скобки не относятся к синтаксису , поэтому и не нужны
собственно говоря об этом и спрашивал))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726655
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да - второе правильнее
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726807
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не пойму в чем проблема
при клике на гриде combo перемещается на выделенную строку
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub FlexGridPlus4_Click()
Combo2.Left = FlexGridPlus4.Left + FlexGridPlus4.ColWidth( 0 )
Combo2.Top = FlexGridPlus4.Top + (FlexGridPlus4.RowHeight( 0 ) * (FlexGridPlus4.RowSel))
Combo2.Width = FlexGridPlus4.ColWidth( 1 )
Combo2.Text = FlexGridPlus4.TextMatrix(FlexGridPlus4.RowSel,  1 )
Combo2.Visible = True
End Sub
только проблема в том что если grid не помещается на форме (то есть записей много и мы прокручиваем grid), то combo появляется не в выделенной строке а ниже и чем дальше тем все дальше и дальше)))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726810
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если грид помещается на форме(то есть записей мало ),то все нормально работает
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726814
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Не знаю, как у плюса, а у обычного флексгрида есть свойства CellHeight, CellTop, CellLeft
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 2 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите в чем проблема
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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