Classe responsável por realizar a integração para a criação de documentos Microsoft Office Project (extensão .mpp).


Métodos:


New

Sintaxe
MSProject():New( ) →

Descrição
Cria uma instância da classe MsProject() e inicializa o processo de manipulação do arquivo

Destroy

Sintaxe
MSProject():Destroy( ) →

Descrição
Finaliza o processo de manipulação do documento e destrói o objeto responsável pela construção para liberar a memória

BaseCalendarReset

Sintaxe
MSProject():BaseCalendarReset( cName ) →

Descrição
Finaliza o processo de manipulação do documento e destrói o objeto responsável pela construção para liberar a memória

Parâmetros

NomeTipoDescriçãoObrigatório
cName CaracterNome do calendário que terá as propriedade retornadas aos valores padrõesX

BCalendarCreate

Sintaxe
MSProject():BCalendarCreate( cName , cFrom ) →

Descrição
Cria um calendário base para uso no projeto

Parâmetros

NomeTipoDescriçãoObrigatório
cName CaracterNome do calendário a ser criadoX
cFrom CaracterNome do calendário que será copiado

BCalendarDelete

Sintaxe
MSProject():BCalendarCreate( cName ) →

Descrição
Exclui um calendário base

Parâmetros

NomeTipoDescriçãoObrigatório
cNameCaracterNome do calendário que será excluídoX

BCalendarEditDays

Sintaxe
MSProject():BCalendarEditDays( cName, dStartDate, dEndDate, nWeekDay, lWorking, cFrom1, cTo1, cFrom2, cTo2, cFrom3, cTo3, lDefault, cFrom4, cTo4, cFrom5, cTo5 ) →

Descrição
Altera as informações de dia trabalhado e horário de um ou mais dias no calendário base

Parâmetros

NomeTipoDescriçãoObrigatório
cNameCaracterNome do calendário que sofrerá as alteraçõesX
dStartDateDataData inicial para processar a alteração
dEndDateDataData final para processar a alteração
nWeekDayNúmericoIndica o dia da semana que sofrerá alteração. Este parâmetro é ignorado quando são enviados dStartDate ou dEndDate. Para mais informações, clique aqui
lWorkingLógicoVerdadeiro se os dias informados são dias trabalhados
cFrom1CaracterHora de início do primeiro turno
cTo1CaracterHora final do primeiro turno
cFrom2CaracterHora de início do segundo turno
cTo2CaracterHora final do segundo turno
cFrom3CaracterHora de início do terceiro turno
cTo3CaracterHora final do terceiro turno
lDefaultLógicoIndica se tem que voltar os horários dos dias informados para o valor padrão. Caso lWorking seja definido este parâmetro é ignorado
cFrom4CaracterHora de início do quarto turno
cTo4CaracterHora final do quarto turno
cFrom5CaracterHora de início do quinto turno
cTo5 CaracterHora final do quinto turno

BCalendarRename

Sintaxe
MSProject():BCalendarRename( cFromName , cToName ) →

Descrição
Renomeia um calendário base

Parâmetros

NomeTipoDescriçãoObrigatório
cFromName CaracterNome original do calendário baseX
cToName CaracterNovo nome para o calendário baseX

CalculateAll

Sintaxe
MSProject():CalculateAll( ) →

Descrição
Calcula as informações de todos os projetos abertos

FileClose

Sintaxe
MSProject():FileClose( nSave, lNoAuto ) →

Descrição
Fecha o projeto ativo

Parâmetros

NomeTipoDescriçãoObrigatório
nSave
NuméricoDetermina se deve fechar o projeto realizando a gravação do conteúdoX
lNoAuto LógicoVerdadeiro caso queira que o evento de fechamento não seja disparado para macros

FileCloseAll

Sintaxe
MSProject():FileCloseAll( nSave ) →

Descrição
Fecha todos os projetos abertos

Parâmetros

NomeTipoDescriçãoObrigatório
nSaveNuméricoDetermina se deve fechar o projeto realizando a gravação do conteúdo

FileNew

Sintaxe
MSProject():FileNew( lSummaryInfo, cTemplate, lFileNewDialog, lFileNewWorkpane ) →

Descrição
Cria um novo projeto

Parâmetros

NomeTipoDescriçãoObrigatório
lSummaryInfoLógicoDefine se deve exibir a janela para preencher as informações do projeto (.T.). O valor padrão é lido das configurações de project
cTemplateCaracterCaminho para o arquivo de template a ser utilizado na criação do novo projeto
lFileNewDialogLógicoDetermina se deve exibir a janela para seleção do template a partir do qual será criado o novo projeto. Este parâmetro é ignorado quando é definido cTemplate é definido
lFileNewWorkpane LógicoIndica se deve abrir a janela de novo projeto (.T.) antes de criar o novo arquivo

FileOpen

Sintaxe
MSProject():FileOpen( cName, lReadOnly, nMerge, lTaskInformation, cTable, cSheet, lNoAuto, cUserID, cDatabasePassWord, cFormatID, cMap, nOpenPool, cPassword, cWriteResPassword, lIgnoreReadOnlyRecommended, cXMLName ) →

Descrição
Abre um projeto ou importa dados

Parâmetros

NomeTipoDescriçãoObrigatório
cNameCaracterNome do arquivo a ser abertoX
lReadOnlyLógicoDefine se precisa realizar a abertura como somente leitura
nMergeNuméricoIndica se deve realizar o merge do projeto ativo com o projeto a ser aberto 
lTaskInformationLógicoDefine o arquivo contém informações sobre tarefas (.T.), caso contrário serão consideradas informações de recursos (.F.). Quando o parâmetro cMap é informado este parâmetro é ignorado
cTableCaracterNome da tabela para inserir as informações de recurso ou tarefas quando o arquivo a ser aberto não foi salvo como projeto
cSheetCaracterNome da aba da planilha do Excel para ler quando o arquivo for uma planilha
lNoAutoLógicoVerdadeiro caso queira evitar o disparo do evento de abertura para a execução de macros
cUserIDCaracterIdentificação do usuário quando acessando arquivo de banco de dados. Se cName ou cFormatId não forem bancos de dados este parâmetro é ignorado
cDatabasePassWordCaracterSenha do usuário para acesso ao arquivo de banco de dados. Se cName ou cFormatId não forem bancos de dados este parâmetro é ignorado
cFormatIDCaracter

Indica qual o formato de arquivo está sendo aberto.
Por exemplo:
"MSProject.mpp.9" > Project file
"MSProject.mpt.9" > Project template
"MSProject.mpd" > Project database
"MSProject.XMLDOM" > XML file


cMapCaracterNome do mapa de importação quando importando dados
nOpenPoolNuméricoAção/estratégia de abertura a ser tomada quando abrindo arquivo que contenha subprojetos
cPasswordCaracterSenha a ser utilizada quando o arquivo tiver proteção por senha na abertura
cWriteResPasswordCaracterSenha a ser utilizada quando o arquivo tiver proteção de senha na escrita/alteração de conteúdo
lIgnoreReadOnlyRecommendedLógicoIndica para exibir de que o projeto deveria ser aberto como somente leitura quando foi salvo como recomendado somente leitura
cXMLName CaracterNome do arquivo xml a ser aberto caso o cFormatId seja informado como MSProject.XMLDOM. Quando este FormatId é informado é obrigatório o preenchimento deste parâmetro. Este parâmetro e o cName não podem ser informados ao mesmo tempo, quando um é informado o outro deve ser nulo

FilePrint

Sintaxe
MSProject():FilePrint( nFromPage, nToPage, lPageBreaks, lDraft, nCopies, dFromDate, dToDate, lOnePageWide, lPreview, lColor ) →

Descrição
Imprime a visão ativa no projeto

Parâmetros

NomeTipoDescriçãoObrigatório
nFromPage
NuméricoIndica a partir de qual página deverá imprimir
nToPageNuméricoIndica até qual página deverá imprimir
lPageBreaksLógicoIndica se deve usar as quebras manuais do Project 2003 quando imprimindo
lDraftLógicoIndica se deve imprimir a visão ativa no projeto em modo rascunho
nCopiesNuméricoDetermina o número de cópias para a imprimir
dFromDateDataDefine qual a data inicial que deverá ter o conteúdo impresso
dToDateDataDefine qual a data final que deverá ter o conteúdo impresso
lOnePageWideLógicoIndica se deve imprimir somente a colunas posicionadas a esquerda que cabem na página
lPreviewLógicoDefine se deve exibir preview da impressão ao invés de imprimir diretamente
lColor LógicoDefine se deve imprimir colorido (.T.) ou em preto e branco (.F.)

FileSave

Sintaxe
MSProject():FileSave( ) →

Descrição
Grava o projeto ativo

FileSaveAs

Sintaxe
MSProject():FileSaveAs( cName, cFormat, lBackup, lReadOnly, lTaskInformation, lFiltered, cTable, cUserID, cDatabasePassWord, cFormatID, cMap, cPassword, cWriteResPassword, lClearBaseline, lClearActuals, lClearResourceRates, lClearFixedCosts, cXMLName ) →

Descrição
Grava o projeto ativo sob um novo nome

Parâmetros

NomeTipoDescriçãoObrigatório
cNameCaracterNovo nome para o projeto ativoX
cFormatCaracter

Indica qual a extensão e tipo do projeto sendo salvo.
As opções são:
pjMPP > 0 > .mpp
pjCSV > 4 > .csv
Maiores informações, clique aqui


lBackupLógicoDefine se faz uma cópia de backup do projeto sendo salvo
lReadOnlyLógicoDetermina se deve exibir aviso recomendando a abertura do projeto posteriormente como somente leitura
lTaskInformationLógicoIndica se informações de tarefas estão sendo salvas em um formato que não seja do Project (.T.). Caso não seja definido é entendido que informações de recursos estão sendo salvas no arquivo
lFilteredLógicoDefine se deve considerar o filtro de tarefas e recursos na gravação do arquivo que não seja do formato do Project
cTableCaracterNome da tabela que contém os dados de recursos ou tarefas quando projeto salvo em um formato não Project. Se cMap for informado ou cName se referir a um banco de dados este parâmetro será ignorado
cUserIDCaracterIdentificação do usuário quando acessando arquivo de banco de dados. Se cName ou cFormatId não forem bancos de dados este parâmetro é ignorado
cDatabasePassWordCaracterSenha do usuário para acesso ao arquivo de banco de dados. Se cName ou cFormatId não forem bancos de dados este parâmetro é ignorado
cFormatIDCaracter

Indica qual o formato de arquivo está sendo aberto.
Por exemplo:
"MSProject.mpp.9" > Project file
"MSProject.mpt.9" > Project template
"MSProject.mpd" > Project database
"MSProject.XMLDOM" > XML file


cMapCaracterNome do mapa de importação quando importando dados
cPasswordCaracterSenha a ser utilizada quando o arquivo tiver proteção por senha na abertura
cWriteResPasswordCaracterSenha a ser utilizada quando o arquivo tiver proteção de senha na escrita/alteração de conteúdo
lClearBaselineLógicoDefine se deve limpar os valores base de custo, trabalho, início, fim, duração, etc quando gravando como template
lClearActualsLógicoDefine se deve limpar os valores de % de finalização, custo atual, etc quando gravando como template
lClearResourceRatesLógicoDefine se deve limpar tabela de taxas dos recursos quando salvando como template
lClearFixedCostsLógicoDefine se deve limpar os custos fixos de todas as tarefas quando salvando como template
cXMLName CaracterDetermina qual o nome do arquivo XML deverá ser gravado quando indicado o formato como “MSProject.XML”

GetCaption

Sintaxe
MSProject():GetCaption( ) → cCaption

Descrição
Captura o texto para exibição de título na janela da aplicação Project

Retorno
cCaption - Caracter - Título da janela da aplicação

GetHeight

Sintaxe
MSProject():GetHeight( ) → nHeight

Descrição
Captura a altura da janela da aplicação Project. O valor é em pontos e não em pixels

Retorno
nHeight - Numérico - Tamanho da janela

GetLeft

Sintaxe
MSProject():GetLeft( ) → nLeft

Descrição
Captura a altura da janela da aplicação Project. O valor é em pontos e não em pixels

Retorno
nLeft - Numérico - Valor da posição a esquerda considerando a distância para a tela

GetTop

Sintaxe
MSProject():GetTop( ) → nTop

Descrição
Captura a posição do topo da aplicação Project

Retorno
nTop - Numérico - Valor do posicionamento

GetVisible

Sintaxe
MSProject():GetVisible( ) → lVisible

Descrição
Recupera a definição para deixar o objeto ou não visível

Retorno
lVisible - Lógico - Indica se a aplicação está visível (.T.) ou não (.F.)

GetWidth

Sintaxe
MSProject():GetWidth( ) → nWidth

Descrição
Captura a largura da janela da aplicação Project. Valor em pontos e não pixels

Retorno
nWidth - Numérico - Largura da janela

LinkTasksEdit

Sintaxe
MSProject():LinkTasksEdit( nFrom, nTo, lDelete, nType, nLag, cPredecessorProjectName, cSuccessorProjectName ) →

Descrição
Edita os links de dependências entre as tarefas

Parâmetros

NomeTipoDescriçãoObrigatório
nFromNuméricoNúmero de identificação da tarefa predecessoraX
nToNuméricoNúmero de identificação da tarefa sucessoraX
lDeleteLógicoDefine se o Project deve excluir o link
nTypeNuméricoIndica o tipo de relação entre as tarefas. Pode variar entre “Final a Final”, “Final a Início”, etc. Para visualizar a lista disponível, consulte aqui
nLagNuméricoValor de duração entre o link das tarefas em unidade padrão do projeto
cPredecessorProjectNameCaracterNome do projeto predecessor para vincular a tarefa, quando omitido o projeto atual é assumido
cSuccessorProjectName CaracterNome do projeto sucessor para vincular a tarefa, quando omitido o projeto atual é assumido

OutlineIndent

Sintaxe
MSProject():OutlineIndent( nLevels ) →

Descrição
Executa a identação da tarefa

Parâmetros

NomeTipoDescriçãoObrigatório
nLevelsNuméricoIndica em quantos níveis a identação deve acontecerX

OutlineOutdent

Sintaxe
MSProject():OutlineOutdent( nLevels ) →

Descrição
Executa a remoção da identação da tarefa

Parâmetros

NomeTipoDescriçãoObrigatório
nLevelsNuméricoIndica em quantos níveis a identação deve ser removidaX

Projects

Sintaxe
MSProject():Projects( xProjectsId ) →

Descrição
Captura o objeto da classe _Projects com o Id informado

Parâmetros

NomeTipoDescriçãoObrigatório
xProjectsId
Nome do projeto para ser iniciadoX


Retorno
oProjeto - Objeto - Objeto da classe _Projects

Quit

Sintaxe
MSProject():Quit( nSaveChanges ) →

Descrição
Sai e fecha o Project aberto

Parâmetros

NomeTipoDescriçãoObrigatório
nSaveChanges
NuméricoDetermina se deve gravar as alterações antes do fechamento da aplicação. As opções aceitas para este parâmetro podem ser visualizadas aqui.

RCalendarEditDays

Sintaxe
MSProject():RCalendarEditDays( cProjectName, cResourceName, dStartDate, dEndDate, nWeekday, lWorking, lDefault, cFrom1, cTo1, cFrom2, cTo2, cFrom3, cTo3, cFrom4, cTo4, cFrom5, cTo5 ) →

Descrição
Altera os dias em um calendário de recurso

Parâmetros

NomeTipoDescriçãoObrigatório
cProjectNameCaracterNome do projeto que contém o calendárioX
cResourceNameCaracterNome do recurso para alterarX
dStartDateDataData inicial para alteração
dEndDateDataData final para alteração
nWeekdayNuméricoDia da semana para alteração dos dias. Utilizar como referência para preenchimento deste parâmetro o conteúdo deste link
lWorkingLógicoDefine se deve considerar os dias de trabalho na alteração. Parâmetro não é avaliado quando lDefault é informado
lDefaultLógicoVerdadeiro quando o calendário do recurso utilizar os padrões do calendário base
cFrom1CaracterHora inicial do primeiro turno
cTo1CaracterHora final do primeiro turno
cFrom2CaracterHora inicial do segundo turno
cTo2CaracterHora final do segundo turno
cFrom3CaracterHora inicial do terceiro turno
cTo3CaracterHora final do terceiro turno
cFrom4CaracterHora inicial do quarto turno
cTo4CaracterHora final do quarto turno
cFrom5CaracterHora inicial do quinto turno
cTo5CaracterHora final do quinto turno

ResourceCalendarReset

Sintaxe
MSProject():ResourceCalendarReset( cProjectName, cResourceName, cBaseCalendar ) →

Descrição
Restaura os valores padrões de um calendário de recurso

Parâmetros

NomeTipoDescriçãoObrigatório
cProjectNameCaracterNome do projeto que contém o calendário do recurso para restaurarX
cResourceNameCaracterNome do recurso que terá o calendário restaurado ao valor padrãoX
cBaseCalendar CaracterNome do calendário base que deverá ser utilizado como padrão para restaurar o valor

SelectRow

Sintaxe
MSProject():SelectRow( nRow, nRowRelative, nHeight, lExtend, lAdd ) →

Descrição
Seleciona uma ou mais linhas

Parâmetros

NomeTipoDescriçãoObrigatório
nRowNuméricoO número da linha para selecionar
nRowRelativeNuméricoIndica se a posição é relativa a seleção de linha ativa (.T.) ou não (.F.)
nHeightNuméricoNúmero de linhas para adicionar a seleção a partir da célula atual
lExtendLógicoIndica se deve estender as novas linhas sendo selecionadas à seleção atual (.T.) ou não (.F.)
lAdd LógicoIndica se a nova seleção deve ser adicionada a seleção atual (.T.) ou não (.F.)

SetCaption

Sintaxe
MSProject():SetCaption( cCaption ) →

Descrição
Atribui o texto para exibição de título na janela da aplicação Project

Parâmetros

NomeTipoDescriçãoObrigatório
cCaption
CaracterTítulo da janela da aplicaçãoX

SetHeight

Sintaxe
MSProject():SetHeight( nHeight ) →

Descrição
Atribui a altura da janela da aplicação Project. O valor é atribuído em pontos, não em pixels

Parâmetros

NomeTipoDescriçãoObrigatório
nHeight
NuméricoTamanho da janelaX

SetLeft

Sintaxe
MSProject():SetLeft( nLeft ) →

Descrição
Atribui a posição a esquerda da aplicação Project. O valor é atribuído em pontos, não em pixels

Parâmetros

NomeTipoDescriçãoObrigatório
nLeftNuméricoValor da posição a esquerda considerando a distância para a telaX

SetTop

Sintaxe
MSProject():SetTop( nTop ) →

Descrição
Atribui a posição do topo da aplicação Project

Parâmetros

NomeTipoDescriçãoObrigatório
nTopNuméricoValor do posicionamentoX

SetVisible

Sintaxe
MSProject():SetVisible( lVisible ) →

Descrição
Atribui a definição para deixar o objeto visível ou não visível

Parâmetros

NomeTipoDescriçãoObrigatório
lVisibleLógicoIndica se a aplicação está visível (.T.) ou não (.F.)X

SetWidth

Sintaxe
MSProject():SetWidth( nValue1 ) → nWidth

Descrição
Atribui a largura da janela da aplicação Project. Valor em pontos, não em pixels

Parâmetros

NomeTipoDescriçãoObrigatório
nValue1Numérico
X


Retorno
nWidth - Numérico - Largura da janela

TableApply

Sintaxe
MSProject():TableApply( cName ) →

Descrição
Aplica uma tabela a visão ativa

Parâmetros

NomeTipoDescriçãoObrigatório
cNameCaracterNome da tabela a ser aplicadaX

TableEdit

Sintaxe
MSProject():TableEdit( cName, lTaskTable, lCreate, lOverwriteExisting, cNewName, cFieldName, cNewFieldName, cTitle, nWidth, nAlign, lShowInMenu, lLockFirstColumn, cDateFormat, nRowHeight, nColumnPosition, nAlignTitle, lHeaderAutoRowHeightAdjustment, lHeaderTextWrap ) →

Descrição
Cria, altera ou copia uma tabela

Parâmetros

NomeTipoDescriçãoObrigatório
cNameCaracterNome da tabela que será alterada, criada ou copiadaX
lTaskTableLógicoDetermina se a tabela contém informação sobre tarefas ou recursosX
lCreateLógicoIndica se o Project deve criar uma nova tabela. Caso cNewName não seja definido será criada uma nova tabela com o nome do parâmetro cName. Caso seja especificado o valor em cNewName será copiada a tabela cName e dado o nome do parâmetro cNewName
lOverwriteExistingLógico

Indica se deve sobrescrever com uma nova tabela


cNewNameCaracterIndica um novo nome para uma tabela existente (quando lCreate é .F.) ou nova tabela (quando lCreate é .T.)
cFieldNameCaracterNome do campo para alteração
cNewFieldNameCaracterNome do novo campo. O campo especificado neste parâmetro irá substituir o campo especificado em cFieldName
cTitleCaracterTítulo para o campo especificado no parâmetro cFieldName
nWidthNuméricoLargura para o campo especificado em cFieldName
nAlignNuméricoIndica qual a forma de alinhamento do conteúdo no campo. Para informações sobre o conteúdo neste campo visualizar este link.
lShowInMenuLógicoDetermina se o nome da tabela deve aparecer no menu de tabelas
lLockFirstColumnLógicoDefine se o Project deve bloquear e prevenir alterações na primeira coluna da tabela
cDateFormatCaracter

Define o formato de data que deve ser utilizado na tabela. Por exemplo:
pjDateDefault > usa o padrão definido no Project
pjDate_mm_dd_yy_hh_mmAM > 9/30/02 12:33 PM
pjDate_mm_dd_yy > 9/30/02
pjDate_mm_dd_yyyy > 9/30/2002
Detalhes para o preenchimento deste parâmetro, consultar aqui


nRowHeightNuméricoDefine a altura da coluna na tabela
nColumnPositionNuméricoNúmero da coluna para alteração. Colunas são numeradas da esquerda para a direita iniciando em 0, caso deseje inserir por último informe -1 (que é o valor padrão). A primeira coluna não é modificada quando o parâmetro lLockFirstColumn foi definido para a tabela 
nAlignTitleNuméricoIndica como deve ser o alinhamento do título. Consulte as opções aqui
lHeaderAutoRowHeightAdjustmentLógicoIndica se deve auto ajustar a altura da linha da tabela
lHeaderTextWrapLógicoIndica se o Project deve quebrar o texto no header da tabela

ViewApply

Sintaxe
MSProject():ViewApply( cName, lSinglePane, lToggle ) →

Descrição
Define a view ativa na janela

Parâmetros

NomeTipoDescriçãoObrigatório
cNameCaracterNome da view a ser exibida na janela ativaX
lSinglePaneLógicoIndica se qualquer divisão deve ser removida e a janela ativa exibirá um painel único da view
lToggle LógicoIndica se a janela ativa deve trocar de um painel para dois painéis e vice-versa. Este parâmetro é ignorado quando lSinglePane é informado



Exemplo:

#include 'protheus.ch'
#include 'mproject.ch'

function u_PjSample()

    If ! ApOleClient( 'MsProject' )
        MsgStop( 'MsProject nao instalado' )
        Return
    EndIf

    ConOut( '... PjSample ...' )
    
    oProject := MsProject():New()
    ConOut( 'New()')
    
    If ( ! oProject:GetVisible() )
        ConOut( 'GetVisible()')
        oProject:SetVisible(.T.)    
        ConOut( 'SetVisible()')
    EndIf
    
    // MsgSTop('Inicio')
    oProject:Top    := 0
    oProject:Left   := 200
    oProject:Height := 555
    oProject:Width  := 570
    
    oProject:FileNew()
    
    x := oProject:Left
    
    oProject:SetLeft(x-100)
    
    oProject:TableEdit( 'TableView1', .T., .T., .T., , 'ID', , '', 6, PJCENTER, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    oProject:TableEdit( 'TableView1', .T., , .T., , , 'Name', 'Task Name', 24, PJLEFT, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    oProject:TableEdit( 'TableView1', .T., , .T., , , 'Text1', 'Our Field 1', 15, PJLEFT, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    oProject:TableEdit( 'TableView1', .T., , .T., , , 'Text2', 'Our Field 2', 15, PJLEFT, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    oProject:TableEdit( 'TableView1', .T., , .T., , , 'Text2', 'Our Field 3', 15, PJLEFT, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    oProject:TableEdit( 'TableView1', .T., , .T., , , 'Duration', , 9, PJRIGHT, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    oProject:TableEdit( 'TableView1', .T., , .T., , , 'Start', , 12, PJRIGHT, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    oProject:TableEdit( 'TableView1', .T., , .T., , , 'Finish', , 12, PJRIGHT, .T., .T., PJDATEDEFAULT, 1, ,PJCENTER )
    
    oProject:TableApply( 'TableView1' )

    x := oProject:Projects:Count
    // MsgStop('Total de projetos : ' + Str(x))
    
    oProject:Projects(1):Activate()
    oProject:Projects(1):Tasks:Add( 'Task 01' )
    oProject:Projects(1):Tasks(1):SetDuration( 1 )
    oProject:Projects(1):Tasks:Add( 'Task 02' )
    oProject:Projects(1):Tasks(2):SetDuration( 3 )

    oProject:Projects(1):Resources:Add( 'Resource 01' )
    oProject:Projects(1):Resources:Add( 'Resource 02' )
    oProject:Projects(1):Resources:Add( 'Resource 03' )
    oProject:Projects(1):Resources:Add( 'Resource 04' )
    oProject:Projects(1):Resources:Add( 'Resource 05' )
    
    x := oProject:Projects(1):Tasks:Count
    y := oProject:Projects(1):Resources:Count
    
    oProject:FileSaveAs('pjsample')

    oProject:Quit( 0 )
    oProject:Destroy()
    
Return