Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2012, 21:07   #1
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию delphi + MSWord (Font - Symbol)

Друзья, подскажите пожалуйста как можно изменить символ что бы он брался из шрифта Symbol?
Использовал в программе следующий код.

Сразу оговорюсь для меня эта тема мало известна

Код:
function SetBmText(var aBms : Variant; const aBmName, aText : String) : Boolean;
var
  Bm, Rng : Variant;
begin
  //Проверяем - существует ли закладка с заданным именем.
  Result := aBms.Exists(aBmName);
  //Если закладка не найдена - выходим.
  if not Result then Exit;
  //Ссылка на закладку.
  Bm := aBms.Item(aBmName);
  //Ссылка на диапазон, связанный с закладкой.
  Rng := Bm.Range;
  //Удаление закладки.
  Bm.Delete;
  //Заменяем текст в диапазоне.
  Rng.Text := aText;
  //Добавляем новую закладку с таким же именем.
  aBms.Add(aBmName, Rng);
end;

 

 

procedure TForm1.Button13Click(Sender: TObject);
var
  wdApp, wdDocs, wdDoc, wdBms : Variant;
 z1,z2,z3,z4 : String;
begin
Od := extractfilepath(paramstr(0))+'Template\shablon.rtf';
    wdApp := CreateOleObject('Word.Application');
  Form1.WindowState:=wsMinimized;
  //Делаем видимым окно MS Word.
  wdApp.Visible := True;
  //Ссылка на коллекцию документов.
  wdDocs := wdApp.Documents;
  //Попытка открыть выбранный файл.
  //wdDoc := wdDocs.Open(FileName:=Od.FileName);
  wdDoc := wdDocs.Open(FileName:=Od);
  //Подключаемся к коллекции закладок.
  wdBms := wdDoc.Bookmarks;
  //Ищем закладки с нужными именами и изменяем их текст, в соответствие
  //с данными, введёнными на форме.
  z1:=#214;
  z3:=#214;
  z4:=#214;
  SetBmText(wdBms, 'z1', z1);
  SetBmText(wdBms, 'z3', z3);
  SetBmText(wdBms, 'z4', z4);

  //Сохранять документ следует под другим именем, чтобы не перезаписать шаблон.
  //wdApp.DisplayAlerts := False; //Отключаем режим показа предупреждений.
  //wdDoc.SaveAs(FileName:=...);
  //wdApp.DisplayAlerts := True; //Включаем режим показа предупреждений.
  //Закрываем документ.
  //wdDoc.Close;
  //Закрываем MS Word.
  //wdApp.Quit;

end;
В итоге должен выводится символ 214 из шрифта Symbol ,а выводится буква "Ц"
Подскажите пожалуйста как указать программе откуда нужно брать символ?
Dandy777 вне форума Ответить с цитированием
Старый 30.10.2012, 21:45   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Я думаю... да нет, знаю, но, увы, не помню - где-то в Word'e есть свойство Font, которое Вы не установили, поэтому программа берет то, что по умолчанию (то есть Arial или Times NR).

Вроде бы должно быть что-то типа wdDoc.Font.Style или wdDoc.FontStyle
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 31.10.2012, 11:02   #3
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Я думаю... да нет, знаю, но, увы, не помню - где-то в Word'e есть свойство Font, которое Вы не установили, поэтому программа берет то, что по умолчанию (то есть Arial или Times NR).

Вроде бы должно быть что-то типа wdDoc.Font.Style или wdDoc.FontStyle
Я нашел следующее:

Если в функции прописать:
Код:
wdRng.Font.Name := 'Symbol';
То весь текст будет написан таким шрифтом, НО мне весь текст не нужен таким шрифтом, а нужны лишь 3 из 7 закладок. Чувствую что как-то можно указать какие закладки каким шрифтом выводить, НО я пока этого не могу осилить.
Dandy777 вне форума Ответить с цитированием
Старый 31.10.2012, 13:51   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Берите в ВОРде объект Selection или Range и делайте с ним что хотите.
FaTaL вне форума Ответить с цитированием
Старый 31.10.2012, 14:30   #5
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию

Проблема решена следующим образом:
Добавил в код:

Код:
    wdDoc.Bookmarks.Item('z1').Select;
    wdApp.Selection.Font.Name := 'Symbol';
    wdDoc.Bookmarks.Item('z2').Select;
    wdApp.Selection.Font.Name := 'Symbol';
    wdDoc.Bookmarks.Item('z3').Select;
    wdApp.Selection.Font.Name := 'Symbol';
    wdDoc.Bookmarks.Item('z4').Select;
    wdApp.Selection.Font.Name := 'Symbol';
Dandy777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Резиновый font-size, Как сделать резионвый font-size в блоке? AlienNation HTML и CSS 0 26.09.2011 09:14
Canvas.Font.Style := Label.Font.Style; не выходит ArtGrek Общие вопросы Delphi 3 23.02.2011 19:55
Экспортировать отчёт из Delphi в MsWord,дублировать результат запроса в Label ulala Помощь студентам 0 01.10.2010 18:45
delphi и MSWord Doget Помощь студентам 1 18.05.2009 14:39
MSWord MAcK Компоненты Delphi 3 04.04.2007 12:22