Как работать с OLE - в частности Formula One ?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Как работать с OLE - в частности Formula One ?

Сообщение Андрей »

Прошу прощения за чайниковский вопрос :oops:
Хочется попробовать Formula One, до этого работал только со стандартным Ole Excel
А что для работы с Formula One нужно сделать ?
Поместить TTF16.ocx в рабочую папку ?
Что писать в ?ole{Prop:Create} = ?
Если возможно, то примерчик бы хоть элементарный с выводом в Excel через Formula One
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Как работать с OLE - в частности Formula One ?

Сообщение Yufil »

Добрый день!

Давненько не брал в руки шашек, мож кто подробно напишет

1. TTF16.ocx должен быть зарегистрирован с правами администратора. Из Windows примерно так...
regsvr32 ttf16.ocx
или из Клариона
unlockthread
call('ttf16.ocx','DllRegisterServer')
lockthread

Ещё надо поместить ttf1.exe. Удобно - дважды кликнул по таблице правой кнопкой - и редактор под рукой...

2. На экране размещаешь OCX объект Formula One. Во время работы должна появиться электронная таблица на экране.
Если не хочется видеть - можно загнать за край экрана или скрыть...

3. Дальше читать документацию. Но для начала (пусть имя контрола ?Formula1)
?Formula1{'ReadEx("FileName.xls")'} читает файл
?Formula1{'Write("FileName.xls",11)'} пишет файл

?Formula1{'NumberRC(' & Row# & ',' & Col# & ')'}='12,3' - запишет число в указанную строку и колонку (обратить внимание - разделитель запятая, а не точка!)
?Formula1{?EntryRC(' & Row# & ',' & Col# & ')'}='Текст' - запишет текст в указанную строку и колонку

Для начала вполне достаточно - готовишь бланк, грузишь, заполняешь, сохраняешь...
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Как работать с OLE - в частности Formula One ?

Сообщение Андрей »

Спасибо !!!
Старт заработал, теперь интересно протестировать скорость вывода в F1, по сравнению с стандартным.
Почему то текст - ?Formula1{'NumberRC(4,2)'}='проба' -не выводится.... ?
И что писать, чтоб прямиком в Excele открылось, без промежуточного сохранения - это возможно ?
Igor Vesnin
Посетитель
Сообщения: 49
Зарегистрирован: 30 Декабрь 2005, 0:06

Re: Как работать с OLE - в частности Formula One ?

Сообщение Igor Vesnin »

?Formula1{'NumberRC(4,2)'} - для чисел, ?Formula1{'TextRC(4,2)'} - для текста.
Без промежуточного сохранения не получится.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Как работать с OLE - в частности Formula One ?

Сообщение Дед Пахом »

Андрей писал(а): Почему то текст - ?Formula1{'NumberRC(4,2)'}='проба' -не выводится.... ?
Может потому, что 'проба' не число?
С уважением, ДП
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Как работать с OLE - в частности Formula One ?

Сообщение Андрей »

Igor Vesnin писал(а):?Formula1{'NumberRC(4,2)'} - для чисел, ?Formula1{'TextRC(4,2)'} - для текста.
Виноватс, не заметил разницы :oops:
Igor Vesnin писал(а):Без промежуточного сохранения не получится.
Т.е. сохраняем, а потом через RUN ? или как-то по-другому ?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Как работать с OLE - в частности Formula One ?

Сообщение Yufil »

Если на время заполнения заблокировать обновление экрана
?Formula1{'Repaint'}='0' , кажется, но могу и ошибаться
и скрыть контрол, чтобы картинка не дёргалась
?Formula1{Prop:Hide}=True, скорость выше как минимум раз в пять - мерил.
Собственно, пока Ёксель запускался, вывод в F1 уже заканчивался.
Igor Vesnin
Посетитель
Сообщения: 49
Зарегистрирован: 30 Декабрь 2005, 0:06

Re: Как работать с OLE - в частности Formula One ?

Сообщение Igor Vesnin »

Андрей писал(а): Т.е. сохраняем, а потом через RUN ? или как-то по-другому ?
Смотря что Вам нужно.
1. Можно просто открыть OLE FormulaOne, в этом случае наличие Excel у юзера не обязательно.
2. Можно сохранить, запустить ttf1.exe через RUN, в этом случае наличие Excel у юзера не обязательно.
3. Можно сохранить, запустить Excel через RUN.
4. Можно сохранить, открыть через OLE Excel.
Igor Vesnin
Посетитель
Сообщения: 49
Зарегистрирован: 30 Декабрь 2005, 0:06

Re: Как работать с OLE - в частности Formula One ?

Сообщение Igor Vesnin »

Yufil писал(а):Если на время заполнения заблокировать обновление экрана
?Formula1{'Repaint'}='0' , кажется, но могу и ошибаться
и скрыть контрол, чтобы картинка не дёргалась
?Formula1{Prop:Hide}=True, скорость выше как минимум раз в пять - мерил.
Собственно, пока Ёксель запускался, вывод в F1 уже заканчивался.
Для ускорения можно еще отключить расчет формул
?Formula1{'AutoRecalc'}=0
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Как работать с OLE - в частности Formula One ?

Сообщение Андрей »

Решил дальше изучать сей продукт, но что-то с синтаксисом не могу разобраться, помогите pls

Вот имеем:
?Formula1{'ReadEx("Test.vts")'} !читает файл
?Formula1{'NumberRC(2,2)'}='12,3' !- запишет число в указанную строку и колонку
?Formula1{'NumberRC(3,2)'}='120,5' !- запишет число в указанную строку и колонку
?Formula1{'TextRC(4,2)'}='проба' !- запишет число в указанную строку и колонку
работает

Пытаюсь на печать вывести:
?Formula1{'FilePageSetupDlgEx'} или ?Formula1{'FilePrint TRUE'} - не работает

и даже ?Formula1{'SheetSelected(2)'} - не работает

что не так ?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Как работать с OLE - в частности Formula One ?

Сообщение Yufil »

Попробуй 'FilePageSetupDlg()' и 'FilePrint(1)'
Чтобы получить описание методов, надо найти прогу OleView из Ms Visual Studio.
Запускаешь, тыкаешь кнопку с красными лапами и выбираешь OCX, потом можно сохранить описание в IDL-файле.

Для некоторых методов надо предоставить объект, это, хотя и коряво, описано в Clarion Help, раздел Ole Container Properties ( в конце раздела)
К сожалению, давно не юзал :(
Igor Vesnin
Посетитель
Сообщения: 49
Зарегистрирован: 30 Декабрь 2005, 0:06

Re: Как работать с OLE - в частности Formula One ?

Сообщение Igor Vesnin »

Андрей писал(а): Пытаюсь на печать вывести:
?Formula1{'FilePageSetupDlgEx'} или ?Formula1{'FilePrint TRUE'} - не работает
?Formula1{'FilePrintEx(1,1)'}
Андрей писал(а): и даже ?Formula1{'SheetSelected(2)'} - не работает
?Formula1{'Sheet'}=2
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Как работать с OLE - в частности Formula One ?

Сообщение Андрей »

однако.... не совсем прозрачно...

а вот например в доке описан метод SaveFileDlgEx

Dim pFileInfo As New F1FileSpec
pFileInfo.Name = F1Book1.Title
pFileInfo.Type = F1FileHTML
F1Book1.SaveFileDlgEx "Save As HTML", pFileInfo

его как реализовать ?
Igor Vesnin
Посетитель
Сообщения: 49
Зарегистрирован: 30 Декабрь 2005, 0:06

Re: Как работать с OLE - в частности Formula One ?

Сообщение Igor Vesnin »

SaveFileDlgEx не пользовался.
Использовал клашин FILEDIALOG и от F1 WriteEx (для записи) и ReadEx (для открытия)
Ответить