|
Вопрос # 2 665/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Необходимо добавить текст по нажатию кнопки в Word. Есть 5 закладок с именами n1...n5. Во все эти закладки нада записать один и тот же текст.
Если добавлять только в одну закладку, то все получается. А как организовать добавление сразу в 5 мест?) Пытаюсь сделать через цикл, но чето не выходит.
[Error] Unit1.pas(78): Incompatible types
С программированием в делфи плохо знаком =) Может чтото путаю с другими языками, но кажется запись правильная, не пойму в чем дело.
Приложение: Переключить в обычный режим- procedure TForm1.AddTextClick(Sender: TObject);
- var i: integer;
- Bookmark, Doc, R: OleVariant;
- begin
- Doc:= MsWord.ActiveDocument;
- for i:=1 to 5 do
- begin
- Bookmark:='n'+i;
- R:= Doc.Bookmarks.Item(Bookmark).Range;
- R.InsertAfter(Edit1.Text);
- end;
-
- end;
 |
Вопрос задал: rod13 (статус: Посетитель)
Вопрос отправлен: 20 апреля 2009, 12:20
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну, если ошибка в строке
Bookmark:='n'+i;
то замени её на
Bookmark:= 'n' + IntToStr(i);
или на
Bookmark:= Format('n%d', [i]);
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 20 апреля 2009, 13:02
Оценка за ответ: 5
Комментарий к оценке: спасибо большое, оказалось все так просто. =)
привык к автоматическому преобразованию типов и веб-прогр...
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 22 апреля 2009, 20:04; участников в обсуждении: 2.
|
Шичко Игорь (статус: 9-ый класс), 20 апреля 2009, 12:59 [#1]:
Несовпадение типов
Bookmark:='n'+i; // i - integer, 'n' -String
Думаю надо:
Bookmark:='n'+ IntToStr(i);
|
|
МиГрАф (статус: 1-ый класс), 22 апреля 2009, 20:04 [#2]:
Попробуйте так:
Из закладки System установите на форму DDE1 : TDdeClientConv.
Напишите внутреннюю процедуру:
procedure TForm1.SaveNak(S,P:string);
var T Char;
begin
T:=PChar('[EditBookmark.Name = "'+P+'", .Goto][Insert "'+S+'"]');
if not DDE1.ExecuteMacro(T, False)
then ShowMessage('Нет передачи данных');
end;
S - передаваемая строка;
P - имя метки в Word
procedure TForm1.KeyClick(Sender:Object);
const
P:array [1..n] of string=('P1','P2',.......)// массив меток в Word
var i , N : integer;
Tv : PChar;
begin
DDE1.ServiceApplication:=Edit1.Text; // в Edit1.Text содержится весь путь к WINWORD.EXE
DDE1.OpenLink;
Tv:=PChar('[FileOpen "'+FileName+'"][StartOfDocument]');//полное имя файла куда нужно внести текст
DDE1.ExecuteMacro(Tv, False);
For i := 1 to N do SaveNak(Text,P[i]);// Text - передаваемый текст
end;
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|