| 
| 
 | Вопрос # 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;
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |