Artigo: 153929 - Última revisão: terça-feira, 13 de Julho de 2004 - Revisão: 2.1

Como utilizar a caixa de diálogo cor de Comdlg32.dll no VB e acesso

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

Tornar a utilizar o Comdlg32.dll é uma boa reutilização de recursos no Windows porque o Windows tem sempre Comdlg32.dll carregado. Se utilizar o controlo COMDLG32.OCX em vez disso, o programa tem de carregar o OCX na memória e também terá de distribuir um ficheiro de 90 K adicional aos seus clientes. O controlo OCX fornece uma interface fácil de utilizar para caixas de diálogo predefinida, mas é um acesso mais dispendioso em desempenho e recursos. Para optimizar o desempenho e reduzir a utilização de recursos, deve minimizar a utilização de controlos nas suas aplicações e utilizar directamente chamadas de API do Win32. Abaixo é um exemplo de código de como utilizar a caixa de diálogo Escolher cor in a Comdlg32.dll.

Mais Informação

1a. Visual Basic: iniciar um novo projecto. É criado o Form1 por predefinição.

1b. Access: abrir uma base de dados e criar um novo formulário.
  1. Adicione um CommandButton (Command1) para o formulário.
  2. Adicione o seguinte código à secção General Declarations do formulário:
       Option Explicit
    
       Private Type CHOOSECOLOR
         lStructSize As Long
         hwndOwner As Long
         hInstance As Long
         rgbResult As Long
         lpCustColors As String
         flags As Long
         lCustData As Long
         lpfnHook As Long
         lpTemplateName As String
       End Type
    
       Private Declare Function ChooseColorAPI Lib "comdlg32.dll" Alias _
         "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
    
       Dim CustomColors() As Byte
    
       Private Sub Command1_Click()
           Dim cc As CHOOSECOLOR
           Dim Custcolor(16) As Long
           Dim lReturn As Long
           cc.lStructSize = Len(cc)
           cc.hwndOwner = Me.hWnd
           cc.hInstance = 0
           cc.lpCustColors = StrConv(CustomColors, vbUnicode)
           cc.flags = 0
           lReturn = ChooseColorAPI(cc)
           If lReturn <> 0 Then
               Me.Caption = "RGB Value User Chose: " & Str$(cc.rgbResult)
               Me.BackColor = cc.rgbResult            ' Visual Basic only ****
               Me.Section(0).BackColor = cc.rgbResult ' Access only **********
               CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
           Else
               MsgBox "User chose the Cancel Button"
           End If
       End Sub
    
       Private Sub Form_Load()
           ReDim CustomColors(0 To 16 * 4 - 1) As Byte
           Dim i As Integer
    
           For i = LBound(CustomColors) To UBound(CustomColors)
               CustomColors(i) = 0
           Next i
       End Sub
    
    					
4a. Visual Basic: prima a tecla F5 para executar o projecto.

Access 4b.: Utilize o menu View|Form para abrir o formulário e executá-la.
  1. Clique no CommandButton e a caixa de diálogo cor será apresentada. Quando escolher uma cor e prima ' OK ', a cor de fundo do formulário mudará para a cor seleccionada.
CC_PREVENTFULLOPEN constante, com um valor decimal de 4, pode ser utilizado no elemento sinalizadores da estrutura CHOOSECOLOR se pretender impedir que a parte de cores personalizadas a caixa de diálogo sejam apresentados.

NOTA: Na rotina Command1_Click acima, o código para definir a cor de fundo de um formulário do Access e um formulário do Visual Basic é ligeiramente diferente. Ambos os comandos são incluídos e comentados. Escreva apenas o comando apropriado para o produto que está a utilizar.

Referências

Microsoft Visual Basic Programmer Guide, capítulo 11, P.325-332.

Win32 SDK.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
Palavras-chave: 
kbmt kbhowto KB153929 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 153929  (http://support.microsoft.com/kb/153929/en-us/ )