VBA в CorelDraw

Программирование на Visual Basic for Applications
litvin22
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.06.2007 (Пт) 17:30
Откуда: Ставрополь

VBA в CorelDraw

Сообщение litvin22 » 01.06.2007 (Пт) 17:48

Как из макроса создать текст в рисунке?
При тупой попытке записи, создается код типа:

Sub Macro15()
Dim s1 As Shape
' Recording of this command is not supported
' Recording of this command is not supported: TextUndoRedo
' Recording of this command is not supported: TextUndoRedo
End Sub

anvg
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 20.05.2007 (Вс) 18:04

Сообщение anvg » 02.06.2007 (Сб) 9:24

Dim s1 As Shape
Set s1 = ActiveLayer.CreateArtisticText(1, 1, "Текст", _
cdrRussian, cdrCharSetRussian, "Times New Roman", _
32, cdrTrue, cdrFalse, cdrNoFontLine)

litvin22
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.06.2007 (Пт) 17:30
Откуда: Ставрополь

Сообщение litvin22 » 05.06.2007 (Вт) 20:46

спасибо.все получилось

litvin22
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.06.2007 (Пт) 17:30
Откуда: Ставрополь

Сообщение litvin22 » 06.06.2007 (Ср) 14:11

Можно ли, а если можно, то как:
В VBA CorelDraw 13 создать динамический массив элементов управления.
Он не поддерживает индексированные элементы управления, как VB.

Метод Add позволяет создать любое кол-во элементов, но они не отслеживают событий.
Может можно как-то заставить?

Если через WithEvents, то реагирует только последний элемент.

Писать заранее кучу WithEvents, и кучу событий к ним - нереально.
У меня читаются однотипные пакты данных из файла и я не знаю заранее, сколько их будет
Можно, конечно, отлеживать событи мыши в разных частях формы,на которой нарисованы псевдоэлементы, но это не удобно по ряду причин.

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

Dim comArray() As CommandButton
Dim WithEvents comWithEvents As CommandButton

Private Sub CommandButton1_Click() '' äèíàìè÷åñêèé ìàññèâ êíîïîê
    Dim i As Long, ii As Long
    ii = 5
    ReDim comArray(1 To ii)
    For i = 1 To ii
        Set comArray(i) = Controls.Add("Forms.CommandButton.1", "comArray_" & (i), True)
        With comArray(i)
            .Left = 0:                  .Top = i * 20
            .Width = 100:               .Height = 20
            .Caption = "Êíîïêà  " & comArray(i).Name
        End With
    Next i
End Sub

Private Sub comArray_Click() ''ñîáûòèå äëÿ êíîïêè comArray
    MsgBox "Ok"
End Sub

Private Sub CommandButton2_Click() '' ìíîãîêðàòíîå äîáàâëåíèå
    Dim i As Long, ii As Long
    ii = 5
    For i = 1 To ii
        Set comWithEvents = Controls.Add("Forms.CommandButton.1", "comWithEvents_" & (i), True)
        With comWithEvents
            .Left = 100:                .Top = i * 20
            .Width = 100:               .Height = 20
            .Caption = "Êíîïêà  " & comWithEvents.Name
        End With
    Next i
End Sub

Private Sub comWithEvents_Click() ''ñîáûòèå äëÿ êíîïêè comWithEvents
    MsgBox "Ok"
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.06.2007 (Ср) 14:17

litvin22 писал(а):Можно ли, а если можно, то как

Воспользовавшись поиском.
http://bbs.vbstreets.ru/viewtopic.php?p=37547#37547
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

litvin22
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.06.2007 (Пт) 17:30
Откуда: Ставрополь

Сообщение litvin22 » 07.06.2007 (Чт) 14:14

Да, спасибо!
Кстати, отлично работает с нумерованным массивом, не понятно, почему авторы предлагают только коллекцию.
А поиском я пользовался, но вводил "динамически", "элементы" и т.п.

litvin22
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.06.2007 (Пт) 17:30
Откуда: Ставрополь

Сообщение litvin22 » 09.06.2007 (Сб) 11:18

Сейчас работаю над ипортом/экспортом в Corel координат кривых Безье (и др. объектов).
В моем случае из/в LAS-файлы, но это не принципиально.
Может кто решал подобные задачи?

litvin22
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.06.2007 (Пт) 17:30
Откуда: Ставрополь

Сообщение litvin22 » 27.06.2007 (Ср) 15:13

Кто-нибудь знает, как в Corel создать кнопку-команду на панеле управления, запускающую макрос, который находится не в GlobalMacros, а в проекте, т.е. хранится в файле?


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 114

    TopList