functionTWordConnection._Release: Integer;
begin
Result := 1;
end;
functionTWordConnection.QueryInterface( constIID: TGUID; outObj): HResult;
begin
Result := E_NOINTERFACE;
Pointer(Obj) := nil;
if(GetInterface(IID, Obj)) thenResult := S_OK;
if notSucceeded(Result) then
if(IsEqualIID(IID, DocumentEvents) orIsEqualIID(IID, ApplicationEvents)) then
if(GetInterface(IDispatch, Obj)) thenResult := S_OK;
end;
{ IDispatch Methods }
functionTWordConnection.GetIDsOfNames( constIID: TGUID; Names: Pointer; NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
begin
Result := E_NOTIMPL;
end;
functionTWordConnection.GetTypeInfo(Index, LocaleID: Integer; outTypeInfo): HResult;
begin
Pointer(TypeInfo) := nil;
Result := E_NOTIMPL;
end;
functionTWordConnection.GetTypeInfoCount( outCount: Integer): HResult;
begin
Count := 0;
Result := E_NOTIMPL;
end;
functionTWordConnection.Invoke(DispID: Integer; constIID: TGUID; LocaleID: Integer; Flags: Word; varParams; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
begin
//This is the entry point for Word event sinking
Result := S_OK;
caseDispID of
1: ; // Startup
2: ShowMessage('quit'); // Quit
3: ; // Document change
4: ; // New document
5: ; // Open document
6: ShowMessage('close'); // Close document
elseResult := E_INVALIDARG;
end;
end;
end.
Вы можете воспользоваться любым интерфейсом, предлагаемым сервером автоматизации Word. Все реализованные интерфейсы вы можете увидеть при загрузке MSWORD8.OLB в Delphi, данный файл представляет собой библиотеку типов Word 7. Для исполнения VB в Word вы можете использовать свойство WordBasic Application. Следующий пример демонстрирует оба метода:
implementation
uses ComObj;
{$R *.DFM}
varV: OleVariant;
procedureTForm1.Button1Click(Sender: TObject);
begin
V := CreateOleObject('Word.Application');
V.ShowMe;
V.WordBasic.FileNew;
V.WordBasic.Insert('тест');
V.Run('mymac');
V.WordBasic.FileSave;
end;
end.
Передача переменных отчета в ReportSmith III
…вы говорите можно передавать переменные? В документации только красивые схемы. Я пытаюсь передать две даты, но мне необходимо чтобы первую дату ввел пользователь, вторую я вычисляю в Delphi сам и передаю результат ReportSmith.
Вот кусор работающего у меня кода, передающий использующийся при выборе Timestamp. Я использую строковую переменную просто как способ проверить строку прежде, чем я ее добавлю в отчет. Если вы хотите, можете это убрать. Примечание: убедитесь в том, что переменная, которой вы передаете значение, написана верно. Переменные отчета Reportsmith ЧУСТВИТЕЛЬНЫ К РЕГИСТРУ.
VarS: String;
Begin
ExportReport.InitialValues.Clear;
S :='@SQLDate=<'''+FormatDateTime('mm/dd/yyyy hh:nn:ss',ATimeStamp)+'''>';
ExportReport.InitialValues.Add(S);
ExportReport.RUN;
End;
– Steve McWhirter
Как правильно работать с SQLAnywhere через BDE→ODBC→SAW?
Nomadicсоветует:
1. Необходимо поставить patch на ODBC-драйвер (доступен на www.sybase.com);
2. Достаточно флажка Keys in SQL Statistics в ODBC-администpатоpе, для того, чтобы исчезла необходимость ставить втоpичные индексы по ключевым полям;
3. Если Вы пользуетесь BDE 3.5, то обновите ее до версии 4.x, или замените idodbc.dll на тот, который идет в комплекте поставки BDE 3.0.
Пример ресурсной таблицы строк
Как мне создать ресурсную таблицу строк (Resource String Table), про которую упоминается в функции FmtLoadStr, но не сказано как создать эту таблицу, про это вообще нигде не сказано!
Создайте файл в приведенном ниже формате и обзовите его, скажем (подойдите к этому творчески), strings.rc:
STRINGTABLE LOADONCALL MOVEABLE DISCARDABLE
{
1, "UNPACK.INI"
2, "AcrobatClass"
3, "ACROEXCH.EXE"
4, "^.PDF"
5, "Extensions"
6, "ACROEXCH.EXE"
7, "PDF"
8, "AABSETUP.EXE"
9, "DelFiles-"
10, "INI-"
11, "UNPACK.INI"
12, "ACROSRCH.DLL"
13, "Regedit"
14, "ACROREAD.EXE"
15, "ACRO_LE.EXE"
}
Затем, с помощью компилятора ресурсов Borland (BRCC.EXE в вашем каталоге Delphi\Bin), скомпилируйте это в файл ресурсов:
Читать дальше