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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2006, 07:11   #1
Sony
 
Регистрация: 17.11.2006
Сообщений: 4
По умолчанию Как из delphi вставить символ в word?

Подскажите, как решить такой вопрос. Открываю из delphi существующий файл word (шаблон).В нем есть CheckBox. Как к нему обратиться из delphi, чтобы поставить галочку (value:=true)? была попытка что-то типа w1.ActiveDocument.VBProject.VBCompo nents ....но не увенчалась успехом...
Или вариант: в Text box в Word вставить символ:
W1: TWordApplication;
vr1, vr2:Olevariant;
vr2:= 'Courier New';
vr1:='Unicode';
w1.Selection.InsertSymbol(9658,vr2, vr1, ...) но здесь должен быть четвертый параметр Bais:Olevariant. Какой?
Sony вне форума Ответить с цитированием
Старый 19.11.2006, 23:06   #2
nova-alex
Пользователь
 
Регистрация: 06.11.2006
Сообщений: 51
По умолчанию

Попробуй включить в Word-е макрос и напиши в CheckBoxe что-нибудь, потом макрос останови и через VBasic посмотри код этого макроса, он дает много чего полезного, а потом используя свойства бокса работай с ними через делфи. Скачай книгу - М.Фленов "Библия Delphi" -там есть полезные простые советы по поводу MSOffice.
nova-alex вне форума Ответить с цитированием
Старый 20.11.2006, 02:04   #3
Sony
 
Регистрация: 17.11.2006
Сообщений: 4
По умолчанию

Цитата:
Сообщение от nova-alex Посмотреть сообщение
Попробуй включить в Word-е макрос и напиши в CheckBoxe что-нибудь, потом макрос останови и через VBasic посмотри код этого макроса, он дает много чего полезного, а потом используя свойства бокса работай с ними через делфи. Скачай книгу - М.Фленов "Библия Delphi" -там есть полезные простые советы по поводу MSOffice.
смотрела, в коде vb у функции три параметра, в delphi четыре. И просто EmptyParam в качестве четвертого не прокатывает
Sony вне форума Ответить с цитированием
Старый 02.09.2014, 13:36   #4
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Подниму темку, чтоб не плодить новую, т.к. мой вопрос с названием темы полностью созвучен.
Я в ворде создаю таблицу (точнее, добавляю строки к уже существующей) и заношу в ячейки значения из своей таблицы
Код:
MyWord.ActiveDocument.Tables.Item(1).Cell(i,1).Range.Text:=StringGrid1.Cells[1,i]
Как мне в конце добавить символ? Например, "♫". В Дельфи из Ворда он отображается как просто буква "d". Пробовал методом
Код:
TmpStr:=TmpStr+#$266B;
но этот код и в ворд вместо "♫" добавляет "d". При попытке вставить этот символ просто в код программы в этом виде - в коде отображается "?".
Как быть?
Ship_1 вне форума Ответить с цитированием
Старый 02.09.2014, 16:00   #5
oksalan
Пользователь
 
Регистрация: 28.02.2012
Сообщений: 12
По умолчанию

можно еще так я думаю:


Код:
procedure TForm3.N11Click(Sender: TObject);
var
MsWord,Table:Variant;
i,j:integer;
begin
MsWord:=CreateOleObject('Word.Application');
MsWord.Visible:=False;
MsWord.Documents.Add;
MsWord.Selection.Font.Name:='Times New Roman';
MsWord.Selection.Font.Size:='12';
MsWord.ActiveDocument.Tables.Add(MsWord.ActiveDocument.Range,
dbgrd1.DataSource.DataSet.RecordCount, dbgrd1.DataSource.DataSet.FieldCount);
Table:=MsWord.ActiveDocument.Tables.Item(1);
Table.Style:='Сетка таблицы';
dbgrd1.DataSource.DataSet.First;
for i:=0 to dbgrd1.DataSource.DataSet.RecordCount-1 do
begin
for j:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 do
Table.Cell(i+1,j+1).Range.InsertBefore(dbgrd1.DataSource.DataSet.Fields[j].AsString);
dbgrd1.DataSource.DataSet.Next;
MsWord.Visible:=True;
end;
 
end;


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 02.09.2014 в 20:46.
oksalan вне форума Ответить с цитированием
Старый 02.09.2014, 17:04   #6
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Не всё понятно и немного путанно. Если правильно понимаю, Вы описали вариант переноса значений из базы данных (dbgrd) в таблицу ворда?
InsertBefore проблему не решило. Точно так же выводит "d" вместо "♫".
Ship_1 вне форума Ответить с цитированием
Старый 02.09.2014, 20:50   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не знаю точно, просто предположение:

Ship_1, а версия Delphi у вас, число случайно, не меньше, чем 2009 ?!
Подозреваю, что проблема кроется в том, что строки не Unicode...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.09.2014, 20:55   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Для Delphi 6/7 должно быть примерно так:
Код:
var
  TmpStr: WideString;
begin
  ...
  TmpStr := TmpStr + WideChar($266B);
  ...
end;
Vapaamies вне форума Ответить с цитированием
Старый 04.09.2014, 13:23   #9
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Serge_Bliznykov, она достаточно специально меньше 2009. Это семёрка.
Vapaamies, получилось! Спасибо большое!

P.S. А можно ли это
Код:
TmpStr:=StringGrid1.Cells[3,i];
TmpStr:=TmpStr+WideChar($266F);
сделать одной командой? Прямое сложение даёт "?" вместо символа. Попробовал всё загнать в PWideChar(StringGrid1.Cells[3,i]+WideChar($266F)) - всё равно вопрос, а вместо значения из StringGrid1 вообще иероглифы.

Последний раз редактировалось Ship_1; 04.09.2014 в 14:39.
Ship_1 вне форума Ответить с цитированием
Старый 04.09.2014, 19:41   #10
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Сделать одной командой можно. Сначала нужно посмотреть, какой тип имеет параметр процедуры или свойство. Если WideString, можно смело писать так:
Код:
begin
  ...
  Word.TraTaTa.SomeProc(WideString(StringGrid1.Cells[3,i]) + WideChar($266F));
  ...
end;
Vapaamies вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно вставить код C++ в Delphi 7 Владислав Общие вопросы Delphi 7 20.03.2012 20:05
Как получить символ?(Delphi) The_Darkness Помощь студентам 3 18.07.2008 08:36
как вставить swf file в delphi Altera Компоненты Delphi 4 18.02.2008 20:12
Как вставить HTML страницу в Delphi приложение? Valdis Компоненты Delphi 7 03.10.2007 20:52