Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Программное добавление формы Добавлено: 10.09.02 23:33  

Автор вопроса:  sergeyz

Здравствуйте! Подскажите как программно добавить новую форму.

Еще у меня такой вопрос, VBA, когда в приложении происходит большой перебор данных время затраченное на этот перебор сильно отличается от VB6? Сказал что-то, сам не понял! Вообщем дело так: В AutoCADe на чертеже куча примитивов я их все по одному перебираю, на проверку какого-либо свойства, VBA делает это за 2 сек, тот же код, но в VB6 делает это же самое за 2 мин. Наверное здесь можно провести аналогию с Exсel.

Ответить

  Ответы Всего ответов: 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

Новую форму добавить очень просто.

Создаешь прототип который хочешь добавлять, а потом вот это

Private Sub Command1_Click()
 ;Dim myform As Form

 Set myform = New Form1
 myform.Show

End Sub
И все.

А нацчет перебора... Я тебе так скажу: За 2 минуты VB6 можрет сделать немеряно работы, и если простой перебор контролей занимает столько времени, то или ты что то делаешь неправильно или я чего то не понял...

 

Ответить

Номер ответа: 3
Автор ответа:
 sergeyz



Вопросов: 3
Ответов: 7
 Профиль | | #3 Добавлено: 11.09.02 16:35

MAGNUS, спасибо!

Вот код, здесь происходит обыкновенный подсчет количества объектов:

Sub Main()
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Dim butcl As Integer
butcl = 0

 On Error Resume Next
    'Подключение к приложению 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

For Each entry In acadDoc.ModelSpace
x = x + 1
Next

End Sub

Так вот из-за последнеего цикла программа работает 2 мин. Может это из-за связи VB с AutoCADом?

Ответить

Номер ответа: 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

Я этот exe-шник запускаю из Acada, мне его надо создавать только когда он не включен, а так чаще из него. Но все равно конечно попробовать стоит, ладно еще раз спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам