文档的移动,保存和修改

public class ROG_Document
{
    Object                  obj;
    FormDataSource          FDS;

    Common                  common;

    QueryRun                qr;

    Str                     parmStr;
    Int                     hwnd;

    ROG_DocumentTable       documentTable;

    HRMApplicantTable       applicantTable;

    userid                  userid;

    ROG_Document            _documentPack;

    ROG_DocumentHelper      documentHelper;
}

Object dialog()
{
    FormRun dialogForm;
    Args                            args   =   new Args("ROG_SelectUserid");

   ;
    args.caller(_documentPack);
    dialogForm = classfactory.formRunClass(args);
    dialogForm.init();
    dialogForm.run();
    dialogForm.wait();
    return dialogForm;
}

object FDS(FormDataSource _fds = FDS)
{
    ;
    FDS = _fds;
    return FDS;
}

str getOnlyFileName(Str     _str)
{
    str     _name;
    int     i;
    int     position;
    boolean flg;
    ;
    if(_str)
    {
        if (strfind(_str,"\\",1,strlen(_str)))
        {
            do
            {

                i = strfind(_str,"\\",position,strlen(_str));
                _str = substr(_str,i,strlen(_str) - i);

            } while(i);

            return substr(_str,1,strlen(_str) - strfind(_str,".",1,strlen(_str)) - 1);
        }
        else
            return "";

    }
    else
        return "";
}

object obj(object _obj = obj)
{
    ;
    obj = _obj;
    return obj;
}

Common parmCommon(Common    _common = common)
{
    ;
    common = _common;
    return common;
}

ROG_Document parmDocument(ROG_Document  _ROG_Document = _documentPack)
{
;
    _documentPack = _ROG_Document;
    return _documentPack;
}

int parmhwnd(int    _hwnd = hwnd)
{
;
    hwnd    = _hwnd;
    return hwnd;

}

Str parmstr(Str _parmStr = parmStr)
{
    ;
    parmStr = _parmStr;
    return parmStr;
}

userid parmUserid(userid      _userid)
{
    ;

    userid  = _userid;
    return userid;

}

void run()
{
;
    documentTable = ROG_DocumentTable::find(common.TableId,common.RecId);
    if(common.TableId == tablenum(HRMApplicantTable))
    {
        applicantTable = common;
        this.RunHRMApplicantTable();
    }

}

void RunHRMApplicantTable()
{
;
    if(parmStr == "save")
    {
        this.saveDocument();
    }
    else if(parmStr == "saveas" )
    {
        this.saveAsDocument();
    }
    else if(parmStr == "open")
    {
        ROG_Document::openDocument(documentTable.FilePath);
    }
    else if(parmStr == "companyOpen")
    {
        ROG_Document::openDocument(documentTable.FilePathROG);
    }
    else if(parmStr == "companySave")
    {
        this.saveCompanyDocument();
    }
}

void saveAsDocument()
{
    Filename    onlyFilename;
    Filename    curFileExtension;
    Filename    toFileName;
;
    documentHelper   = new ROG_DocumentHelper();
    documentHelper.parmDocumentHelper(documentHelper);

    if(documentHelper.prompt())
    {
        info(documentHelper.parmUserid());

        this.parmUserid(documentHelper.parmUserid());
        if(userid)
        {
            info(userid);

            [onlyFilename,curFileExtension]  = Docu::splitFilename(documentTable.FilePath);

            toFileName = documentTable.completeFilename(onlyFilename,curFileExtension,userid);

            winAPI::copyFile(documentTable.FilePath,toFileName);
            winAPI::deleteFile(documentTable.FilePath);

            ttsbegin;
            documentTable.selectForUpdate(true);
            documentTable.FilePath  = toFileName;
            //documentTable.createdBy =
            documentTable.update();
            ttscommit;

        }
        else
        {
            info("@ROG101");
        }
    }

}

void saveAsDocumentbackup()
{

    FormRun                         form;
    Args                            a   =   new Args("FOG_SelectUserid");
    Filename    onlyFilename;
    Filename    curFileExtension;
    Filename    toFileName;
    ;
    a.caller(_documentPack);
    form    =   ClassFactory.formRunClass(a);
    form.init();
    form.run();
    form.wait();

    if(userid)
    {
        info(userid);

        [onlyFilename,curFileExtension]  = Docu::splitFilename(documentTable.FilePath);

        toFileName = documentTable.completeFilename(onlyFilename,curFileExtension,userid);

        winAPI::copyFile(documentTable.FilePath,toFileName);
        winAPI::deleteFile(documentTable.FilePath);

        ttsbegin;
        documentTable.selectForUpdate(true);
        documentTable.FilePath = toFileName;
        documentTable.update();
        ttscommit;
    }

}

void saveAsDocumentDialog()
{
    FormRun          _dialog;


    FormRun                         form;
    Args                            a   =   new Args("ROG_SelectUserid");
    Filename    onlyFilename;
    Filename    curFileExtension;
    Filename    toFileName;
    ;
    /*
    a.caller(_documentPack);
    form    =   ClassFactory.formRunClass(a);
    form.init();
    //form.run();
    //form.wait();

    _dialog = new dialog("ffd",_documentPack,"fds",formstr(ROG_SelectUserid));
    //dlf     = _dialog.addField(typeid(userid));
    //formstr(ROG_SelectUserid);
    */
    this.dialog();

    if(userid)
    {
        info(userid);

        [onlyFilename,curFileExtension]  = Docu::splitFilename(documentTable.FilePath);

        toFileName = documentTable.completeFilename(onlyFilename,curFileExtension,userid);

        winAPI::copyFile(documentTable.FilePath,toFileName);
        winAPI::deleteFile(documentTable.FilePath);

        ttsbegin;
        documentTable.selectForUpdate(true);
        documentTable.FilePath = toFileName;
        documentTable.update();
        ttscommit;
    }

}

void saveCompanyDocument()
{
    str             filename;
    FileNameFilter  filter;// = ['Image Files','*.jpg'];

    Bindata binData = new BinData();
    Filename    onlyFilename;
    Filename    curFileExtension;
    Filename    toFileName;
    ;

    filename = Winapi::getOpenFileName(hwnd,filter,'', "@SYS53008", '','');


    if ((filename) && (StrScan(filename,".doc",1,strlen(filename)) > 0))
    {
        //if (binData.loadFile(filename))
        {
            [onlyFilename,curFileExtension]  = Docu::splitFilename(filename);

            if (onlyFilename)
            {
                toFileName = documentTable.completeFilename(onlyFilename,curFileExtension);
                if(toFileName)
                {
                    if(filename == toFileName)
                    {
                        info("@HFM1587");
                    }
                    else
                    {
                        winapi::copyFile(filename, toFileName,true);
                        ttsbegin;
                        documentTable.selectForUpdate(true);
                        documentTable.FilePathROG = toFileName;
                        documentTable.update();
                        ttscommit;
                    }

                }
                else
                {
                    throw error("@ROG94");
                }
            }
        }
    }
}


void saveDocument()
{
     str             filename;
    FileNameFilter  filter;// = ['Image Files','*.jpg'];

    Bindata binData = new BinData();
    Filename    onlyFilename;
    Filename    curFileExtension;
    Filename    toFileName;
    ;

    filename = Winapi::getOpenFileName(hwnd,filter,'', "@SYS53008", '','');


    if ((filename) && (StrScan(filename,".doc",1,strlen(filename)) > 0))
    {
        //if (binData.loadFile(filename))
        {
            [onlyFilename,curFileExtension]  = Docu::splitFilename(filename);

            if (onlyFilename)
            {
                toFileName = documentTable.completeFilename(onlyFilename,curFileExtension);
                if(toFileName)
                {
                    if(filename == toFileName)
                    {
                        info("@HFM1587");
                    }
                    else
                    {
                        winapi::copyFile(filename, toFileName,true);
                        ttsbegin;
                        documentTable.selectForUpdate(true);
                        documentTable.FilePath = toFileName;
                        documentTable.update();
                        ttscommit;

                        ttsbegin;
                        applicantTable.selectForUpdate(true);
                        //info(useridStr.valueStr());
                        applicantTable.ROG_createBy = applicantTable.createdBy;
                        applicantTable.update();
                        ttscommit;

                    }

                }
                else
                {
                    throw error("@ROG94");
                }
            }
        }
    }


}


boolean setUserid(userid      _userid)
{
    ;
    if(_userid)
    {
        userid  = _userid;
        return true;
    }
    else
    {
        return false;
    }
}


static Str checkFolderChar(Str pFolderName)
{
    Str mReturn = "";
    Int mLoop;
    ;

    for (mLoop=1; mLoop<=StrLen(pFolderName); mLoop++)
    {
        if ((substr(pFolderName, mLoop, 1) != "\\")
        && (substr(pFolderName, mLoop, 1) != "/")
        && (substr(pFolderName, mLoop, 1) != ":")
        && (substr(pFolderName, mLoop, 1) != "*")
        && (substr(pFolderName, mLoop, 1) != "?")
        && (substr(pFolderName, mLoop, 1) != '"')
        && (substr(pFolderName, mLoop, 1) != "<")
        && (substr(pFolderName, mLoop, 1) != ">")
        && (substr(pFolderName, mLoop, 1) != "|"))
        {
            mReturn = mReturn + substr(pFolderName, mLoop, 1);
        }
    }

    return mReturn;
}


public static ROG_Document construct()
{
    return new ROG_Document();
}


static void openDocument(str filename)
{
    COM     wordApplication;
    COM     wordDocuments;
    COM     wordDocument;
    COM     wordRange;
    ;
    wordApplication = new COM("word.application");
    wordDocuments   = wordApplication.Documents();

    //wordDocument    = wordDocuments.add("F:\\Resume\\andyl\\Testdocdoc.doc");//add(filename);
    wordDocument    = wordDocuments.add(filename);
    wordApplication.visible(TRUE);
}



server static void main(Args args)
{
    ROG_Document   _document = ROG_Document::construct();
    ;
    //breakpoint;
    _document.obj(args.caller());
    _document.parmCommon(args.record());
    _document.FDS(_document.obj().dataSource());
    _document.parmstr(args.parm());

    _document.parmhwnd(_document.obj().hwnd());

    _document.parmDocument(_document);
    _document.run();

}

  

原文地址:https://www.cnblogs.com/dingkui/p/2599642.html