Страница 1 из 1
Как работать с OLE - в частности Formula One ?
Добавлено: 24 Март 2013, 11:50
Андрей
Прошу прощения за чайниковский вопрос

Хочется попробовать Formula One, до этого работал только со стандартным Ole Excel
А что для работы с Formula One нужно сделать ?
Поместить TTF16.ocx в рабочую папку ?
Что писать в ?ole{Prop:Create} = ?
Если возможно, то примерчик бы хоть элементарный с выводом в Excel через Formula One
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 25 Март 2013, 10:43
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# & ')'}='Текст' - запишет текст в указанную строку и колонку
Для начала вполне достаточно - готовишь бланк, грузишь, заполняешь, сохраняешь...
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 26 Март 2013, 8:43
Андрей
Спасибо !!!
Старт заработал, теперь интересно протестировать скорость вывода в F1, по сравнению с стандартным.
Почему то текст - ?Formula1{'NumberRC(4,2)'}='проба' -не выводится.... ?
И что писать, чтоб прямиком в Excele открылось, без промежуточного сохранения - это возможно ?
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 26 Март 2013, 10:07
Igor Vesnin
?Formula1{'NumberRC(4,2)'} - для чисел, ?Formula1{'TextRC(4,2)'} - для текста.
Без промежуточного сохранения не получится.
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 26 Март 2013, 10:09
Дед Пахом
Андрей писал(а):
Почему то текст - ?Formula1{'NumberRC(4,2)'}='проба' -не выводится.... ?
Может потому, что 'проба' не число?
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 26 Март 2013, 10:45
Андрей
Igor Vesnin писал(а):?Formula1{'NumberRC(4,2)'} - для чисел, ?Formula1{'TextRC(4,2)'} - для текста.
Виноватс, не заметил разницы
Igor Vesnin писал(а):Без промежуточного сохранения не получится.
Т.е. сохраняем, а потом через RUN ? или как-то по-другому ?
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 26 Март 2013, 11:15
Yufil
Если на время заполнения заблокировать обновление экрана
?Formula1{'Repaint'}='0' , кажется, но могу и ошибаться
и скрыть контрол, чтобы картинка не дёргалась
?Formula1{Prop:Hide}=True, скорость выше как минимум раз в пять - мерил.
Собственно, пока Ёксель запускался, вывод в F1 уже заканчивался.
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 26 Март 2013, 11:21
Igor Vesnin
Андрей писал(а):
Т.е. сохраняем, а потом через RUN ? или как-то по-другому ?
Смотря что Вам нужно.
1. Можно просто открыть OLE FormulaOne, в этом случае наличие Excel у юзера не обязательно.
2. Можно сохранить, запустить ttf1.exe через RUN, в этом случае наличие Excel у юзера не обязательно.
3. Можно сохранить, запустить Excel через RUN.
4. Можно сохранить, открыть через OLE Excel.
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 26 Март 2013, 11:34
Igor Vesnin
Yufil писал(а):Если на время заполнения заблокировать обновление экрана
?Formula1{'Repaint'}='0' , кажется, но могу и ошибаться
и скрыть контрол, чтобы картинка не дёргалась
?Formula1{Prop:Hide}=True, скорость выше как минимум раз в пять - мерил.
Собственно, пока Ёксель запускался, вывод в F1 уже заканчивался.
Для ускорения можно еще отключить расчет формул
?Formula1{'AutoRecalc'}=0
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 15 Июнь 2013, 10:39
Андрей
Решил дальше изучать сей продукт, но что-то с синтаксисом не могу разобраться, помогите 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)'} - не работает
что не так ?
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 18 Июнь 2013, 0:22
Yufil
Попробуй 'FilePageSetupDlg()' и 'FilePrint(1)'
Чтобы получить описание методов, надо найти прогу OleView из Ms Visual Studio.
Запускаешь, тыкаешь кнопку с красными лапами и выбираешь OCX, потом можно сохранить описание в IDL-файле.
Для некоторых методов надо предоставить объект, это, хотя и коряво, описано в Clarion Help, раздел Ole Container Properties ( в конце раздела)
К сожалению, давно не юзал

Re: Как работать с OLE - в частности Formula One ?
Добавлено: 18 Июнь 2013, 2:03
Igor Vesnin
Андрей писал(а):
Пытаюсь на печать вывести:
?Formula1{'FilePageSetupDlgEx'} или ?Formula1{'FilePrint TRUE'} - не работает
?Formula1{'FilePrintEx(1,1)'}
Андрей писал(а):
и даже ?Formula1{'SheetSelected(2)'} - не работает
?Formula1{'Sheet'}=2
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 20 Июнь 2013, 1:43
Андрей
однако.... не совсем прозрачно...
а вот например в доке описан метод SaveFileDlgEx
Dim pFileInfo As New F1FileSpec
pFileInfo.Name = F1Book1.Title
pFileInfo.Type = F1FileHTML
F1Book1.SaveFileDlgEx "Save As HTML", pFileInfo
его как реализовать ?
Re: Как работать с OLE - в частности Formula One ?
Добавлено: 20 Июнь 2013, 3:53
Igor Vesnin
SaveFileDlgEx не пользовался.
Использовал клашин FILEDIALOG и от F1 WriteEx (для записи) и ReadEx (для открытия)