[CDR 2017-2021] Вставка имени файла в документ

MrDesigner

Топикстартер
15 лет на форуме
Сообщения
2 062
Реакции
761
так получилось ... у Михаила лаконичней :)

Уф. Какие-то глюки у меня, что ли...

Вот, всё работает, всем спасибо!

Код:
Sub InsertFileName()
    Set s = ActiveShape
   If s Is Nothing Then Beep: Exit Sub
    Set txt = ActiveLayer.CreateArtisticText(s.RightX - ActiveDocument.ToUnits(150, cdrMillimeter), _
    s.BottomY - ActiveDocument.ToUnits(-15, cdrMillimeter), ActiveDocument.FileName, , , "Tahoma", _
    24, Alignment:=cdrRightAlignment)
    txt.Fill.UniformColor = CreateCMYKColor(0, 0, 0, 30)
End Sub
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Еще один штрих старого перфекциониста: конструкция ActiveDocument.ToUnits(-15, cdrMillimeter) некошерна. Гораздо правильнее в начале процедуры делать
ActiveDocument.Unit = cdrMillimeter
а потом просто писать
s.RightX -150, s.BottomY +15
 
  • Спасибо
Реакции: dastin

MrDesigner

Топикстартер
15 лет на форуме
Сообщения
2 062
Реакции
761
ыы!

Как правильно код должен быть написан, подскажите, плз?

С учётом моих правок, сейчас рабочий этот:

Код:
Sub InsertFileName()
    Set s = ActiveShape
   If s Is Nothing Then Beep: Exit Sub
    Set txt = ActiveLayer.CreateArtisticText _
    (s.RightX - ActiveDocument.ToUnits(150, cdrMillimeter), _
    s.BottomY - ActiveDocument.ToUnits(-15, cdrMillimeter), _
    ActiveDocument.FileName, , , "Tahoma", 24, Alignment:=cdrRightAlignment)
    txt.Fill.UniformColor = CreateCMYKColor(0, 0, 0, 30)
End Sub
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Да не заморачивайся
 

MrDesigner

Топикстартер
15 лет на форуме
Сообщения
2 062
Реакции
761
Во. Ещё одна "хотелка": имя файла без расширения возможно публиковать? Или тут уже сложности?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
имя файла без расширения возможно публиковать?
Конечно можно. Отрезай последние 4 символа через Left
Хотя кошерно было бы искать символ "." а потом отрезать все что за ним
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 131
Реакции
2 027
заметём в кучу :)

Код:
Sub InsertFileName()
ActiveDocument.Unit = cdrMillimeter
imya = ActiveDocument.FileName
imya = Left(imya, Len(imya) - 4) 
    Set s = ActiveShape
   If s Is Nothing Then Beep: Exit Sub
    Set txt = ActiveLayer.CreateArtisticText _
    (s.RightX - 150, s.BottomY +15, imya, , , "Tahoma", 24, Alignment:=cdrRightAlignment)
    txt.Fill.UniformColor = CreateCMYKColor(0, 0, 0, 30)
End Sub
 
  • Спасибо
Реакции: tohaa, MrDesigner и _MBK_