как вызвать CommonDialog?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
toozik
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 17.03.2005 (Чт) 18:29

как вызвать CommonDialog?

Сообщение toozik » 17.03.2005 (Чт) 18:46

Есть у меня класс Commands, в нем свойством прописана форма frmBlabla, на котором есть CommonDialog1 Control. Еще одно свойство - экземпляр другого класса myProject.
Мне надо в методе myProject.CreatePrroject Создать базу данных, соответственно у юзера надо имя спросить и где сохранить. Я и в frmBlabla и в myProject свойства Parent прописал, а из myProject.CreatePrroject все рно не работает вызов CommonDialog1. Он, собственно, не работает и из Commands.
Пишет Error 91: Object variable is not set.

В родительском классе оба объекта предварительно созданны и их родители тоже.
Что я делаю не так? :roll:

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 17.03.2005 (Чт) 18:56

:shock: :roll:
На какой форме у тебя лежит CommonDialog1? Вот и вызывай его ...

Вызываем…
Form1.CommonDialog1.ShowOpen

А значение передаем туда куда надо…
Text1.Text = Form1.CommonDialog1.FileName

Если я так все понял... :? :oops:

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 17.03.2005 (Чт) 19:02

Код: Выделить всё
Me.CommonDialog1.FileName = "" 'Для начала обнулим путь к файлу
Me.CommonDialog1.Filter = "Text Files (*.txt)|*.txt|DuaL-Up(*.dml) |*.dml|"  'Зададим фильт отбора файлов
Me.CommonDialog1.ShowOpen 'Открываем CommonDialog
PathFile = Me.CommonDialog1.FileName 'Получаем путь и имя файла
Me.CommonDialog1.CancelError = True 'Это для генерации ошибки в случае отказа пользователя от выбора файла
Ми..и...и...и..р Вашему дому.............

toozik
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 17.03.2005 (Чт) 18:29

Сообщение toozik » 17.03.2005 (Чт) 19:32

не, не поняли вы. Есть класс Commands:
Код: Выделить всё

Private mfrmSet As frmSetCnstr
Private mCurrentProject As clsProject
...

        Set mfrmSet = New frmSetCnstr
        Set mfrmSet.Parent = Me

            Set mCurrentProject = New clsProject
            Set mCurrentProject.Parent = Me
            mCurrentProject.CreateProject          ' Не работает!
...


класс clsProject:
Код: Выделить всё

Private mcommandsParent As Commands
' тут идут Get/set Parent

Public Sub CreateProject()
    On Error GoTo ProcError
    Screen.MousePointer = vbHourglass
    Dim strDBName As String
    strDBName = mcommandsParent.frmSet.GetDBName()
    If Len(strDBName) > 0 Then
        CreateDB strDBName
    End If
ProcExit:
    Screen.MousePointer = vbDefault
    Exit Sub
ProcError:
    MsgBox Err.Description
    Resume ProcExit
...

End Sub



В форме mfrmSet на которой этот CommonDialog с именем dlgFileOpenSave есть такая функция:

Код: Выделить всё
Public Function GetDBName() As String
    Load Me
'Get the desired name using the common dialog
On Error GoTo ProcError
Dim strFileName As String
'set up the file save dialog file types

    dlgFileOpenSave.DefaultExt = "xls"
    dlgFileOpenSave.DialogTitle = "Create Database"
    dlgFileOpenSave.Filter = "Excell WorkBooks (*.xls)|*.xls"
    dlgFileOpenSave.FilterIndex = 1
    dlgFileOpenSave.Flags = _
    cdlOFNHideReadOnly Or cdlOFNOverwritePrompt Or cdlOFNPathMustExist

'    setting CancelError means the control will
'    raise an error if the user clicks Cancel
    dlgFileOpenSave.CancelError = True
'    show the SaveAs dialog
    dlgFileOpenSave.ShowSave
'    get the selected name
'    dialog prompted for overwrite,
'    so kill file if it exists
    On Error Resume Next
    Kill strFileName
ProcExit:
    GetDBName = strFileName
    Exit Function
ProcError:
    strFileName = ""
    Resume ProcExit

End Function

toozik
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 17.03.2005 (Чт) 18:29

Сообщение toozik » 20.03.2005 (Вс) 16:42

у меня такое чувство, что CommonDialog не вызывается, поскольку он на модальном окне расположен. А вызвать в немодальном виде окно нельзя приложение, к которому эта длл пишется, не позволяет. что делать?

toozik
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 17.03.2005 (Чт) 18:29

Сообщение toozik » 20.03.2005 (Вс) 17:22

в общем, я на этот диалог плюнул и взял класс у товарища ASD :)
за что ему и кланяюсь)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 45

    TopList