特地给OLE 专业户送分来了!180分哦

castlooo 2008-01-03 12:51:03

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmMain *fmMain;
//---------------------------------------------------------------------------
__fastcall TfmMain::TfmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
Variant cWordApp=Unassigned();
Variant cWordDocuments=Unassigned();
Variant cWordActiveDocument=Unassigned();
Variant cWordDocument=Unassigned();

//--------------------------------------------------------------------
void __fastcall TfmMain::Button1Click(TObject *Sender)
{
AnsiString strDir=Trim(WideString("C:\\words"));
TSearchRec sr;
int iAttributes = faAnyFile;
int i=0;
if (FindFirst(strDir+ "\\*.doc",iAttributes,sr)==0)
{
do
{
ListBox1->Items->Add(sr.Name);
i=i+1;
}
while(FindNext(sr)==0);
FindClose(sr);
}
cWordApp = Variant::CreateObject("Word.Application");
cWordDocuments = cWordApp.OlePropertyGet("Documents");
}
//--------------------------------------------------------------------
void __fastcall TfmMain::SetTopWord(const AnsiString paFileName)
{ //置顶函数 麻烦帮我看看,我搞了几天了 愣是没有弄出来
Variant oWindows;
try
{
if ( cWordApp.IsNull()) return;
cWordDocuments = cWordApp.OlePropertyGet("Documents");
if (!cWordDocuments.IsNull())
{
Variant oActDoc =cWordDocuments.OleFunction("Document","111.doc");
oActDoc.OleProcedure("Activate");
}
}
catch(Exception &E)
{

}
}
//---------------------------------------------------------------------------
bool __fastcall TfmMain::OpenWord(const AnsiString paFileName)
{
try
{
if(cWordApp.IsNull())
cWordApp = Variant::CreateObject("Word.Application");
if (cWordDocuments.IsNull())
cWordDocuments = cWordApp.OlePropertyGet("Documents");
if (paFileName.Length() > 0 && FileExists(paFileName))
{
cWordDocuments.OleProcedure("Open", WideString(paFileName));
cWordApp.OlePropertySet("Visible", false);
cWordApp.OlePropertySet("Visible", true);
}
return true;
}
catch(Exception &E)
{
return false;
}
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::ListBox1DblClick(TObject *Sender)
{
//如何判断是否打开了该word文档,偶搞不定啊 救命啊

//............
//如果已经打开了该word文档 如何置顶 给改一下SetTopWord方法吧
//...................


//如果没有打开 那么打开该word文档

for (int i = 0; i <ListBox1->Items->Count; i++)
{
if (ListBox1->Selected[i])
{
AnsiString aWord = Trim(ListBox1->Items->Strings[i]);

aWord="c:\\words\\"+aWord;

if (OpenWord(aWord)==true)
{
}
else
{
ShowMessage(aWord+"打开失败!" );
}
}
}
}
//---------------------------------------------------------------------------

word文档的路径 写死了 放到C:\words下

也可以回答到这个帖子上,180分 散喽!http://topic.csdn.net/u/20071228/18/a9d81328-c2cb-4e09-b420-8fec4adca353.html
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Waiting4you 2008-01-03
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmMain *fmMain;
//---------------------------------------------------------------------------
Variant cWordApp=Unassigned();
Variant cWordDocuments=Unassigned();
Variant cWordActiveDocument=Unassigned();
Variant cWordDocument=Unassigned();

__fastcall TfmMain::TfmMain(TComponent* Owner)
: TForm(Owner)
{
cWordApp = Variant::CreateObject("Word.Application");
cWordDocuments = cWordApp.OlePropertyGet("Documents");
}
//---------------------------------------------------------------------------
void TfmMain::ClearListBox() //清空ListBox时记得delete 对应的Variant
{
for (int i = 0; i <ListBox1->Items->Count; i++)
{
delete (Variant*)ListBox1->Items->Objects[i];
}
ListBox1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
ClearListBox();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::Button1Click(TObject *Sender)
{
ClearListBox();

AnsiString strDir="C:\\words";
TSearchRec sr;
int iAttributes = faAnyFile;
if (FindFirst(strDir+ "\\*.doc",iAttributes,sr)==0)
{
do
{
Variant *pVariant = new Variant; // 对应一个Variant
ListBox1->Items->AddObject(sr.Name,(TObject*)pVariant);
}
while(FindNext(sr)==0);
FindClose(sr);
}
}
//---------------------------------------------------------------------------
Variant __fastcall TfmMain::OpenWord(const AnsiString &paFileName)
{
Variant varDoc;
if (FileExists(paFileName))
{
try{
varDoc = cWordDocuments.OleFunction("Open", WideString(paFileName));
cWordApp.OlePropertySet("Visible", true);
}
catch(...){}
}
return varDoc;
}

void __fastcall TfmMain::ListBox1DblClick(TObject *Sender)
{
for (int i = 0; i <ListBox1->Items->Count; i++)
{
if (ListBox1->Selected[i])
{
AnsiString aWord = Trim(ListBox1->Items->Strings[i]);
aWord="c:\\words\\"+aWord;

//如何判断是否打开了该word文档
Variant *pVarDoc = (Variant*)ListBox1->Items->Objects[i];
//如果没打开
if(pVarDoc->IsEmpty()) *pVarDoc = OpenWord(aWord);
//置顶
if(!pVarDoc->IsEmpty()) pVarDoc->OleProcedure("Activate");
}
}
}
//---------------------------------------------------------------------------
castlooo 2008-01-03
  • 打赏
  • 举报
回复
这么多热心的人帮我顶唆
毛毛哥哥 已经帮俺解决了 俺要结帐了
guzhou1980 2008-01-03
  • 打赏
  • 举报
回复
up2
laowang2 2008-01-03
  • 打赏
  • 举报
回复
up

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧