Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];

Вниз

Передача параметра по ссылке   Найти похожие ветки 

 
AFROLOV   (2002-07-15 13:18) [0]

Вопрос такой как правильно передавать параметр по ссылке в макрос Word (Word 2000):
WordApplication: TWordApplication;
Function GetFormFieldAtPoint (var MSWord:TWordApplication;x:integer;y:integer;var SelStart:Cardinal):integer;
var
OV_x,OV_y,pvarPar:OleVariant;
begin
OV_x:=x;
OV_y:=y;
pvarPar:=SelStart;
result:=MSWord.Run("GetFormFieldAtPoint",OV_x,OV_y,pvarPar);
SelStart:=pvarPar;//почему то значение pvarPar не изменяется хотя внутри макроса ему присваивается нужное значение.
end;
сам макрос:

Function GetFormFieldAtPoint(ByVal x As Long, ByVal y As Long, ByRef SelSt As Long) As Long
Dim i As Long
Dim st As Long
On Error GoTo out
MsgBox Str(SelSt)
st = ActiveWindow.RangeFromPoint(x, y).Start
For i = 1 To ActiveDocument.FormFields.Count
If ((ActiveDocument.FormFields.Item(i).Range.Start <= st) And (ActiveDocument.FormFields(i).Range.End >= st)) Then
GetFormFieldAtPoint = i
SelSt = st
MsgBox Str(SelSt)
Exit Function
End If
Next i
out:

MsgBox Str("Fail")
GetFormFieldAtPoint = 0
End Function
если делать так
MSWord:Variant;
MSWord:=CreateOleObject(Word.Application);
и потом вызвать макрос то все работает.


 
Digitman   (2002-07-15 13:36) [1]

Что-то непонятно ...

Вот в этой строчке
result:=MSWord.Run("GetFormFieldAtPoint",OV_x,OV_y,pvarPar);

значение MSWord откуда взялось ?

Разве не в результате
MSWord:=CreateOleObject(Word.Application); ?

Если так, то как понимать несуразицу
"значение pvarPar не изменяется" и "все работает" ?



 
Fiend   (2002-07-15 13:42) [2]

То Digitman
Извините что не в тему.

А почему ты до сих пор не пьян????????????????????7


 
Digitman   (2002-07-15 13:51) [3]

>Fiend

С чего ты взял ? Уже лыка не вяжу))))
Посему у автора до сих пор ничего не работает, а ветка сейчас в "Потрепаться" поедет))))


 
AFROLOV   (2002-07-15 14:00) [4]

2 Digitman © (15.07.02 13:36)
Извеняюсь, если непонятно выразился.
Я рассматривал два пути работы с MSWord один - позднее связывание (MSWord:=CreateOleObject(..);) в этом случае параметры по ссылке удавалось передать без проблем, но скорость работы оставляют желать лучшего(по этой причине от него приходится отказаться), и второй через раннее связывание - скорости хорошие но вот с передачей параметров по ссылке пока возникают проблемы.


> Вот в этой строчке
> result:=MSWord.Run("GetFormFieldAtPoint",OV_x,OV_y,pvarPar);
>
> значение MSWord откуда взялось ?

Значение MSWord в нее передается как параметр

вызов проблемной ф-ии

num:=GetFormFieldAtPoint (WordApplication,x,y,SelectionStart);






 
AFROLOV   (2002-07-15 14:39) [5]

Неужели никто такого не делал?


 
Digitman   (2002-07-15 15:06) [6]

Сомневаюсь, что здесь играет роль тип связывания.

В конце-концов ведь можно сделать и так :

uses Word97, ...

var
MSWord: _Application; // ссылка на интерфейс

1.
MSWord := IDispatch(CreateOleObject("Word.Application")) as _Application;

2.
MSWord := CreateComObject(CLSID_Ворд-сервера)) as _Application;

оба способа в конечном итоге позволят реализовать ранее связывание (при этом, как видишь, способ 1 загрузки сервера тебе уже знаком как якобы работающий)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-95413
Loco
2002-07-16 12:44
2002.07.29
Закладки


14-95512
Fiend
2002-07-02 12:59
2002.07.29
Как вы думаете??? Такая вещь кому то нужна?


14-95542
Igorek
2002-07-03 11:42
2002.07.29
Виндовс98 рус. - глюки.


1-95331
Ich Hasse
2002-07-16 00:29
2002.07.29
Поиск пути


3-95206
nimble
2002-07-05 08:18
2002.07.29
Запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский