Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.178.133] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте, уважаемые форумчане! Подскажите пожалуйста как подчеркнуть слово или фразу выведенную в OpenOffice из Delphi7. Просьба большая показать на примерах.
|
Сообщ.
#2
,
|
|
|
Покажи как ты выводишь слово или фразу из дельфи в опенофис. И я тебе подскажу.
|
Сообщ.
#3
,
|
|
|
GonarhНу например вот так: OW.ReplaceAll('#mesto1&','пример фразы',[orpWholeWords]), это все делается в шаблоне.
|
Сообщ.
#4
,
|
|
|
В общем каков ответ на вопрос, таков и результат.
var VariantArray:Variant; MyStruct:Variant; begin VariantArray:=VarArrayCreate([0, 2], varVariant); VariantArray[0] := OW.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); VariantArray[0].Name := 'Underline.LineStyle'; VariantArray[0].Value := 1; VariantArray[1] := OW.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); VariantArray[1].Name := 'Underline.HasColor'; VariantArray[1].Value := False; VariantArray[2] := OW.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); VariantArray[2].Name := 'Underline.Color'; VariantArray[2].Value := -1; MyStruct := OW.CreateInstance('com.sun.star.frame.DispatchHelper'); MyStruct.ExecuteDispatch(FDocument.getCurrentController.getFrame, '.uno:Underline', '', 0, VariantArray); MyStruct := UnAssigned; VariantArray:=UnAssigned; end; Добавлено Но если шаблон, то я бы не парился, и сделал форматирование в шаблоне. |
Сообщ.
#5
,
|
|
|
GonarhИзвините, сразу не ответил. Во первых не понял совсем, о каком форматировании в шаблоне идет речь. А вообще то я привел малюсенький кусочек из того, что необходимо сделать и именно для OpenOffice, для Worda уже давно сделано и прекрасно работает. А теперь надо тоже самое для OpenOffice: в базе данных почти в 90 полях есть признаки, будем говорить какого либо анкетирования, необходимо проверить каждый признак и если он грубо равен 1, то слово или фразу за которое отвечает данный признак надо вывести в документ и его подчеркнуть, если же он равен 0, то вывести надо, но не подчеркивать, вот и все. В Worde, это нескольео строчек кода, непосредственно само условие и три строчки непосредственного поиска и замены и подчеркивания, а во втором случае тоже поиска и замены без подчеркивания. В OpenOfice это целый геморрой. Вставил Вашу процедуру в программку, ругается компилятор на Bridge_GetStruct.
Мне кто-то прислал следующую процедуру, очень похожую на вашу, но она не подчеркивает: procedure TOOWriter.ooUnderline(flag:Integer); var oDispatcher,oArgs:variant; CoreReflection,propertyValue0, propertyValue1,propertyValue2:variant; oFrame:variant; begin oFrame:=CreateOleObject('com.sun.star.ServiceManager'); oDispatcher:=oFrame.createInstance('com.sun.star.frame.DispatchHelper'); CoreReflection:=oFrame.createInstance('com.sun.star.reflection.CoreReflection'); CoreReflection.forName('com.sun.star.beans.PropertyValue').createObject(propertyValue0); CoreReflection.forName('com.sun.star.beans.PropertyValue').createObject(propertyValue1); CoreReflection.forName('com.sun.star.beans.PropertyValue').createObject(propertyValue2); oArgs:=VarArrayCreate([0,2],varVariant); propertyValue0.Name:='Underline.Underline'; propertyValue0.Value:=flag; oArgs[0]:=propertyValue0; propertyValue1.Name:='Underline.HasColor'; propertyValue1.Value:=False; oArgs[1]:=propertyValue1; propertyValue2.Name:='Underline.Color'; propertyValue2.Value:=-1; oArgs[2]:=propertyValue2; oFrame:=FDocument.getCurrentController.getFrame; oDispatcher.executeDispatch(oFrame,'.uno:Underline','',0,oArgs); end; Не знаю как это сделать в отдельном окошке |