sábado, 27 de outubro de 2012

wxAutomationObject – Parte 4 – Exibir ou esconder o Excel

Agora começaremos a trabalhar com propriedades, na classe wxAutomationObject usamos dois métodos para isto, um chamado GetPropert para pegarmos o valor de uma propriedade e PutPropert para alterarmos uma propriedade, note que a partir daqui iremos utilizar com frequência wxVariants, então recomendo que vocês leiam a documentação da mesma.

Primeiro vamos verificar se o Excel está visível ou se está correndo em segundo plano.

Na classe wxAutomationExcel em public digitamos a declaração da função.

bool GetVisible();

no arquivo mexcel.cpp sua contrução.

bool wxAutomationExcel::GetVisible()
{
     if(this == NULL)
         return false;

     wxVariant m_show = this->GetProperty(wxT("Visible"));

     return m_show.GetBool();
}

No código acima, vemos o uso do método GetProperty, passamos para o mesmo o nome da propriedade que queremos pegar o valor e passamos esse para um wxVariant, veja que antes verifico se wxAutomationExcel é nulo, se o Excel estiver visível nossa função retornará verdadeiro, caso contrário, falso...

Agora, vamos alterar essa propriedade, escondendo ou exibindo a instância do Excel que estiver setada em nosso wxAutomationExcel.

Na classe wxAutomationExcel em public digitamos a declaração da função.

bool SetVisible(bool visible);

no arquivo mexcel.cpp sua contrução.

bool wxAutomationExcel::SetVisible(bool visible)
{
     if(this == NULL)
         return false;

    if(!this->PutProperty(wxT("Visible"), visible))
    {
        wxLogError(wxT("Excel não pode ser exibido"));
         return false;
    }

     return true;
}

Nessa função utilizamos o método PutProperty, esse método é utilizado para pegarmos alguma propriedade do objeto setado em nossa classe, passamos primeiro o nome da propriedade e depois o valor que queremos dar para ela, no caso da propriedade Visible passamos um valor booleano.

Vale lembrar que essa classe está trabalhando apenas com o Excel.Application, então todos os métodos e propriedades passados como parâmetros servem apenas para a aplicação em si.

Para testarmos as duas funções apresentadas nesse tutorial:

wxAutomationExcel m_excel;

if(!m_excel.GetExcelInstance())
     return;

//ou
//if(!m_excel.CreateExcelInstance())
//   return;

//Vejo se o Excel está visível...
if(m_excel.GetVisible())//...se sim...
     m_excel.SetVisible(false);//...escondo...
else//...se não...
     m_excel.SetVisible(true);//...exibo o mesmo...

No próximo tutorial iremos iniciar com Workbooks, até.

2 comentários:

Alex...70 disse...

Oi amigo parabens pelo seu blog. Me tira uma duvida por favor ?

É o seguinte : se eu fizer um programinha em WxWidgets no C/C++ , ele rodaria "nativamente" , ou seja, o arquivo ".exe" gerado seria o suficiente para rodar meu aplicativo ?

Ou seria necessário instalar algo nos computadores que fossem rodar o aplicativo ?

Seria preciso instalar nos clientes coisas como uma API, um plugin ou um framework ?

Agradeço qualquer ajuda.
Alex

Alex disse...

Alex, depende de como seu wxWidgets está compilado e como você linca ele ao seu projeto, se você estiver usando o wxWidgets como uma biblioteca estática apenas o *.exe é suficiente, se ele estiver sendo lincado como biblioteca dinâmica, você precisa distribuir as dll's do wxWidgets.

Postar um comentário