Как получить в строковую переменную имя шрифта?

Автор tvitaly1, 11 марта 2012, 23:11

0 Пользователи и 1 гость просматривают эту тему.

tvitaly1

Как получить в строковую переменную имя шрифта в выделенном тексте в Write Basic?

neft

По мотивам вашего предыдущего вопроса и ответа Клио
TextFontName = selection.getByIndex(0).CharFontName
и т.д. и т.п.


Но! А если в выделенном тексте используются несколько разных шрифтов?

PS. Нужно осваивать работу с расширением Xray. И сможете сами отвечать на свои вопросы.

tvitaly1

Цитата: neft от 12 марта 2012, 11:26
По мотивам вашего предыдущего вопроса и ответа Клио
TextFontName = selection.getByIndex(0).CharFontName
и т.д. и т.п.


Но! А если в выделенном тексте используются несколько разных шрифтов?

PS. Нужно осваивать работу с расширением Xray. И сможете сами отвечать на свои вопросы.

Спасибо большое! А где посмотреть описание объектов на русском?

Вообщем меня интересовал только 1 фрагмент текст с только одним выделенным шрифтом, следующей функцией я вполне могу это определить
function FontName as string
Dim oCurrentSelection As Variant
Dim nCount As Long
Dim i as long
oCurrentSelection = ThisComponent.getCurrentSelection()
nCount = oCurrentSelection.getCount()

Fontname =""
for i=0 to nCount-1
  if i>0 then
       Fontname = Fontname+";"
      end if
Fontname = Fontname+ oCurrentSelection.getByIndex(i).CharFontName
     next i
     
end Function


Но в идеале мне хотелось бы иметь функцию типа запись?

Как объявить запись?















neft

ЦитироватьНо в идеале мне хотелось бы иметь функцию типа запись?

Как объявить запись?

"Запись" в смысле - type Record?

tvitaly1

Цитата: tvitaly1 от 12 марта 2012, 15:04
Цитата: neft от 12 марта 2012, 11:26
По мотивам вашего предыдущего вопроса и ответа Клио
TextFontName = selection.getByIndex(0).CharFontName
и т.д. и т.п.

Растроен я на это определения, куча случав, когда в абзаце только один шрифт, а функция правильно шрифт не определяет!


Но! А если в выделенном тексте используются несколько разных шрифтов?

PS. Нужно осваивать работу с расширением Xray. И сможете сами отвечать на свои вопросы.

Спасибо большое! А где посмотреть описание объектов на русском?

Вообщем меня интересовал только 1 фрагмент текст с только одним выделенным шрифтом, следующей функцией я вполне могу это определить
function FontName as string
Dim oCurrentSelection As Variant
Dim nCount As Long
Dim i as long
oCurrentSelection = ThisComponent.getCurrentSelection()
nCount = oCurrentSelection.getCount()

Fontname =""
for i=0 to nCount-1
  if i>0 then
       Fontname = Fontname+";"
      end if
Fontname = Fontname+ oCurrentSelection.getByIndex(i).CharFontName
     next i
     
end Function


Но в идеале мне хотелось бы иметь функцию типа запись?

Как объявить запись?
















tvitaly1

Растроен я на это определение, куча случав, когда в абзаце только один шрифт, а функция правильно шрифт не определяет!

neft

Цитата: tvitaly1 от 13 марта 2012, 14:26
Растроен я на это определение, куча случав, когда в абзаце только один шрифт, а функция правильно шрифт не определяет!

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

tvitaly1

Цитата: neft от 13 марта 2012, 15:57
Цитата: tvitaly1 от 13 марта 2012, 14:26
Растроен я на это определение, куча случав, когда в абзаце только один шрифт, а функция правильно шрифт не определяет!
пробелы символом Mangal не бъются, заменяются на Tahoma

А вот теперь нужно показать ваш файл с этой ошибкой, чтобы понять в чем ошибка.
пробелы символом Mangal не бъются, заменяются на Tahoma  :-[

tvitaly1

Цитата: tvitaly1 от 13 марта 2012, 20:28

пробелы символом Mangal не бъются, заменяются на Tahoma  :-[
Но вот тут же показывает Mangal не смотря на пробелы!!!

Почему при этом эта функция выдает пустую строку?
Type ff
Name1 as String
End Type

function Font
Dim oCurrentSelection As Variant
Dim nCount As Long
Dim i as long
   oCurrentSelection = ThisComponent.getCurrentSelection()
   nCount = oCurrentSelection.getCount()
      Font = CreateObject("ff")
      Font.Name1 =""
       
       for i=0 to nCount-1
        if i>0 then
          Font.Name1 = Font.Name1+";"
         end if
         Font.Name1 = Font.Name1+ oCurrentSelection.getByIndex(i).CharFontName
        next i
       
end Function


neft

Потому, что в выделении несколько шрифтов.

tvitaly1

#10
Цитата: neft от 13 марта 2012, 22:23
Потому, что в выделении несколько шрифтов.
Это понятно, но может быть можно определить имя шрифта не взирая на пробелы?
В Ворде в таком случае программно определяется Mangal.
Название шрифта можно получить непосрественно из combobox?

neft

В Ворде шрифт выделенного текста может определяться по первому символу в выделении.
Если хотите, можете делать также.

tvitaly1

#12
 В прикрепленных файлах абзац, в котором используется только Mangal, и файл со шрифтом.

Во всем абзаце щрифт неопределяется, но если проверять каждое слово в отдельности или каждый пробел в отдельности, показывает Mangal.

Так что неопределяется правильно для юникода во write. :(

[вложение удалено Администратором]

neft

#13
Установить для выделения нужный шрифт.
Если нужно, то CharFontName => CharFontNameComplex (зависит от того, как устанавливался шрифт).



[вложение удалено Администратором]