Страница: 1 |
Здравствуйте! Подскажите как программно добавить новую форму. Еще у меня такой вопрос, VBA, когда в приложении происходит большой перебор данных время затраченное на этот перебор сильно отличается от VB6? Сказал что-то, сам не понял! Вообщем дело так: В AutoCADe на чертеже куча примитивов я их все по одному перебираю, на проверку какого-либо свойства, VBA делает это за 2 сек, тот же код, но в VB6 делает это же самое за 2 мин. Наверное здесь можно провести аналогию с Exсel.
Новую форму добавить очень просто. Создаешь прототип который хочешь добавлять, а потом вот это Private Sub Command1_Click() Set myform = New Form1 End Sub А нацчет перебора... Я тебе так скажу: За 2 минуты VB6 можрет сделать немеряно работы, и если простой перебор контролей занимает столько времени, то или ты что то делаешь неправильно или я чего то не понял... MAGNUS, спасибо! Вот код, здесь происходит обыкновенный подсчет количества объектов: Sub Main() On Error Resume Next For Each entry In acadDoc.ModelSpace End Sub Так вот из-за последнеего цикла программа работает 2 мин. Может это из-за связи VB с AutoCADом? Я этот exe-шник запускаю из Acada, мне его надо создавать только когда он не включен, а так чаще из него. Но все равно конечно попробовать стоит, ладно еще раз спасибо. Страница: 1 |
Вопрос: Программное добавление формы
Добавлено: 10.09.02 23:33
Автор вопроса: sergeyz
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Satrapp
ICQ: 75556561
Вопросов: 8
Ответов: 80
Профиль | | #1
Добавлено: 10.09.02 23:36
Может, это и примитивно, но Form.Load, Form. Show не хотят звать формочку?
Номер ответа: 2
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #2
Добавлено: 11.09.02 00:02
 im myform As Form
myform.Show
И все.
Номер ответа: 3
Автор ответа:
sergeyz
Вопросов: 3
Ответов: 7
Профиль | | #3
Добавлено: 11.09.02 16:35
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Dim butcl As Integer
butcl = 0
'Подключение к приложению AutoCAD
Set acadApp = GetObject _
(, "AutoCAD.Application")
If Err Then
Err.Clear
butcl = MsgBox("AutoCAD не запущен, попытаться его запустить?", vbYesNo, "Ошибка запуска")
If butcl = 6 Then
Set acadApp = CreateObject _
("AutoCAD.Application")
If Err Then
MsgBox "Ошибочка", vbCritical, "Ошибка запуска AutoCAD"
Exit Sub
End If
Else
Exit Sub
End If
End If
Dim x As Integer
'Открытие чертежа
acadApp.Visible = True
acadApp.WindowState = acMax
Set acadDoc = acadApp.ActiveDocument
x = x + 1
Next
Номер ответа: 4
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #4
Добавлено: 11.09.02 17:10
Значит так. По поводу скорости. Сейчас у тебя АКАД создается внешним процессом, а это сильно замедляет доступ к нему. Попробуй вставить его в OLE на форме. и создать Embedded Object из файла. В этом случае ему не нужно будет переходить границы процесса для доступа к обьектам и все должно работать гораздо быстрее. Попробуй!
Номер ответа: 5
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #5
Добавлено: 11.09.02 17:18
Значит так. По поводу скорости. Сейчас у тебя АКАД создается внешним процессом, а это сильно замедляет доступ к нему. Попробуй вставить его в OLE на форме. и создать Embedded Object из файла. В этом случае ему не нужно будет переходить границы процесса для доступа к обьектам и все должно работать гораздо быстрее. Попробуй!
Номер ответа: 6
Автор ответа:
sergeyz
Вопросов: 3
Ответов: 7
Профиль | | #6
Добавлено: 12.09.02 00:57