Для Delphi. Функция CreateOleObject(TFW32.SERVER) запускает T-FLEX CAD. Все отлично запускается и работает. Вопрос такой. Каким образом программно запустить T-FLEX Viewer? Т.е. чтобы вместо T-FLEX CAD запускался Viewer. Спасибо за помощь.
Как вариант - чезез API... на основе использования технологии .NET. (См. подробнее Руководство по OpenAPI). И для работы Ваших API-приложений потребуется ключ защиты T-Flex Cad. Год назад в отделе была решена одна задача - связь БД ОАСУП с T-Flex Cad через ActiveX. Программа была написана на Delphi. Но по совету разработчиков T-Flex Cad в этом году решили переписать ее под .NET на С# 2005. Выполняемый файл копируется в папку T-FLEX Viewer. Вы создаете свою форму, подключаете к ней Control от T-Flex и используете функционал системы в своем приложении.
public partial class Form1 : Form { public Form1() { //Перед работой с API T-FLEX CAD необходимо //произвести правильную инициализацию. //Иначе не будут работать макросы, диалог переменных и //сохранение файлов. //В зависимости от параметров инициализации, будут или не будут //доступны функции изменения документов и сохранение документов //в файл. //За это отвечает параметр setup.ReadOnly. //Если setup.ReadOnly = false, то для работы программы требуется //лицензия на сам T-FLEX CAD (ключ аппаратной защиты)
"Как вариант через API". Это может и хороший вариант, но как его реализовать? Руководство по OpenAPI посмотрел, но там примеры для C# и C++. И нет информации, как произвести инициализацию модуля T-Flex для Delphi. Вопрос то незря такой задал. Дело в том, что даже когда подключаешь библиотеку TFW32.TLB, то в качестве сервера выступает сервер T-Flex CAD и все функции заточены под использование его в качестве сервера. А необходимо (как я уже спрашивал в вопросе) создать сервер T-FLEX Viewer. Как вариант, создать сервер T-Flex CAD, определить его параметры и с помощью каких либо функций передать их в T-FLEX Viewer, чтобы он выступал в качестве сервера приложения. И как это сделать?
Я использую вот такой вот модуль в access для просмотра в форме jpg рисунков. Чертежи конвертирую в jpg и в принципе нормально. Но хотелось бы так смотреть t-flex документы. Может кто подскажет как изменить модуль
Код
Attribute VB_Name = "mdl_Image"
Option Compare Database
Option Explicit
Private Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOWDEFAULT = 10
Private Const SW_SHOWNOACTIVATE = 4
Private Const SW_SHOWNORMAL = 1
'Открыть файл в родном приложении
Function StartOfFile(ByVal strNameFile As String) As Long
Dim intResult As Integer
Dim TypeFile As String
intResult = ShellExecute(Application.hWndAccessApp, "open", strNameFile, 0, 0, SW_SHOWNORMAL)
Select Case intResult
Case 31
'Незарегистрированный тип файла
Call Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " & strNameFile, vbNormalFocus)
Case 2
'Файл не найден
MsgBox "Файл не найден!", vbCritical, "admin"
End Select
StartOfFile = intResult
End Function
' Диалог открытия файла
Function fOpenFileDialog(strTitle As String, strFolder As String, strFilter As String) As String
On Error GoTo Err_
Dim strFile As String
WizHook.Key = 51488399
WizHook.GetFileName 0, "AppName", strTitle, "", strFile, strFolder, strFilter, 0, 0, 0, True
fOpenFileDialog = strFile
Exit Function
Err_:
Err.Clear
MsgBox Err.Description
End Function
Function funImageClick(ByVal ctlImage As Image)
If Nz(ctlImage.Picture, "") <> "" Then
Call StartOfFile(ctlImage.Picture)
End If
End Function
'удалить ссылку на текущий рисунок
Function funClearImage(ByVal ctlImage As Image, ByVal ctlTextBox As TextBox)
On Error Resume Next
ctlTextBox = ""
ctlImage.Picture = ""
End Function
'диалоговое окно выбора рисунка
Function funGetImage(ByVal ctlImage As Image, ByVal ctlTextBox As TextBox)
On Error GoTo Err_
Dim s As String, flsName As String
Dim strPathImage As String
strPathImage = CurrentProject.Path & "\image"
s = fOpenFileDialog("Выберите фотографию", strPathImage, "Точечный рисунок (*.jpg)|JPEG")
If s <> "" Then
flsName = Split(s, "\")(UBound(Split(s, "\")))
ctlTextBox = flsName
Call funImageCurrent(ctlImage, ctlTextBox)
End If
Exit Function
Err_:
Err.Clear
MsgBox Err.Description
ctlImage.Picture = ""
End Function
'отображение рисунка при текущей записи
Function funImageCurrent(ByVal ctlImage As Image, ByVal ctlTextBox As TextBox)
On Error GoTo Err_
Dim strPathImage As String
strPathImage = CurrentProject.Path & "\image\"
If IsNull(ctlTextBox) Or ctlTextBox = "" Then
ctlImage.Picture = ""
Else
If Dir(strPathImage & ctlTextBox) <> "" Then
ctlImage.Picture = strPathImage & ctlTextBox
Else
ctlImage.Picture = ""
End If
End If
Exit Function
Err_:
Err.Clear
MsgBox Err.Description
ctlImage.Picture = ""
End Function