Compartilhar via


Demonstra Passo a passo: Vincular dados a controles em um painel de ações do Word

Este passo a passo demonstra a vinculação de dados a controles em um painel de ações no Word. Os controles demonstram uma relação mestre/detalhe entre tabelas em um banco de dados do SQL Server.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento para o Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Este passo a passo ilustra as seguintes tarefas:

  • Criando um painel de ações com controles do Windows Forms vinculados a dados.

  • Usando uma relação mestre/detalhe para exibir dados nos controles.

  • Mostrar o painel de ações quando o aplicativo for aberto.

Observação

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, confira Personalizar o IDE do Visual Studio.

Pré-requisitos

Você precisará dos seguintes componentes para concluir este passo a passo:

  • Uma edição do Visual Studio que inclui o Microsoft Office Developer Tools. Para obter mais informações, consulte Configurar um computador para desenvolver soluções do Office.

  • Word 2013 ou Word 2010 .

  • Acesso a um servidor com o banco de dados de exemplo Northwind SQL Server.

  • Permissões para ler e gravar no banco de dados do SQL Server.

Criar o projeto

A primeira etapa é criar um projeto de Documento do Word.

Criar um novo projeto

  1. Crie um projeto de documento do Word com o nome Painel de Ações do Word. No assistente, selecione Criar um novo documento.

    Para obter mais informações, consulte Como: Criar projetos do Office no Visual Studio.

    O Visual Studio abre o novo documento do Word no designer e adiciona o projeto My Word Actions Pane ao Gerenciador de Soluções.

Adicionar controles ao painel de ações

Para esta explicação passo a passo, você precisa de um controle de painel de ações que contém controles do Windows Forms vinculados a dados. Adicione uma fonte de dados ao projeto e arraste controles da janela Fontes de Dados para o controle do painel de ações.

Para adicionar um controle de painel de ações

  1. Selecione o projeto Painel de Ações do Meu Word no Gerenciador de Soluções.

  2. No menu Projeto , clique em Adicionar Novo Item.

  3. Na caixa de diálogo Adicionar Novo Item, selecione Controle do Painel de Ações, nomeie-o como ActionsControl e clique em Adicionar.

Para adicionar uma fonte de dados ao projeto

  1. Se a janela Fontes de Dados não estiver visível, exiba-a por, na barra de menus, escolher Exibir>Outras Fontes de Dados do Windows.>

    Observação

    Se Mostrar Fontes de Dados não estiver disponível, clique no documento do Word e verifique novamente.

  2. Clique em Adicionar Nova Fonte de Dados para iniciar o Assistente de Configuração de Fonte de Dados.

  3. Selecione Banco de Dados e clique em Avançar.

  4. Selecione uma conexão de dados com o banco de dados SQL Server de exemplo Northwind ou adicione uma nova conexão usando o botão Nova Conexão .

  5. Clique em Avançar.

  6. Desmarque a opção para salvar a conexão se ela estiver selecionada e clique em Avançar.

  7. Expanda o nó Tabelas na janela Objetos de banco de dados.

  8. Marque a caixa de seleção ao lado das tabelas Fornecedores e Produtos.

  9. Clique em Concluir.

    O assistente adiciona a tabela Fornecedores e a tabela Produtos à janela Fontes de Dados. Ele também adiciona um conjunto de dados tipado ao seu projeto que é visível no Gerenciador de Soluções.

Para adicionar controles do Windows Forms vinculados a dados a um controle do painel de ações

  1. Na janela Fontes de Dados, expanda a tabela Fornecedores.

  2. Clique na seta suspensa no nó Nome da Empresa e selecione ComboBox.

  3. Arraste CompanyName da janela Fontes de Dados para o controle do painel de ações.

    Um ComboBox controle é criado no controle do painel de ações. Ao mesmo tempo, um nomeado SuppliersBindingSource, um adaptador de tabela e um BindingSourceDataSet são adicionados ao projeto na bandeja do componente.

  4. Selecione SuppliersBindingNavigator na bandeja Componente e pressione Delete. Você não usará o neste passo a SuppliersBindingNavigator passo.

    Observação

    A exclusão do SuppliersBindingNavigator não remove todo o código que foi gerado para ele. Você pode remover esse código.

  5. Mova a caixa de combinação para que ela fique sob o rótulo e altere a propriedade Size para 171, 21.

  6. Na janela Fontes de Dados, expanda a tabela Produtos que é filha da tabela Fornecedores.

  7. Clique na seta suspensa no nó ProductName e selecione ListBox.

  8. Arraste ProductName para o controle do painel de ações.

    Um ListBox controle é criado no controle do painel de ações. Ao mesmo tempo, um adaptador nomeado ProductBindingSource e um BindingSource adaptador de tabela são adicionados ao projeto na bandeja do componente.

  9. Mova a caixa de listagem para que ela fique sob o rótulo e altere a propriedade Size para 171,95.

  10. Arraste um Button da Caixa de Ferramentas para o controle do painel de ações e coloque-o abaixo da caixa de listagem.

  11. Clique com o botão direito do mouse no , clique em Propriedades no Buttonmenu de atalho e altere as seguintes propriedades.

    Propriedade Valor
    Nome Inserção
    Texto Inserção
  12. Redimensione o controle de usuário para ajustar os controles.

Configurar a fonte de dados

Para configurar a fonte de dados, adicione código ao Load evento do controle do painel de ações para preencher o controle com dados do DataTable, e defina as DataSource propriedades e DataMember para cada controle.

Para carregar o controle com dados

  1. Load No manipulador de eventos da ActionsControl classe, adicione o código a seguir.

    private void ActionsControl_Load(object sender, EventArgs e)
    {
        this.suppliersTableAdapter.Fill(this.northwindDataSet.Suppliers);
        this.productsTableAdapter.Fill(this.northwindDataSet.Products);
    }
    
  2. No C#, você deve anexar o manipulador de eventos ao Load evento. Você pode colocar esse código no ActionsControl construtor, após a chamada para InitializeComponent. Para obter mais informações sobre como criar manipuladores de eventos, consulte Como: Criar manipuladores de eventos em projetos do Office.

    this.Load += new EventHandler(ActionsControl_Load);
    

Para definir propriedades de vinculação de dados dos controles

  1. Selecione o controle CompanyNameComboBox.

  2. Na janela Propriedades, clique no botão à direita da propriedade DataSource e selecione suppliersBindingSource.

  3. Clique no botão à direita da propriedade DisplayMember e selecione CompanyName.

  4. Expanda a propriedade DataBindings , clique no botão à direita da propriedade Text e selecione Nenhum.

  5. Selecione o controle ProductNameListBox.

  6. Na janela Propriedades, clique no botão à direita da propriedade DataSource e selecione productsBindingSource.

  7. Clique no botão à direita da propriedade DisplayMember e selecione ProductName.

  8. Expanda a propriedade DataBindings , clique no botão à direita da propriedade SelectedValue e selecione Nenhum.

Adicionar um método para inserir dados em uma tabela

A próxima tarefa é ler os dados dos controles acoplados e preencher uma tabela no documento do Word. Primeiro, crie um procedimento para formatar os títulos na tabela e, em seguida, adicione o AddData método para criar e formatar uma tabela do Word.

Para formatar os títulos da tabela

  1. ActionsControl Na classe, crie um método para formatar os títulos da tabela.

    static void SetHeadings(Microsoft.Office.Interop.Word.Cell tblCell, string text)
    {
        tblCell.Range.Text = text;
        tblCell.Range.Font.Bold = 1;
        tblCell.Range.ParagraphFormat.Alignment = 
            Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    }
    

Para criar a tabela

  1. ActionsControl Na classe, escreva um método que criará uma tabela se ainda não existir e adicione dados do painel de ações à tabela.

    private void AddData(System.Data.DataRow row, string companyName)
    {
        object missing = System.Type.Missing;
    
        // Create a table if it doesn't already exist.
        if (Globals.ThisDocument.Tables.Count == 0)
        {
            try
            {
                // Create a table.
                Microsoft.Office.Interop.Word.Table tbl = Globals.ThisDocument.Tables.Add
                    (Globals.ThisDocument.Application.Selection.Range, 1, 4, ref missing, ref missing);
    
                // Insert headings.
                SetHeadings(tbl.Cell(1, 1), "Company Name");
                SetHeadings(tbl.Cell(1, 2), "Product Name");
                SetHeadings(tbl.Cell(1, 3), "Quantity");
                SetHeadings(tbl.Cell(1, 4), "Unit Price");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problem creating Products table: " + ex.Message, 
                    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    
        // Add data from data row to the table.
        Microsoft.Office.Interop.Word.Selection selection = Globals.ThisDocument.Application.Selection;
    
        if (selection.Tables.Count > 0)
        {
            Microsoft.Office.Interop.Word.Row newRow = Globals.ThisDocument.Tables[1].Rows.Add(ref missing);
    
            newRow.Range.Font.Bold = 0;
    
            newRow.Range.ParagraphFormat.Alignment = 
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
    
            newRow.Cells[4].Range.ParagraphFormat.Alignment =
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
    
            newRow.Cells[1].Range.Text = companyName;
            newRow.Cells[2].Range.Text = row["ProductName"].ToString();
            newRow.Cells[3].Range.Text = row["QuantityPerUnit"].ToString();
            newRow.Cells[4].Range.Text = Math.Round(Convert.ToDouble(row["UnitPrice"])).ToString("#,##0.00");
        }
        else
        {
            MessageBox.Show("Cursor must be within a table.", 
                "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    

Para inserir texto em uma tabela do Word

  1. Adicione o seguinte código ao Click manipulador de eventos do botão Inserir .

    private void Insert_Click(object sender, System.EventArgs e)
    {
        System.Data.DataTable tbl = northwindDataSet.Products;
        System.Data.DataRow[] rows;
    
        // Check if a product is selected.
        if (this.productNameListBox.SelectedIndex >= 0)
        {
            System.Data.DataRowView productRow = (System.Data.DataRowView)this.productNameListBox.SelectedItem;
    
            string product = productRow.Row["ProductName"].ToString();
            string company = this.companyNameComboBox.Text;
    
            // Return the data row from the selected product.
            rows = tbl.Select("[ProductName] = '" + product.Replace("'", "''") + "'");
    
            this.AddData(rows[0], company);
        }
        else
        {
            MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK);
        }
    }
    
  2. No C#, você deve criar um manipulador de eventos para o Click evento do botão. Você pode colocar esse código no Load manipulador de eventos da ActionsControl classe.

    this.Insert.Click += new EventHandler(Insert_Click);
    

Mostrar o painel de ações

O painel de ações torna-se visível depois que os controles são adicionados a ele.

Para mostrar o painel de ações

  1. No Gerenciador de Soluções, clique com o botão direito do mouse em ThisDocument.vb ou ThisDocument.cs e clique em Exibir Código no menu de atalho.

  2. Crie uma nova instância do controle na parte superior da ThisDocument classe para que se pareça com o exemplo a seguir.

    private ActionsControl actions = new ActionsControl();
    
  3. Adicione código ao Startup manipulador de eventos de ThisDocument para que ele se pareça com o exemplo a seguir.

    this.ActionsPane.Controls.Add(actions);
    

Testar o aplicativo

Agora você pode testar o documento para verificar se o painel de ações aparece quando o documento é aberto. Teste a relação mestre/detalhe nos controles no painel de ações e verifique se os dados estão preenchidos em uma tabela do Word quando o botão Inserir é clicado.

Para testar o documento

  1. Pressione F5 para executar o projeto.

  2. Confirme se o painel de ações está visível.

  3. Selecione uma empresa na caixa de combinação e verifique se os itens na caixa de listagem Produtos são alterados.

  4. Selecione um produto, clique em Inserir no painel de ações e verifique se os detalhes do produto foram adicionados à tabela no Word.

  5. Insira produtos adicionais de várias empresas.

Próximas etapas

Este passo a passo mostra as noções básicas de vinculação de dados a controles em um painel de ações no Word. Estas são algumas tarefas que podem vir a seguir: