SlideShare uma empresa Scribd logo
1 de 33
Tutorial Controle VSFlexgrid
Demonstração Editar
Este exemplo começa com uma grade de entrada de dados básicos, em
seguida, adiciona as seguintes características:
formatação de dados
As caixas de seleção
As listas suspensas
As máscaras de entrada
validação de dados complexos
Suporte a área de transferência
Aqui está o que a aplicação final será semelhante a:
Passo 1: Criar a Controle
Iniciar um novo projeto Visual Basic, incluindo VSFlexGrid 8.0 (Se você
não sabe como adicionar arquivos OCX para um projeto, consulte a documentação
do Visual Basic). O ícone VSFlexGrid será adicionado à caixa de ferramentas
Visual Basic.
Criar um VSFlexGrid objeto no formulário, clicando no ícone VSFlexGrid na
caixa de ferramentas, em seguida, clicando no formulário e arrastando até que o
objeto é o tamanho adequado.
Em seguida, use a janela de propriedades do Visual Basic para definir as
propriedades de controle a seguir:
(Name) = fg
Editável = True
Cols = 5
FixedCols = 0
FormatString = "Product = | Região | Pessoa Sales |" & _ ">
Valor Vendido | Bonus"
É isso aí. Pressione F5 para executar o projeto, e você pode começar a
digitar os dados no controle. Pressione F2 ou a barra de espaço para editar
entradas existentes, ou simplesmente digitar novas entradas de empresas
existentes.
Passo 2: Formatação de dados
Ao exibir valores numéricos ou de data, você normalmente irá querer adotar
um formato consistente para os valores. O VSFlexGrid permite que você faça isso
usando a propriedade ColFormat . Esta propriedade permite atribuir um formato a
Página - 33
Tutorial Controle VSFlexgrid
cada coluna. Os formatos são similares aos reconhecidos pela função Format do
Visual Basic.
A propriedade ColFormat deve ser atribuído durante a execução. Um bom
lugar para fazer isso é no evento Form_Load, como mostra abaixo:
Private Sub Form_Load ()
'Column formato 3 (quantidade vendida) para exibir moeda
fg.ColFormat (3) = "$#,###. 00 "
End Sub
Este código atribui um formato de coluna 3 (quantidade vendida). O
formato especifica que os valores devem ser exibidos com um sinal de moeda,
separadores de milhar e duas casas decimais.
A propriedade ColFormat não afeta o conteúdo da célula, apenas a maneira
que é exibida. Você pode alterar o formato livremente sem modificar os dados
subjacentes.
Passo 3: caixas de seleção
Ao exibir valores booleanos (True / False), você tem a opção de usar
caixas de seleção em vez de True / False cordas ou 1 / 0 valores. Isto tem a
vantagem de impedir que os usuários insiram valores ruins.
Coluna 4 (Bonus) contém valores boolean (ou alguém recebe um bônus ou
não). Para exibir os valores como caixas de seleção, definir A propriedade
ColDataType para flexdtBoolean. O controle irá automaticamente exibir e
gerenciar as caixas de seleção.
A propriedade ColDataType deve ser atribuído durante a execução. Mudar
a rotina Form_Load conforme demonstrado abaixo:
Private Sub Form_Load ()
'Column formato 3 (quantidade vendida) para exibir moeda
fg.ColFormat (3) = "$#,###. 00 "
'Make coluna 4 (Bonus) uma coluna de boolean
fg.ColDataType (4) = flexdtBoolean
End Sub
Os usuários podem alternar as caixas de seleção clicando neles ou
selecionando-os com o teclado e digite bater ou espaço. Pressione F5 para
executar o projeto novamente, digite umas quantias poucas de vendas e dar bônus
para algumas pessoas.
Passo 4: Suspensa Listas
Inserção de dados é um tedioso e propenso a erros processo. Listas drop-
down são grandes porque minimizar a quantidade de digitar você deve fazer,
reduzir a chance de erros e aumentar a consistência dos dados.
Vamos supor que o nosso projeto de exemplo envolve apenas as vendas de
três produtos (Applets, Widgets e Gadgets), em quatro regiões (Norte, Sul, Leste e
Oeste), e que há três pessoas a tempo completo de vendas (Mary, Sarah, e Paula).
Digitando dados repetitivos seria ineficiente e propenso a erros. Uma
abordagem muito melhor seria usar listas suspensas para permitir aos usuários
escolher a entrada apropriada a partir de listas. O VSFlexGrid permite atribuir
uma lista de opções para cada coluna usando a propriedade ColComboList. A lista
consiste em uma string com escolhas, separados por caracteres de pipe ("|").
A propriedade ColComboList deve ser atribuído durante a execução. Mudar
a rotina Form_Load conforme demonstrado abaixo:
Private Sub Form_Load ()
'Column formato 3 (quantidade vendida) para exibir moeda
fg.ColFormat (3) = "$#,###. 00 "
'Make coluna 4 (Bonus) uma coluna de boolean
Página - 33
Tutorial Controle VSFlexgrid
fg.ColDataType (4) = flexdtBoolean
'Atribuir listas de combinação para cada coluna
fg.ColComboList (0) = "Applets | wahoos | Gadgets"
fg.ColComboList (1) = "Norte | Sul | Leste | Oeste"
fg.ColComboList (2) = "| Mary | Paula | Sarah"
End Sub
Observe como a última ColComboList string começa com uma tubulação.
Isso permitirá que os usuários digitem nomes adicionais que não estão na lista. Em
outras palavras, esses valores serão editados usando uma combinação drop-down,
em oposição a uma lista drop-down como os outros. Há opções de sintaxe para
criar multi-colunas listas e listas traduzidas também. Consulte a referência de
controle para obter mais detalhes.
Pressione F5 para executar o projeto novamente, em seguida, mover o
cursor. Quando você move o cursor para uma das colunas que têm listas de
combinação, um botão drop-down torna-se visível. Você pode clicar sobre ele para
mostrar a lista, ou simplesmente digitar a primeira letra de uma entrada para
destacá-lo na lista.
Passo 5: máscaras de entrada
Ao escolher os dados a partir de uma lista, geralmente há pouca
necessidade de validação de dados. Quando os valores de entrada são digitados,
no entanto, muitas vezes você vai querer ter certeza de que é válido.
No nosso exemplo, nós gostaríamos de evitar que os usuários digitem texto
ou valores negativos na coluna 3 (quantidade vendida). Você pode fazer isso
usando A propriedade ColEditMask, que atribui uma máscara de entrada para uma
coluna que governa o que o usuário pode digitar nesse campo.
A propriedade ColEditMask deve ser atribuído durante a execução. Mudar
a rotina Form_Load conforme demonstrado abaixo:
Private Sub Form_Load ()
'Column formato 3 (quantidade vendida) para exibir moeda
fg.ColFormat (3) = "$#,###. 00 "
'Atribuir editar máscara para coluna 3 (quantidade
vendida)
fg.ColEditMask (3) = "######.##"
'Make coluna 4 (Bonus) uma coluna de boolean
fg.ColDataType (4) = flexdtBoolean
'Atribuir listas de combinação para cada coluna
fg.ColComboList (0) = "Applets | wahoos | Gadgets"
fg.ColComboList (1) = "Norte | Sul | Leste | Oeste"
fg.ColComboList (2) = "| Mary | Paula | Sarah"
End Sub
A máscara de editar garante que o usuário não digitar nada na coluna 3,
com excepção números. A sintaxe para A propriedade ColEditMask permite
especificar vários tipos de entrada. Consulte a referência de controle para obter
mais detalhes.
Passo 6: Validação de dados complexos
Máscaras de entrada são convenientes para ajudar a entrada de dados de
usuários formatados corretamente. Eles também ajudam com tarefas simples de
validação de dados. Em muitas situações, no entanto, você pode precisar executar
mais complexa validação de dados. Nestes casos, você deve usar o ValidateEdit
evento.
Por exemplo, digamos que alguns regulamentos anti-trust nos impedem de
ser capaz de vender Applets na região Norte. Para evitar erros de entrada de
Página - 33
Tutorial Controle VSFlexgrid
dados e processos caros, queremos evitar que os usuários insiram esta combinação
para o controle. Podemos fazê-lo com a seguinte rotina:
Private Sub fa_ValidateEdit Row (ByVal As Long, _
ByVal Col As Long, _
Cancel As Boolean)
RGN Dim String, prd As String
"Coletar os dados que precisamos
Selecione Col Caso
Case 0
prd = fg.EditText
RGN = fg.TextMatrix (Linha, 1)
Caso 1
prd = fg.TextMatrix (Linha, 0)
RGN = fg.EditText
End Select
"Nós não podemos vender Applets na Região Norte ...
Se prd = "Applets" E RGN = "Norte" Então
MsgBox "Regulamento 12333AS/SDA-23 #" & _
"Impede-nos de vender" & prd & _
"Na" & RGN e "Região." & _
"Por favor, verificar a entrada."
Cancel = True
End If
End Sub
A função começa por recolher a entrada que precisa ser validado. Note-se
que os valores sendo verificados são recuperados usando a propriedade EditText .
Isto é necessário porque eles ainda não foram aplicados ao controle.
Se o teste falhar, a função exibe um aviso e, em seguida, define o
parâmetro Cancel para True, que cancela as edições e coloca o celular de volta no
modo de edição para que o usuário possa tentar novamente.
Pressione F5 para executar o projeto novamente, em seguida, tentar
introduzir alguns valores ruins. Você verá que o controle será rejeitá-los.
Passo 7: Suporte Área de Transferência
A área de transferência do Windows é um dispositivo muito útil para
transferir informações entre aplicativos. Adição de suporte a projetos da área de
transferência VSFlexGrid é muito fácil. Só é preciso o seguinte código:
Fg_KeyDown Sub privado (KeyCode%,% Shift)
As Boolean Dim Cpy, Pst As Boolean
"Cópia: ctrl-C, ctrl-X, ctrl-ins
Se KeyCode = vbKeyC E Shift = 2 Então Cpy = True
Se KeyCode = vbKeyX E Shift = 2 Então Cpy = True
Se KeyCode = vbKeyInsert E Shift = 2 Então Cpy = True
'Colar: ctrl-V, shift-ins
Se KeyCode = vbKeyV E Shift = 2 Então Pst = True
Se KeyCode = vbKeyInsert E Shift = 1 Então Pst = True
"Fazê-lo
Se Cpy seguida
Clipboard.Clear
Clipboard.SetText fa.Clip
Então ElseIf Pst
fg.Clip = Clipboard.GetText
End If
End Sub
A rotina lida com todos os comandos de teclado padrão relacionadas com a
área de transferência: CTRL-X, CTRL-C, ou CTRL-INS para copiar, e CTRL-V ou
Página - 33
Tutorial Controle VSFlexgrid
SHIFT-INS para colar. O verdadeiro trabalho é feito pelo clipe de propriedade, que
se encarrega de copiar e colar o texto da área de transferência na faixa atual.
Outro recurso do Windows grande que está intimamente relacionado com
operações de área de transferência é OLE Drag and Drop. VSFlexGrid tem duas
propriedades, OLEDragMode e OLEDropMode, que ajudam a implementar este
recurso. Basta definir as propriedades para as configurações automáticas e você
será capaz de arrastar as seleções pelas bordas e soltá-los em outros aplicativos
como o Microsoft Excel, ou faixas de arrastar de uma planilha do Excel e soltá-los
no VSFlexGrid controle.
Pressione F5 para executar o projeto novamente, tente copiar e colar alguns
dados. Você vai notar que é possível para colar dados inválidos, porque o nosso
código colar não faz qualquer validação de dados. Este é deixado como um
exercício para o leitor.
Demonstração esquema
Este exemplo mostra como você pode usar o VSFlexGrid como um
delineador para mostrar estruturado (ou hierárquica) de dados.
Quando usado como um delineador, o VSFlexGrid controle se comporta
como um controle Tree, exibindo nós que podem ser recolhidas ou expandidas
para mostrar ramos contendo dados subordinado.
A amostra lê arquivos INI várias. E apresenta cada um como um nó.
Cada nó do arquivo tem uma coleção de sub-nós que contém seções dentro do
arquivo correspondente. INI. Cada nó seção contém ramos que mostram os
sinais e as configurações armazenadas na seção correspondente. Aqui está
como o projeto final será:
Passo 1: Criar a Controle
Passo 2: Ler os dados e construir o Contorno
Passo 3: Use o Esboço
Passo 4: Mouse personalizado e manipulação de teclado
Passo 1: Criar a Controle
Iniciar um novo projeto Visual Basic, incluindo VSFlexGrid 8,0 (Se você
não sabe como adicionar arquivos OCX para um projeto, consulte a documentação
Página - 33
Tutorial Controle VSFlexgrid
do Visual Basic). O ícone VSFlexGrid será adicionado à caixa de ferramentas
Visual Basic.
Criar um objeto VSFlexGrid no formulário, clicando no ícone VSFlexGrid na
caixa de ferramentas, em seguida, clicando no formulário e arrastando até que o
objeto é o tamanho adequado.
Em seguida, use a janela de propriedades do Visual Basic para definir as
propriedades de controle a seguir:
(Name) = fg
Cols = 3
ExtendLastCol = True
FixedCols = 0
Linhas = 1
FormatString = "Node | Símbolo | Setting"
OutlineBar = flexOutlineBarComplete
GridLines = flexGridNone
MergeCells = flexMergeSpill
AllowUserResising = flexResizeColumns
Vamos definir a propriedade OutlineBar será capaz de ver a árvore de
esboço. Você pode criar contornos, sem árvores, mas o usuário não será capaz de
recolher e expandir os nós (a menos que você escrever código para fazê-lo).
Nós também definir a propriedade MergeCells para flexMergeSpill, assim
entradas tempo pode se estender para as células vazias adjacentes. Isso é muitas
vezes uma boa configuração para usar na construção de contornos.
Agora o controle está pronto. Podemos começar a adicionar alguns códigos
para ele.
Passo 2: Ler os dados e construir o Contorno
Dê um duplo clique no formulário e adicione o seguinte código ao evento
Form_Load:
Private Sub Form_Load ()
'Suspender pintura para aumentar a velocidade
fg.Redraw = False
"Preencher o controle
AddNode "Win.ini"
AddNode "System.ini"
AddNode "VB.INI"
'Expandir esboço, redimensionar para caber, colapso esquema
fg.Outline -1
fg.AutoSize 1, 2
fg.Outline 1
"Pintura está de volta nos
fg.Redraw = True
End Sub
A rotina começa definindo o Redraw propriedade para False. Esta pintura
suspende enquanto nós preencher o controle, e aumenta a velocidade
significativamente.
Em seguida, o AddNode rotina é chamado para preencher o controle com o
conteúdo dos três arquivos INI que é provável que você tem no seu sistema:. Win,
Sistema e Vb. O AddNode rotina é mostrada abaixo.
Finalmente, o esboço é totalmente expandido, o método AutoSize é
chamado para ajustar a largura das colunas ao seu conteúdo, eo esboço é recolhido
de volta para o nível 1 para o arquivo e nós seção será exibida.
A rotina AddNode faz a maior parte do trabalho. Ele lê um arquivo. INI e
preenche o controle, a criação de nós e ramos de acordo com o conteúdo do
arquivo. Aqui está a rotina AddNode :
Página - 33
Tutorial Controle VSFlexgrid
Sub AddNode(inifile As String)
Dim ln As String, p As Integer
With fg
' create file node
.AddItem inifile
.IsSubtotal(Rows - 1) = True
.Cell(flexcpFontBold, Rows - 1, 0) = True
' read ini file
Open "c:windows" & inifile For Input As #1
While Not EOF(1)
Line Input #1, ln
' if this is a section, add node
If Left(ln, 1) = "[" Then
.AddItem Mid(ln, 2, Len(ln) - 2)
.IsSubtotal(Rows - 1) = True
.RowOutlineLevel(Rows - 1) = 1
.Cell(flexcpFontBold, Rows - 1, 0) = True
' if this is regular data, add branch
ElseIf InStr(ln, "=") > 0 Then
p = InStr(ln, "=")
.AddItem vbTab & Left(ln, p - 1) & vbTab &
Mid(ln, p + 1)
End If
Wend
Close #1
End With
End Sub
A rotina AddNode é um pouco longa, mas é bastante simples. Começa por
adicionar uma linha contendo o nome do arquivo. INI que está sendo lido. Ela
marca a linha como um subtotal usando a propriedade IsSubtotal para o controle
irá reconhecê-lo como um nó de contorno.
Em seguida, a rotina lê o arquivo linha por linha INI. Nomes de seção são
colocados entre colchetes. Adicionar os códigos ao controle e em seguida, marca-
los como subtotais da mesma forma que marcou o nome do arquivo. A diferença é
que aqui ele também define a propriedade RowOutlineLevel 1, indicando que este
nó é um filho do anterior nível-0 nó (o que contém o nome do arquivo).
Finalmente, as linhas que contêm dados são analisadas em tokens e
configurações e, em seguida, adicionado ao controle. Eles não são marcados como
subtotais.
Passo 3: Use o Esboço
Pressione F5 para executar o projeto, e você vai ver o contorno em ação.
Se você clicar em um dos nós, ele irá expandir ou recolher para mostrar ou ocultar
os dados sob ele.
Você também pode shift-clique em um nó para expandir todo o contorno
para o nível do nó, ou shift-ctrl-clique em um nó a entrar em colapso todo o
contorno a esse nível. Por exemplo, se você shift-clique em um nome de arquivo,
você verá todos os nomes de arquivos e todas as seções, mas não há dados token.
Se você shift-ctrl-clique sobre um nome de arquivo, você verá todos os nomes de
arquivo, e nada mais.
Página - 33
Tutorial Controle VSFlexgrid
Passo 4: Mouse personalizado e manipulação de teclado
O Controle VSFlexGrid fornece a expandir e recolher para você, mas você
pode estender e personalizar o seu comportamento. Cada vez que um ramo é
expandido ou recolhido, o controle dispara os eventos BeforeCollapse e
AfterCollapse assim que você pode tomar medidas em resposta a isso. Além
disso, você pode usar a propriedade IsCollapsed para obter e definir o estado de
colapso de cada ramo no código.
Por exemplo, o seguinte código permite que os usuários para expandir e
recolher galhos esboço clicando duas vezes em uma linha própria, em vez de na
barra de contorno. Aqui está o código para fazer isso:
Private Sub fg_DblClick ()
Dim r As Long
Com fg
r = Row.
If. IsCollapsed (r) = flexOutlineCollapsed Then
. IsCollapsed (r) = flexOutlineExpanded
Else
. IsCollapsed (r) = flexOutlineCollapsed
End If
End With
End Sub
O código verifica a linha atual. Se estiver recolhida, então ele expande.
Caso contrário, ele desmorona-lo. Desmoronar uma linha de detalhes desmorona
seu nó pai inteiro.
Podemos usar o mesmo código para programar a interface do teclado. Nós
acabamos de chamar o evento DblClick a partir do evento KeyPress:
Private Sub fg_KeyPress (KeyAscii As Integer)
if KeyAscii = vbKeyReturn then fa_DblClick
End Sub
Isso fecha o demo de destaques. Pressione F5 para executar o projeto, uma
última vez e teste o mouse adicional e manuseio do teclado.
Análise de dados de demonstração
Esta amostra começa com uma grade que contém dados de vendas de
diferentes produtos, regiões e vendedores, em seguida, adiciona as seguintes
características:
 Layout dinâmico (a ordem das colunas)
 Classificação automática
 Celular fusão
 Subtotais automáticos
 Esboçando
Aqui está como a aplicação final será:
Página - 33
Tutorial Controle VSFlexgrid
Passo 1: Criar a Controle
Passo 2: Inicializar e preencher a grade
Passo 3: Classificação automática
Passo 4: Célula Mesclando
Passo 5: Subtotais automáticos
Passo 6: Estrutura de Tópicos
Passo 1: Criar a Controle
Iniciar um novo projeto Visual Basic, incluindo VSFlexGrid 8,0 (Se você
não sabe como adicionar arquivos OCX para um projeto, consulte a documentação
do Visual Basic). O ícone VSFlexGrid será adicionado à caixa de ferramentas
Visual Basic.
Criar um VSFlexGrid objeto no formulário, clicando no ícone VSFlexGrid na
caixa de ferramentas, em seguida, clicando no formulário e arrastando até que o
objeto é o tamanho adequado.
Em seguida, use a janela de propriedades do Visual Basic para definir o
nome do controle para fg.
Passo 2: Inicializar e preencher a grade
Existem muitos métodos disponíveis para preencher um VSFlexGrid
controle. Muitas vezes, você simplesmente conectá-lo a um banco de dados
usando o DataSource propriedade. Ou você pode carregar os dados de um
arquivo usando o LoadGrid método. Finalmente, você pode usar o AddItem
método para adicionar linhas ou o celular de propriedade para atribuir dados às
células.
Nesta demonstração, iremos gerar alguns dados aleatórios e atribuí-lo ao
controle usando a propriedade cell. Isto é feito no evento Form_Load:
Private Sub Form_Load ()
'Inicializar o controle
fg.Cols = 4
fg.FixedCols = 0
fg.GridLinesFixed = flexGridExplorer
fg.AllowUserResizing = flexResizeBoth
fg.ExplorerBar = flexExMove
'Define alguns dados da amostra
Const slProduct = "Produto | Flautas | Saxofones | Baterias |"
& _
"Guitarras | Trombones | Teclados | Microfones"
Página - 33
Tutorial Controle VSFlexgrid
Const slAssociate = "Associado | John | Paul | Mike | Paula |
Sylvia | Donna"
Const slRegion = "Região | Norte | Sul | Oriente | West"
Const slSales = "Vendas | 14323 | 2532 | 45342 | 43432 | 75877
| 4232 | 4543"
"Preencher o controle com os dados
FillColumn fg, 0, slProduct
FillColumn fg, 1, slAssociate
FillColumn fg, 2, slRegion
FillColumn fg, 3, slSales
fg.ColFormat (3) = "#,###"
End Sub
Esta rotina utiliza uma função auxiliar chamada FillColumn que preenche
uma coluna inteira com dados retirados aleatoriamente de uma lista. Esta é uma
função útil para demos, e aqui está o código:
Sub FillColumn (fg Como VSFlexGrid, ByVal c As Long, ByVal s As
String)
Dim r As Long, i As Long, cnt As Long
ReDim lst (0) As String
'Construir lista de valores de dados
cnt = 0
i = InStr (s, "|")
Enquanto i> 0
lst (cnt) = Left (s, i - 1)
s = Mid (s, i + 1)
cnt = cnt + 1
ReDim Preserve lst (cnt) As String
i = InStr (s, "|")
Dirigir-se
lst (cnt) = s
"Definir os valores a escolher aleatoriamente a partir da lista
fg.Cell (flexcpText, 0, c) = lst (0)
Para fg.FixedRows r = Para fa.Rows - 1
i = (Rnd () * 1000) Mod cnt + 1
fg.Cell (flexcpText, r, c) = lst (i)
Próximo
"Fazer uma autosize na coluna que acabou de preencher
fg.AutoSize c,,, 300
End Sub
Isto conclui a primeira etapa. Pressione F5 para executar o projeto, e você
verá uma grade carregada com dados. Porque a propriedade ExplorerBar é
definida como flexExMove, você pode arrastar os cabeçalhos de coluna em torno de
reordenar as colunas.
Os dados apresentados são quase inúteis, no entanto, porque não é
apresentado de forma organizada. Vamos corrigir isso a seguir.
Passo 3: Classificação automática
O primeiro passo para organizar os dados é a classificação dele. Além disso,
gostaríamos que os dados fossem classificados automaticamente sempre que o
usuário reordena as colunas.
Depois que o usuário reordena as colunas, o Controle VSFlexGrid de utiliza
o evento AfterMoveColumn. Nós vamos adicionar um manipulador de eventos
para classificar os dados usando o Sort propriedade. (Note que se a grade fosse
vinculado a um banco de dados, você precisará definir a Propriedade DataMode
para flexDMFree ser capaz de resolver usando a propriedade Sort.)
Aqui está o código:
Página - 33
Tutorial Controle VSFlexgrid
Private Sub fg_AfterMoveColumn (Col ByVal posição, Long As
Long)
"Classificar os dados da primeira para a última coluna
fg.Select 1, 0, 1, fa.Cols - 1
fg.Sort = flexSortGenericAscending
fg.Select 1, 0
End Sub
O AfterMoveColumn rotina começa selecionando a linha não fixa primeiro
no controle usando o método Select. Em seguida, ele classifica todo o controle em
ordem crescente usando a propriedade Sort.
Para começar com uma grade de classificados, que também irá adicionar
uma chamada para o AfterMoveColumn rotina para o final do manipulador
Form_Load.
Private Sub Form_Load ()
'Inicializar o controle
'...
'Define alguns dados da amostra
'...
"Preencher o controle com os dados
'...
'Organizar os dados
fg_AfterMoveColumn 0, 0
End Sub
Pressione F5 para executar o projeto novamente, e tente reordenar as
colunas arrastando os seus títulos ao redor. Sempre que você mover uma coluna,
os dados são classificados automaticamente, o que torna muito mais fácil de
interpretar. Mas estamos apenas começando.
Passo 4: Célula Mesclando
A capacidade de mesclar células dinamicamente é uma das características que
define o VSFlexGrid além de outros controles de grade. Fusão grupos de células
visualmente, tornando os dados mais fáceis de interpretar.
Para programar fusão celular, basta adicionar duas linhas de código para o
manipulador de eventos Form_Load:
Private Sub Form_Load ()
'Inicializar o controle
'...
'Define alguns dados da amostra
'...
"Preencher o controle com os dados
'...
'Set up célula fusão (todas as colunas)
fg.MergeCells = flexMergeRestrictAll
fg.MergeCol (-1) = True
'Organizar os dados
'...
End Sub
O novo código define a propriedade MergeCells , que funciona através de todo
o controle, em seguida, define a propriedade MergeCol como True para todas as
colunas (o índice -1 pode ser usado como um curinga para todas as propriedades que se
aplicam a linhas e colunas).
Página - 33
Tutorial Controle VSFlexgrid
Pressione F5 novamente para executar o projeto. Desta vez, parece muito
diferente de uma grade típica. A célula de fusão faz com que grupos de dados
destacam-se visualmente e ajudar a interpretar a informação.
Passo 5: Subtotais automáticos
Agora que os dados são classificados e agrupados, vamos adicionar o código
para calcular subtotais. Com os subtotais, o usuário será capaz de ver quais os produtos
que estão vendendo mais, em que regiões, e que os vendedores estão fazendo um bom
trabalho.
Adicionando subtotais para um controle VSFlexGrid é fácil. O método
Subtotal lida com a maioria dos detalhes.
Os subtotais precisam ser recalculados após cada espécie, por isso vamos
adicionar o código necessário para o evento AfterMoveColumn. Aqui está o código
revisto:
Private Sub fg_AfterMoveColumn (Col ByVal posição, Long As
Long)
'Desativar Redraw para obter mais velocidade
fg.Redraw = False
"Classificar os dados da primeira para a última coluna
fg.Select 1, 0, 1, fa.Cols - 1
fg.Sort = flexSortGenericAscending
fg.Select 1, 0
"Calcular subtotais
flexSTClear fg.Subtotal
flexSTSum fg.Subtotal, -1, 3,, 1, vbWhite, True
flexSTSum fg.Subtotal, 0, 3,, vbRed, vbWhite, True
flexSTSum fg.Subtotal, 1, 3,, vbBlue, vbWhite, True
"Autosize
fg.AutoSize 0, fa.Cols - 1, 300
'Ativar Redraw de volta
fg.Redraw = True
End Sub
Este código começa por definir a propriedade Redraw para False. Esta
suspende todas as repintura enquanto trabalhamos no grid, o que evita a tremulação e
aumenta a velocidade.
Em seguida, os subtotais são calculados usando o método Subtotal . A primeira
chamada remove todas as linhas existentes subtotal, limpeza do grid. Os próximos três
chamados adicionar linhas de subtotal. Começamos pela adição de um total geral, em
seguida, subtotais de vendas agrupados por colunas 0 e 1. (Por enquanto, estamos
supondo que os números de vendas será na coluna 3.)
Depois de adicionar os subtotais, usamos o método AutoSize para certificar-se
de todas as colunas são largas o suficiente para mostrar os novos dados.
Finalmente, a propriedade Redraw é definida como True volta, altura em que as
mudanças se tornam visíveis.
Se você executar o projeto agora, você vai ver que ele quase funciona. O
problema é que estamos assumindo que os números de vendas serão na coluna 3, e se o
usuário move os números para a esquerda, os subtotais só irão somar zero.
Para evitar que isso aconteça, nós podemos interceptar o evento
BeforeMoveColumn e evitar que o usuário mover a coluna valor de vendas.
Aqui está o código:
Private Sub fg_BeforeMoveColumn (Col ByVal posição, Long As
Long)
Página - 33
Tutorial Controle VSFlexgrid
'Não se movem números de vendas
Se Col = fg.Cols - 1 posição, então = -1
End Sub
Devemos também evitar a coluna de vendas de ter células mescladas. A fusão
destes valores pode ser confusa porque as quantidades idênticas seriam fundidas e
parece ser uma única entrada. Para fazer isso, precisamos voltar para o evento
Form_Load e adicionar uma linha de código:
Private Sub Form_Load ()
'Inicializar o controle
'...
'Define alguns dados da amostra
'...
"Preencher o controle com os dados
'...
'Set up célula fusão (todas as colunas)
fa.MergeCells = flexMergeRestrictAll
fa.MergeCol (-1) = True
fa.MergeCol (fa.Cols - 1) = False
'Organizar os dados
'...
End Sub
Estamos a gerar os subtotais. Se você executar o projeto agora, você verá como
é fácil de entender a imagem por trás dos números de vendas. Você pode organizar os
dados por produto, por região ou por vendedor e ver rapidamente quem está vendendo o
quê e onde.
Agora estamos quase terminando com este demo. O último passo é adicionar
delineando para o controle, assim os usuários podem ocultar ou exibir detalhes e ter
uma visão ainda mais clara.
Passo 6: Estrutura de Tópicos
As capacidades de estruturação do controle VSFlexgrid dependem subtotais. Ao
delinear, cada linha de subtotal é tratado como um nó que pode ser recolhido ou
expandido. Subtotais aninhados são tratados como nós aninhados. Quaisquer linhas
que não são linhas de subtotal são tratadas como filiais, que contêm dados detalhados.
Porque nós já programamos subtotais, acrescentando as capacidades esboço é
apenas uma questão de adicionar uma linha a mais de código para o manipulador de
eventos Form_Load. O novo código define a propriedade OutlineBar , que exibe uma
estrutura de árvore com botões que o usuário pode clicar para recolher ou expandir o
esquema. Aqui está o que a rotina Form_Load deve ser semelhante a de agora:
Private Sub Form_Load ()
'Inicializar o controle
'...
'Define alguns dados da amostra
'...
"Preencher o controle com os dados
'...
'Set up célula fusão (todas as colunas)
'...
'Set up delineando
fg.OutlineBar = flexOutlineBarComplete
'Organizar os dados
'...
End Sub
Página - 33
Tutorial Controle VSFlexgrid
Que conclui este demo. Executar o projeto mais uma vez e tentar clicar nos
botões de contorno. Ao clicar irá alternar o estado do nó entre em colapso e
expandida. Shift + clique ou Ctrl-Shift-clicar irá definir o nível de destaque de todo
o controle.
Demonstração Preenchimento de células
Este exemplo demonstra como usar o da propriedade cell para formatar
células individuais. O demo usa Preenchimento para criar um display combinando
números e bares.
Aqui está como a aplicação final será:
Este projeto é muito simples. É constituído por uma única rotina, no
evento Form_Load. Aqui está o código, seguido de alguns comentários:
Private Sub Form_Load()
Dim i As Long
Dim max As Double
' initialize array with random data
Dim count(1, 7) As Single
For i = 0 To 7
count(0, i) = Rnd * 100
count(1, i) = Rnd * 100
Next
' initialize control
fg.Cols = 3
fg.Rows = 9
fg.FloodColor = RGB(100, 255, 100)
fg.ColAlignment(0) = flexAlignCenterCenter
fg.ColAlignment(1) = flexAlignRightCenter
fg.ColAlignment(2) = flexAlignLeftCenter
fg.Cell(flexcpText, 0, 0) = "Age Range"
fg.Cell(flexcpText, 0, 1) = "Females"
fg.Cell(flexcpText, 0, 2) = "Males"
fg.ColFormat(-1) = "#.##"
' make data bold
fg.Cell(flexcpFontBold, 1, 1, _
fg.Rows - 1, fa.Cols - 1) = True
' place text in cells, keep track of maximum
For i = 0 To 7
fg.Cell(flexcpText, i + 1, 0) = _
10 * i & " - " & (10 * (i + 1) - 1)
fg.Cell(flexcpText, i + 1, 1) = count(0, i)
fg.Cell(flexcpText, i + 1, 2) = count(1, i)
If count(0, i) > max Then max = count(0, i)
If count(1, i) > max Then max = count(1, i)
Página - 33
Tutorial Controle VSFlexgrid
Next
' set each cell's flood percentage,
' using max to scale from 0 to -100 for column 1
' and from 0 to 100 for column 2:
For i = 0 To 7
fg.Cell(flexcpFloodPercent, i + 1, 1) = _
-100 * count(0, i) / max
fg.Cell(flexcpFloodPercent, i + 1, 2) = _
100 * count(1, i) / max
Next
End Sub
O código começa por declarar e preencher uma matriz com dados
aleatórios. Os dados serão usados posteriormente para preencher o controle.
Então o controle é inicializado. O código define o número de linhas e colunas,
alinhamentos de coluna, os títulos das colunas, e o formato que deve ser usado na
apresentação de dados. Note que ao definir a Propriedade ColFormat, o índice -1
é usado como um curinga para a configuração é aplicada a todas as colunas.
A propriedade cell de propriedade é então utilizado para definir a fonte da
área de rolagem para negrito. Leva apenas uma única instrução, porque usando a
propriedade cell aceita uma série como parâmetro.
Em seguida, a matriz que contém os dados é copiada para o controle
(novamente usando a propriedade cell). O código se mantém informado do valor
máximo atribuído a qualquer célula, a fim de dimensionar a inundação
percentagens mais tarde.
Finalmente, a propriedade cell é usada uma última vez para definir os
percentuais de Preenchimento. As percentagens na primeira coluna estão
definidas para valores negativos, o que faz com que as barras a ser desenhado da
direita para a esquerda. Os percentuais sobre a segunda coluna estão definidos
para valores positivos, o que faz com que as barras a ser desenhado da esquerda
para a direita.
O exemplo abaixo mostra como você pode usar as propriedades MouseRow
e MouseCol para implementar tooltips com texto que muda conforme o mouse
se move sobre o controle.
Sub fg_MouseMove (Button As Integer, Shift As Integer, _
X as single, Y As Single)
Static R As Long, c As Long
Nr Dim As Long, nc As Long
'Obter coordenadas
nr = fg.MouseRow
nc = fg.MouseCol
'Update tooltip texto
if c <> nc or r <n> then,
r = nr
c = nc
fg.ToolTipText = "Linha:" & r & "Col:" & c
End If
"Processamento de outros ...
'...
End Sub
O código nos mantém informados da última célula para a qual foram
exibidos tooltips, e atualiza a ToolTipText somente quando necessário. Isto é
feito para evitar a cintilação.
Página - 33
Tutorial Controle VSFlexgrid
Demonstração de impressão
O método PrintGrid faz parte do Controle VSFlexGrid , e você pode usá-
lo para imprimir o conteúdo da rede diretamente para a impressora.
Se você precisa imprimir dados mais sofisticados, com visualização de
impressão e à capacidade de combinar várias grelhas e outros elementos, tais
como tabelas e texto em um único documento, então você deve usar o controle
VSPrinter, um produto ComponentOne separada que faz parte do Produto
VSVIEW .
Este exemplo mostra como você pode imprimir uma grade usando o
método. Ambos os métodos permitem controlar quebras de página e para
designar certas linhas como "header" linhas, que aparecem no topo de cada
página.
O exemplo presume que você tenha um Controle VSFlexGrid chamado fg
e um VSPrinter controle chamado vp no seu formulário.
Sub PrintFlexGridBuiltIn ()
fg.PrintGrid "Grid Meu"
End Sub
Sub PrintFlexGridOnVSPrinter ()
vp.StartDoc
vp.RenderControl = fg.hWnd
vp.EndDoc
End Sub
As rotinas acima são tudo que você precisa, a fim de imprimir relatórios
simples. O primeiro usa o built-in método PrintGrid, e o segundo utiliza o
Controle VSPrinter . O segundo método permite-lhe mostrar o relatório em uma
janela de visualização, gerá-lo na impressora, ou salvá-lo em um arquivo.
Para impressão de relatórios complexos, o Controle VSFlexGrid possui
eventos que permitem controlar quebras de página e fornecer linhas de cabeçalho
que são impressos no topo de cada página nova. O código abaixo ilustra o uso
desses eventos:
"BeforePageBreak: quebra controles de página
"Vamos assumir que temos subtotais acima detalhes,
E evitar linhas de subtotal
'Sendo a última em uma página
Private Sub Fg_BeforePageBreak (ByVal As Long Row, BreakOK As
Boolean)
'Se essa linha é um título subtotal, não podemos quebrar aqui
if fg.IsSubtotal (Row) then BreakOK = False
End Sub
"GetHeaderRow: linhas de cabeçalho suprimentos para novas
páginas
"Vamos assumir que temos linhas título com rowdata definido
como -1" que queremos mostrar
'Acima dos dados
Private Sub fg_GetHeaderRow (Row ByVal HeaderRow, Long As Long)
Dim r As Long
"Ignorar se a linha superior é um cabeçalho já
if fg.RowData (Row) = -1 Then Exit Sub
"Precisamos de um cabeçalho, assim que encontrar um
for r = fg.FixedRows to fa.Rows - 1
if fg.RowData (r) = -1 then
HeaderRow = r
Sub Exit
Página - 33
Tutorial Controle VSFlexgrid
End If
Next
End Sub
OLE Drag and Drop Demonstração
Este exemplo mostra como implementar automático e manual OLE arrastar
e soltar usando VSFlexGrid 8.0.
OLE arrastar e soltar pode ser um pouco confuso no início, por causa de
todas as propriedades, métodos, objetos e eventos que podem estar envolvidos
no processo. No entanto, você só precisa lidar com alguns desses eventos, a fim
de fazer OLE arrastar e largar o trabalho para você. Esta demonstração mostra os
conceitos básicos e procedimentos que você irá precisar.
Aqui está como a aplicação final será:
Os três controles mostrados são fontes de arrastar OLE queda e metas. Isto
significa que você pode arrastar os dados de um controle para os outros, ou entre
qualquer um dos controles e aplicações externas.
Passo 1: Criar os controles
Passo 2: Inicializar os controles
Passo 3: Arraste OLE manual
Passo 4: Drop OLE manual
Passo 2: Inicializar os controles
Poderíamos ter definido as propriedades iniciais dos controles fgDDManual
e fgDDAuto usando a janela de propriedades do Visual Basic, mas optou por fazê-
lo usando o evento Form_Load . Aqui a rotina que inicializa os controles:
Private Sub Form_Load ()
'Inicializar o controle manual
withDManual
. Cell(flexcpText, 0, 0) = "Manual"
. FixedCols = 0
. Editable = True
. OLEDragMode = flexOLEDragManual
. OLEDropMode = flexOLEDropManual
End With
Página - 33
Tutorial Controle VSFlexgrid
'Inicializar o controle automático
Com fgDDAuto
. Cell(flexcpText, 0, 0) = "Auto"
. FixedCols = 0
. Editable = True
. OLEDragMode = flexOLEDragAutomatic
. OLEDropMode = flexOLEDropAutomatic
End With
End Sub
O código faz dois grids editáveis, para que você possa digitar a eles, e define
as propriedades OLEDragMode e OLEDropMode para fazer cada controle uma
fonte de arrastar e soltar OLE e um alvo.
Não há necessidade de inicializar o Editbox Rich, desde que as suas propriedades
OLEDragMode e OLEDropMode são definidas como automática por padrão.
Isso é tudo o que é preciso para implementar arrastar e soltar OLE
automática. Se você executar o projeto agora, você será capaz de arrastar o texto
da richtextbox na fgDDAuto grade. Você também pode arrastar arquivos do
Windows Explorer, varia de Microsoft Excel, ou o texto do Microsoft Word.
Você também pode arrastar as seleções da grade fgDDAuto em qualquer
destino de soltar OLE (incluindo outras áreas do mesmo controle). Para fazer isso,
selecione um intervalo e mover o cursor do mouse para uma borda em torno da
seleção. O cursor vai se transformar em um cursor arrastar padrão OLE, como a
imagem abaixo mostra. Clique no botão esquerdo do mouse e começar a arrastar.
O cursor vai lhe dar feedback visual quando você movê-lo sobre um destino de
soltar OLE.
Como você pode ver, a implementação de arrastar e soltar OLE automática é
fácil. Basta definir as propriedades OLEDragMode e OLEDropMode para
automático e está feito.
Às vezes você pode desejar personalizar a maneira pela qual OLE arrastar e
soltar funciona. Este exemplo mostra como você pode fazer isso, personalizando
tanto arrastar o (fonte OLE) comportamento e da queda (destino OLE)
comportamento do controle fgDDManual .
Passo 3: Arraste OLE manual
Vamos personalizar o comportamento do fgDDManual controle como uma
fonte de arrastar OLE de duas maneiras:
1. Vamos iniciar arrastando sempre que o usuário clica na célula atual, e
2. Nós vamos adicionar um aviso de copyright ao conteúdo que está
sendo arrastado do controle.
Porque a propriedade OLEDragMode do fgDDManual controle é definido
para flexOLEDragManual, você precisa iniciar a operação OLE arrastar com o
código, usando o método OLEDrag. Para fazer isso, vamos adicionar código para
manipular o evento BeforeMouseDown. Quando o usuário clica na célula ativa,
que chamamos de método OLEDrag. Aqui está o código:
private sub FgDDManual_BeforeMouseDown(byval Button as
Integer, _
ByVal shift As Integer, _
ByVal X As Single, Y As Single ByVal, _
Página - 33
Tutorial Controle VSFlexgrid
Cancel As Boolean)
with fgDDManual
'Se o clique foi na célula ativa
"Começar a arrastar
If. MouseRow = Row. E. MouseCol =. Col then
"Utilizar o método OLEDrag de arranque manual
"Operação de arrastar OLE
"Isso vai acionar o evento OLEStartDrag,
", Que usaremos
'Para preencher o DataObject com os dados que
"Deseja arrastar.
. OLEDrag
'Dizer controle de grade para ignorar rato
"Movimentos até que a
'Botão do mouse sobe novamente
Cancel = True
End If
End With
End Sub
O código acima verifica se o usuário clicou na célula ativa. Se assim for, ele
chama o método OLEDrag e define o parâmetro Cancel para True.
Note que você não especificou o que os dados são. No modo automático, o
controle assumiu que você queria arrastar a seleção atual. No modo manual, você
é responsável pelo fornecimento dos dados.
Quando o método OLEDrag , o controle dispara o evento OLEStartDrag ,
que dá acesso a um objeto DataObject. Você deve armazenar os dados que serão
arrastados para o DataObject para que o objeto alvo pode chegar a ela. Aqui está
o código:
private sub FgDDManual_OLEStartDrag(data As
VSFlex8Ctl.vsDataObject, AllowedEffects As Long)
'Set conteúdo do objeto de dados para arrastar manual de
Dim s $
s = fgDDManual.Clip & vbCrLf & "Copyright 2000 ComponentOne"
Data.SetData s, vbCFText
End Sub
O código leva a seleção atual (contidos na propriedade clip), acrescenta um
aviso de direitos autorais a ele, e depois atribui-lo para o parâmetro de dados.
Estes são os dados que serão expostos aos destinos de soltar OLE.
Se você executar o projeto agora, e digite alguns dados na fgDDManual
controle, você será capaz de arrastá-lo para um dos outros controles no formulário.
Observe como o aviso de direitos autorais fica anexado à seleção quando você faz
a queda.
Passo 4: Drop OLE manual
Vamos personalizar o comportamento do fgDDManual controle como um
destino de soltar OLE para que, quando uma lista de arquivos é descartado, ele abre o
primeiro arquivo da lista e exibe o conteúdo das primeiras 10 linhas nesse arquivo. (O
comportamento padrão é para o tratamento de listas de arquivos como texto e cole os
nomes dos arquivos.)
Quando o usuário solta um objeto de dados OLE em um VSFlexGrid controle
com o OLEDropMode propriedade definida como flexOLEDropManual, o controle
dispara o OLEDragDrop evento. O objeto de dados sendo descartado é passado
como um parâmetro (dados) que você pode consultar o tipo de dados que você
deseja.
Página - 33
Tutorial Controle VSFlexgrid
A rotina abaixo faz uma verificação para ver se os dados contidos em uma
lista de arquivos. Se assim for, ele abre o primeiro arquivo na lista e lê o conteúdo
de suas primeiras 10 linhas. Se o parâmetro de dados não contém todos os
arquivos, então a rotina tenta fazer com que o seu conteúdo de texto. De qualquer
forma, a rotina transfere os dados para a rede usando a propriedade Clip .
Aqui está a rotina:
Private sub FgDDManual_OLEDragDrop(data as
VSFlex8Ctl.vsDataObject, _
Effect As Long, _
ByVal Button As Integer, _
ByVal shift As Integer, _
ByVal X as single, Y As Single)
Dim r As Long, c As Long, i As Integer, s As String
with fgDDManual
"Obter a localização queda
r =. MouseRow
c =. MouseCol
"Se nós estamos soltando arquivos, abra o arquivo
'E colar o conteúdo
if Data.FileCount> 0 Then
On Error Resume Next
open Data.Files(0) for Input As # 1
for i = 0 To 10
Line Input # 1, s
. Cell(flexcpText, r + i, c) = s
next
Close # 1
'Texto soltar usando a propriedade Clip
ElseIf Data.GetFormat (vbCFText) Then
s = Data.GetData (vbCFText)
. Select r, c, .rows - 1., .Cols - 1.
. Clip = s
. Select r, c
"Nós não aceitamos outra coisa
else
MsgBox "Desculpe, é só aceitamos arquivos de texto e ..."
End If
End With
End Sub
Que conclui este demo. Executar o projeto novamente e tente
arrastar e soltar entre os controles e outras aplicações.
VSFlexGrid de Controle > Propriedades VSFlexGrid, Eventos e Métodos
Propriedades VSFlexGrid, Eventos e Métodos
Todas as propriedades, eventos e métodos para a Controle VSFlexGrid
estão listados nas tabelas a seguir. Propriedades, eventos e métodos que se
aplicam apenas a este controle, ou que requerem uma consideração especial
quando usado com ele, são marcados com um asterisco (*). Estes são
documentadas nas seções posteriores. Para documentação sobre as demais
propriedades, consulte a documentação do Visual Basic.
Propriedades
* AccessibleDescription Obtém ou define a descrição do controle usado por aplicativos
cliente de acessibilidade.
* AccessibleName Obtém ou define o nome do controle usado por aplicativos
cliente de acessibilidade.
Página - 33
Tutorial Controle VSFlexgrid
* AccessibleRole Obtém ou define o papel do controle usado por aplicativos
cliente de acessibilidade.
* AccessibleValue Obtém ou define o valor do controle usado por aplicativos
cliente de acessibilidade.
* Aggregate Retorna uma função agregada (soma, média, etc) para um
determinado intervalo.
* AllowBigSelection Retorna ou define se clicar na área fixa irá selecionar colunas
inteiras e linhas.
* AllowSelection Retorna ou define se o usuário pode selecionar intervalos de
células com o mouse e teclado.
* AllowUserFreezing Retorna ou define se o usuário tem permissão para congelar
linhas e colunas com o mouse.
* AllowUserResizing Retorna ou define se o usuário tem permissão para
redimensionar linhas e colunas com o mouse.
* Appearance Retorna ou define o estilo de pintura do controle sobre um
objeto MDIForm ou formulário.
* ArchiveInfo Retorna informações de um arquivo VSFlex.
* AutoResize Retorna ou define se a largura das colunas serão ajustadas
automaticamente quando os dados são carregados.
* AutoSearch Retorna ou define se o controle irá procurar por entradas como
eles são digitados.
* AutoSearchDelay Retorna ou define o atraso, em segundos, antes que o buffer
AutoSearch é reposto.
* AutoSizeMode Retorna ou define se AutoSize irá ajustar a largura das colunas
ou alturas de linha para caber o conteúdo da célula.
* AutoSizeMouse Retorna ou define se as colunas devem ser redimensionada
para caber quando o usuário clica duas vezes sobre a linha de
cabeçalho.
* BackColor Retorna ou define a cor de fundo das células não-fixa.
* BackColorAlternate Retorna ou define a cor de fundo para linhas alternadas
(definido como 0 para desabilitar).
* BackColorBkg Retorna ou define a cor de fundo da área não abrangida por
qualquer das células.
* BackColorFixed Retorna ou define a cor de fundo das linhas fixas e colunas.
* BackColorFrozen Retorna ou define a cor de fundo das linhas e colunas
congeladas.
* BackColorSel Retorna ou define a cor de fundo das células selecionadas.
* BottomRow Retorna o índice baseado em zero da última linha exibida no
controle.
* Cell Retorna ou define as propriedades da célula para um intervalo
arbitrário.
* CellAlignment Retorna ou define o alinhamento do texto na célula selecionada
ou intervalo.
* CellBackColor Retorna ou define a cor de fundo da célula selecionada ou
intervalo.
* CellButtonPicture Retorna ou define a imagem usada em botões celular.
* CellChecked Retorna ou define se uma célula da grade tem uma marca de
verificação.
* CellFloodColor Retorna ou define a cor a ser usada para inundar uma célula.
* CellFloodPercent Retorna ou define o percentual de inundação para uma célula.
Página - 33
Tutorial Controle VSFlexgrid
* CellFontBold Retorna ou define o atributo negrito da fonte da célula
selecionada ou intervalo.
* CellFontItalic Retorna ou define o atributo Itálico da fonte da célula
selecionada ou intervalo.
* CellFontName Retorna ou define o nome da fonte da célula selecionada ou
intervalo.
* CellFontSize Retorna ou define o tamanho da fonte da célula selecionada ou
intervalo.
* CellFontStrikethru Retorna ou define o atributo Strikethru da fonte da célula
selecionada ou intervalo.
* CellFontUnderline Retorna ou define o atributo Sublinhado da fonte da célula
selecionada ou intervalo.
* CellFontWidth Retorna ou define a largura da fonte da célula selecionada ou
intervalo.
* CellForeColor Retorna ou define a cor de primeiro plano da célula selecionada
ou intervalo.
* CellHeight Retorna a altura da célula selecionada, em twips. Também traz
a célula em vista, a rolagem, se necessário.
* CellLeft Retorna a esquerda (x) coordenar da célula selecionada em
relação ao controle, em twips. Também traz a célula em vista,
a rolagem, se necessário.
* CellPicture Retorna ou define a imagem exibida em uma célula selecionada
ou intervalo.
* CellPictureAlignment Retorna ou define o alinhamento das imagens na célula
selecionada ou intervalo.
* CellTextStyle Retorna ou define efeitos 3D para o texto em uma célula
selecionada ou intervalo.
* Celltop Retorna ao topo (y) de coordenadas da célula selecionada em
relação ao controle, em twips. Também traz a célula em vista,
a rolagem, se necessário.
* CellWidth Retorna a largura da célula selecionada, em twips. Também
traz a célula em vista, a rolagem, se necessário.
* ClientHeight Retorna a altura da área cliente do controle, em twips.
* ClientWidth Retorna a largura da área cliente do controle, em twips.
* Clip Retorna ou define o conteúdo de um intervalo.
* ClipSeparators Retorna ou define os caracteres a serem usados como
separadores de coluna e linha em Clipe strings.
* Col Retorna ou define o índice baseado em zero da coluna atual.
* ColAlignment Retorna ou define o alinhamento da coluna dado.
* ColComboList Retorna ou define a lista para ser usado como um drop-down
na coluna especificada.
* ColData Retorna ou define um user-defined variante associada à
determinada coluna.
* ColDataType Retorna ou define o tipo de dados para a coluna.
* ColEditMask Retorna ou define a máscara de entrada usado para editar as
células da coluna especificada.
* ColFormat Retorna ou define o formato usado para exibir valores
numéricos.
* ColHidden Retorna ou define se uma coluna está oculto.
* ColImageList Define ou retorna um identificador para um ImageList para
ser usado como uma fonte de imagens para uma determinada
Página - 33
Tutorial Controle VSFlexgrid
coluna.
* ColIndent Retorna ou define o recuo da coluna dado, em twips.
* colIndex Retorna o índice da coluna que coincida com a chave dada.
* ColIsVisible Retorna se uma determinada coluna está à vista.
* ColKey Retorna ou define uma chave usada para identificar a coluna
determinada.
* ColPos Retorna a esquerda (x) coordenar de uma coluna em relação à
borda do controle, em twips.
* ColPosition Move uma determinada coluna para uma nova posição.
* Cols Retorna ou define o número total de colunas no controle.
* ColSel Retorna ou define a extensão de um intervalo de colunas.
* ColSort Retorna ou define a ordem de classificação para cada coluna
(para uso com o Sort propriedade).
* ColWidth Retorna ou define a largura da coluna especificada em twips.
* ColWidthMax Retorna ou define a largura da coluna máximo, em twips.
* ColWidthMin Retorna ou define a largura da coluna mínimo, em twips.
* ComboCount Retorna o número de itens na lista do editor de combinação.
* ComboData Retorna o valor muito tempo associado com um item na lista do
editor de combinação.
* ComboIndex Retorna ou define o índice com base zero da seleção atual na
lista do editor de combinação.
* ComboItem Retorna a string associada a um item na lista do editor de
combinação.
* ComboList Retorna ou define a lista para ser usado como um drop-down
ao editar uma célula.
* ComboSearch Retorna ou define se as listas de combinação deve apoiar
buscas inteligente.
* DataMember Retorna ou define o membro de dados.
* DataMode Retorna ou define o tipo de ligação de dados usado pelo
controle quando ele está conectado a uma fonte de dados
(somente leitura ou leitura / gravação).
* DataSource Retorna ou define a fonte de dados.
* DragMode Retorna / define um valor que determina se o modo de arrastar
manual ou automático é usado.
* Editable Retorna ou define se o controle permite que na célula de
edição.
* EditMask Retorna ou define a máscara de entrada usado para editar as
células.
* EditMaxLength Retorna ou define o número máximo de caracteres que podem
ser inseridos no editor.
* EditSelLength Retorna ou o número de caracteres selecionados no editor.
* EditSelStart Retorna ou define o ponto de partida do texto selecionado no
editor.
* EditSelText Retorna ou define a string contendo a seleção atual no editor.
* EditText Retorna ou define o texto no editor de celular.
* EditWindow Retorna um identificador para a janela da grade de edição, ou 0
se a grade não está no modo de edição.
* Ellipsis Retorna ou define se o controle irá mostrar reticências (...)
Página - 33
Tutorial Controle VSFlexgrid
depois de longas cadeias.
* Enabled Retorna ou define um valor que determina se um formulário ou
controle pode responder a eventos gerados pelo usuário.
Consulte a documentação do Visual Basic para mais
informações.
* ExplorerBar Retorna ou define se cabeçalhos de coluna são usados para
classificar colunas e / ou mover.
* ExtendLastCol Retorna ou define se a última coluna deve ser ajustada para
ajustar a largura do controle.
* FillStyle Retorna ou define se as alterações ao texto propriedades ou
Format aplicar à célula atual ou a toda a seleção.
* FindRow Retorna o índice de uma linha que contém uma seqüência
especificada ou o valor rowdata.
* FindRowRegex Retorna o índice da linha que contém um jogo ou -1 se
nenhuma correspondência foi encontrada.
* FixedAlignment Retorna ou define o alinhamento para as linhas fixas em uma
coluna.
* FixedCols Retorna ou define o número de colunas fixas (não rolável).
* FixedRows Retorna ou define o número de linhas fixas (não rolável).
* Flags Obtém ou define sinalizadores que afetam o comportamento do
controle.
* FlexDataSource Retorna ou define uma fonte de dados personalizado para o
controle.
* FloodColor Retorna ou define a cor usada para as células de inundação.
* focusRect Retorna ou define o tipo de retângulo de foco a ser exibido em
torno da célula atual.
Font Retorna um objeto Font. Consulte a documentação do Visual
Basic para mais informações.
* FontBold Determina se a fonte está em negrito.
* FontItalic Determina se a fonte é itálico.
* FontName Retorna ou define o nome da fonte.
* FontSize Determina o tamanho da fonte.
* FontStrikethru Determina a strikethru da fonte.
* FontUnderline Determina o tipo de letra é sublinhado.
* FontWidth Retorna ou define a largura da fonte, em pontos.
* ForeColor Retorna ou define a cor de primeiro plano das células não-fixa.
* ForeColorFixed Retorna ou define a cor de primeiro plano das linhas fixas e
colunas.
* ForeColorFrozen Retorna ou define a cor de primeiro plano das linhas e colunas
congeladas.
* ForeColorSel Retorna ou define a cor de primeiro plano das células
selecionadas.
* FormatString Atribui a largura das colunas, alinhamentos e linha fixa e texto
da coluna.
* FrozenCols Retorna ou define o número de congelados (editável, mas não
rolável) colunas.
* FrozenRows Retorna ou define o número de congelados (editável, mas não
rolável) linhas.
* GridColor Retorna ou define a cor usada para desenhar as linhas de grade
entre as células não-fixa.
Página - 33
Tutorial Controle VSFlexgrid
* GridColorFixed Retorna ou define a cor usada para desenhar as linhas de grade
entre as células fixas.
* GridLines Retorna ou define o tipo de linhas a serem traçadas entre as
células não-fixos.
* GridLinesFixed Retorna ou define o tipo de linhas a serem traçadas entre
células fixas.
* GridLineWidth Retorna ou define a largura das linhas da grade, em pixels.
* GroupCompare Retorna ou define o tipo de comparação utilizado quando o
agrupamento de células.
* HighLight Retorna ou define se as células selecionadas serão destaque.
hWnd Retorna um identificador para um formulário ou controle.
Consulte a documentação do Visual Basic para mais
informações.
* IsCollapsed Retorna ou define se uma linha contorno é recolhido ou
expandido.
* IsSearching Retorna um valor que indica se a rede está em modo de busca.
* IsSelected Retorna ou define se uma linha é selecionada (para listbox tipo
de seleções).
* IsSubtotal Retorna ou define se uma linha contém subtotais (em oposição
a dados).
* LeftCol Retorna ou define o índice baseado em zero da coluna não fixa
mais à esquerda exibido no controle.
* MergeCells Retorna ou define se as células com o mesmo conteúdo serão
fundidos em uma única célula.
* MergeCellsFixed Permite aos usuários definir diferentes critérios de fusão de
células fixo vs scrollable.
* MergeCol Retorna ou define se uma coluna terá o seu células mescladas.
* MergeCompare Retorna ou define o tipo de comparação utilizada na mesclagem
de células.
* MergeRow Retorna ou define se uma linha terá suas células mescladas.
* MouseCol Retorna o índice baseado em zero da coluna sob o ponteiro do
mouse.
MouseIcon Retorna ou define um ícone de mouse personalizado. Consulte
a documentação do Visual Basic para mais informações.
MousePointer Retorna ou define um valor que indica o tipo de ponteiro do
mouse exibido quando o mouse está sobre uma parte específica
de um objeto em tempo de execução. Consulte a
documentação do Visual Basic para mais informações.
* MouseRow Retorna o índice baseado em zero da linha sob o cursor do
mouse.
* MultiTotals Retorna ou define se subtotais serão exibidos em uma única
linha, quando possível.
* NodeClosedPicture Retorna ou define a imagem a ser usada para nós contorno
fechado.
* NodeOpenPicture Retorna ou define a imagem a ser usada para nós esboço
aberto.
* OLEDragMode Retorna ou define se o controle pode atuar como uma fonte de
arrastar OLE, automaticamente ou sob o controle do programa.
* OLEDropMode Retorna ou define se o controle pode atuar como um destino de
soltar OLE, automaticamente ou sob o controle do programa.
* OutlineBar Retorna ou define o tipo de barra de esquema que deve ser
exibido.
Página - 33
Tutorial Controle VSFlexgrid
* OutlineCol Retorna ou define a coluna usada para mostrar a árvore de
esboço.
* OwnerDraw Retorna ou define se e quando o controle vai disparar o evento
DrawCell.
* Picture Retorna uma imagem de todo o controle.
* PicturesOver Retorna ou define se o texto e as imagens devem ser
sobrepostos nas células.
* PictureType Retorna ou define o tipo de imagem retornado pela propriedade
Picture.
* Redraw Habilita ou desabilita o redesenho do controle VSFlexGrid.
* RightCol Retorna o índice baseado em zero da última coluna exibida no
controle.
* RightToLeft Retorna ou define se o texto deve ser exibido da direita para a
esquerda em sistemas hebraico e árabe.
* Row Retorna ou define o índice baseado em zero da linha atual.
* rowdata Retorna ou define um user-defined variante associada à
determinada linha.
* RowHeight Retorna ou define a altura da linha especificada em twips.
* RowHeightMax Retorna ou define a altura da linha máximo, em twips.
* RowHeightMin Retorna ou define a altura de linha mínimo, em twips.
* RowHidden Retorna ou define se uma linha está oculto.
* RowIsVisible Retorna se uma determinada linha está dentro da visão.
* RowOutlineLevel Retorna ou define o nível de destaque para uma linha de
subtotal.
* RowPos Retorna ao topo (y) de coordenadas de uma linha em relação à
borda do controle, em twips.
* RowPosition Move-se uma determinada linha para uma nova posição.
* Row Retorna ou define o número total de linhas no controle.
* RowSel Retorna ou define a extensão de um intervalo de linhas.
* RowStatus Retorna ou define um valor que indica se uma linha foi
adicionado, excluído ou modificado.
* ScrollBars Retorna ou define se o controle irá exibir horizontal ou vertical
barras de rolagem.
* ScrollTips Retorna ou define se dicas de ferramentas são mostradas
enquanto o usuário rola verticalmente.
* ScrollTipText Retorna ou define o texto dica de ferramenta exibida enquanto
o usuário rola verticalmente.
* ScrollTrack Retorna ou define a rolagem deve ocorrer enquanto o usuário
move o polegar de rolagem.
* SelectedRow Retorna a posição de uma linha selecionada quando
SelectionMode está definido para flexSelectionListBox.
* SelectedRows Retorna o número de linhas selecionadas, quando
SelectionMode está definido para flexSelectionListBox.
* SelectionMode Retorna ou define se o controle irá selecionar células em um
intervalo livre, por linha, por coluna, ou como uma caixa de
listagem.
* SheetBorder Retorna ou define a cor usada para desenhar a borda em torno
da folha.
* ShowComboButton Retorna ou define se suspensa botões são mostrados quando as
células editáveis são selecionados.
Página - 33
Tutorial Controle VSFlexgrid
* Sort Define uma ordem de classificação para as linhas selecionadas
usando as colunas selecionadas como chaves.
* SortAscendingPicture Obtém ou define uma imagem personalizada para indicar a
direção de classificação coluna.
* SortDescendingPicture Obtém ou define uma imagem personalizada para indicar a
direção de classificação coluna.
* SubtotalPosition Retorna ou define se subtotais deve ser inserido acima ou
abaixo dos dados totalizados.
* TabBehavior Retorna ou define se a tecla tab moverá o foco entre controles
(default VB) ou entre as células da grade.
* Text Retorna ou define o conteúdo da célula selecionada ou
intervalo.
* TextArray Retorna ou define o conteúdo de uma célula identificada por um
único índice.
* TextMatrix Retorna ou define o conteúdo de uma célula identificada pelo
seu coordenadas de linha e coluna.
* TextStyle Retorna ou define efeitos 3D para a exibição de texto em
células não-fixos.
* TextStyleFixed Retorna ou define efeitos 3D para a exibição de texto em
células fixas.
* TopRow Retorna ou define o índice baseado em zero da linha não fixa
mais alto exibido no controle.
* TreeColor Retorna ou define a cor usada para desenhar a árvore de
esboço.
* Value Retorna o valor numérico da célula atual.
* ValueMatrix Retorna o valor numérico de uma célula identificada pelo seu
coordenadas de linha e coluna.
* Version Retorna a versão do controle atualmente carregados na
memória.
* VirtualData Retorna ou define se todos os dados é obtido a partir da fonte
de dados ao mesmo tempo ou conforme a necessidade.
* WallPaper Retorna ou define uma imagem para ser usada como um fundo
para a área de rolagem do controle.
* WallPaperAlignment Retorna ou define o alinhamento da imagem de fundo
WallPaper.
* WordWrap Retorna ou define se o texto mais amplo que sua célula vai
embrulhar.
Métodos
* AddItem Adiciona uma linha para o controle.
* Archive Acrescenta, extratos, ou exclui arquivos de um arquivo
vsFlexGrid.
* AutoSize Redimensiona a largura das colunas ou alturas de linha para
caber o conteúdo da célula.
* BindToArray Liga-se a grade para uma matriz de variantes para ser utilizado
como armazenamento.
* BuildComboList Retorna uma ColComboList string de dados em um conjunto
de registros.
* CellBorder Desenha uma borda ao redor e dentro das células selecionadas.
* CellBorderRange Semelhante ao CellBorder método, mas permite ao usuário
especificar o intervalo em vez de usar o CellBorderRange
seleção.
Página - 33
Tutorial Controle VSFlexgrid
* Clear Limpa o conteúdo do controle. Parâmetros opcionais especificar
o que clara e onde.
* Copy Copiar seleção para a área de transferência.
* Cut Corte seleção para a área de transferência.
* DataRefresh Força o controle a atualizar todos os dados de sua fonte de
dados.
* Delete Exclui a seleção.
* DragRow Começa a arrastar uma linha a uma nova posição.
* EditCell Ativa o modo de edição.
* FinishEditing Termina quaisquer edições pendentes e retorna a grade para o
modo de navegação.
* GetMergedRange Retorna o intervalo de células mesclado que inclui uma
determinada célula.
* GetNode Retorna um objeto do nó de contorno para uma determinada
linha subtotal.
* GetNodeRow Retorna o número de pais de uma linha, primeiro, ou último
filho de um esboço.
* GetSelection Retorna a seleção atual ordenados de forma que ROW1 <=
ROW2 e Col1 <= Col2.
* LoadArray Cargas controlar a com dados de uma matriz Variant ou de
outro controle FlexGrid.
* LoadGrid Carrega o conteúdo da grade e formato de um arquivo.
* LoadGridURL Carrega o conteúdo da grade e formato de uma URL (criado com
SaveGrid).
* OLEDrag Inicia uma operação de arrastar OLE.
* Outline Define um nível de destaque para a exibição de subtotais.
* Paste Cola a seleção da área de transferência.
* PrintGrid Imprime a grade na impressora.
Refresh Força uma completa repaint de um formulário ou controle.
Consulte a documentação do Visual Basic para mais
informações.
* RemoveItem Remove uma linha de controle.
* SaveGrid Salva o conteúdo da grade e formato para um arquivo.
* Select Seleciona um intervalo de células.
* Subtotal Insere linhas com dados de resumo.
Eventos
* AfterCollapse Despedido depois que o usuário expande ou recolhe uma ou mais
linhas em um esboço.
* AfterDataRefresh Ocorre após a atualização/leitura de dados da fonte do registro.
* AfterEdit Ocorre após a saída do modo de edição de células controle.
* AfterMoveColumn Despedido depois de uma coluna é movida arrastando o
ExplorerBar.
* AfterMoveRow Despedido depois de uma briga é movida arrastando o ExplorerBar
ou usar o DragRow método.
* AfterRowColChange Despedido depois de a célula atual (Row, Col) alterações em uma
célula diferente.
* AfterScroll Despedido depois de os pergaminhos de controle.
* AfterSelChange Demitido após o intervalo selecionado ( RowSel , ColSel )
Página - 33
Tutorial Controle VSFlexgrid
alterações.
* AfterSort Despedido depois de uma coluna é classificada por um clique no
ExplorerBar.
* AfterUserFreeze Despedido depois que o usuário altera o número de linhas ou
colunas congeladas.
* AfterUserResize Despedido depois que o usuário redimensiona uma linha ou uma
coluna.
* BeforeCollapse Despedido antes que o usuário expande ou recolhe uma ou mais
linhas em um esboço.
* BeforeDataRefresh Disparou antes de ler dados a partir de fonte de registro.
* BeforeEdit Despedido antes que o controle entra no modo de edição de célula.
* BeforeMouseDown Ocorre antes do controle processar o evento MouseDown.
* BeforeMoveColumn Ocorre antes de uma coluna ser movida arrastando o ExplorerBar.
* BeforeMoveRow Disparou antes de uma linha é movida arrastando o ExplorerBar ou
usar o DragRow método.
* BeforePageBreak Disparados durante a impressão do controle para controlar quebras
de página.
* BeforeRowColChange Disparou antes da célula atual (Row, Col) muda para uma célula
diferente.
* BeforeScroll Disparou antes da rola de controle.
* BeforeScrollTip Disparou antes de uma ponta de rolagem é mostrada de modo que
você pode definir o ScrollTipText propriedade.
* BeforeSelChange Demitido antes do intervalo selecionado ( RowSel , ColSel )
alterações.
* BeforeSort Disparou antes de uma coluna é classificada por um clique no
ExplorerBar .
* BeforeUserResize Despedido antes que o usuário começa a redimensionar uma linha
ou coluna, permite cancelar.
* CellButtonClick Despedido depois que o usuário clica em um botão de células.
* CellChanged Demitido após a mudança de uma célula conteúdo.
* ChangeEdit Despedido depois de o texto no editor mudou.
* click Este evento ocorre quando o usuário pressiona e solta o botão do
dispositivo de mouse sobre um objeto. Consulte a documentação do
Visual Basic para mais informações.
* ComboCloseUp Demitido antes do built-in combobox fecha.
* ComboDropDown Demitido antes do built-in combobox cai para baixo.
* Compare Disparado quando o Sort propriedade é definida como
flexSortCustom, para permitir a comparação costume de linhas.
DblClick Este evento ocorre quando o usuário clica duas vezes um objeto.
* DrawCell Disparado quando a propriedade OwnerDraw é configurado para
permitir desenho de célula personalizado.
* EndAutoSearch Disparado quando a grade sai do modo AutoSearch.
* EnterCell Disparado quando uma célula se torna ativo.
* Error Despedido depois de um erro de acesso a dados.
* FilterData Despedido depois de um valor é lido e antes de um valor é gravado
em um conjunto de registros para permitir a formatação
personalizada.
* GetHeaderRow Disparados durante a impressão do controle para definir linhas de
cabeçalho repetição.
Página - 33
Tutorial Controle VSFlexgrid
KeyDown Este evento ocorre quando o usuário pressiona uma tecla enquanto
um objeto tem o foco.
* KeyDownEdit Disparado quando o usuário pressiona uma tecla no modo de edição
de célula.
KeyPress Este evento ocorre quando o usuário pressiona e libera uma chave
ANSI.
* KeyPressEdit Disparado quando o usuário pressiona uma tecla no modo de edição
de célula.
KeyUp Ocorre quando o usuário solta uma tecla.
* KeyUpEdit Disparado quando o usuário pressiona uma tecla no modo de edição
de célula.
* LeaveCell Demitido antes das alterações célula atual em uma célula diferente.
MouseDown Ocorrer quando o usuário pressiona (MouseDown) um botão de
mouse.
MouseMove Ocorre quando o usuário move o mouse.
MouseUp Ocorrer quando o usuário libera (MouseUp) um botão de mouse.
* OLECompleteDrag Despedido depois de uma queda de informar o componente de
origem que uma ação de arrastar ou foi realizado ou cancelado.
* OLEDragDrop Disparado quando um componente da fonte é jogada sobre uma
componente de destino.
* OLEDragOver Disparado quando um componente é arrastado sobre o outro.
* OLEGiveFeedback Demitido após cada OLEDragOver evento para permitir que o
componente de origem para fornecer feedback visual para o usuário.
*
OLESetCustomDataObject
Despedido depois de uma operação de arrastar OLE é iniciado
(manualmente ou automaticamente), permite que você forneça uma
DataObject personalizado.
* OLESetData Dispararam sobre o componente de origem quando um componente
de destino executa o método GetData do objeto DataObject da
fonte.
* OLEStartDrag Despedido depois de uma operação de arrastar OLE é iniciado
(manualmente ou automaticamente).
* RowColChange Disparado quando a célula atual ( Row , Col ) muda para uma
célula diferente.
* SelChange Demitido após o intervalo selecionado ( RowSel , ColSel )
alterações.
* SetupEditStyle Demitido antes do EditWindow é criada, usada para modificar
estilos janela.
* SetupEditWindow Demitido após a EditWindow foi criado e antes que ela seja exibida.
* StartAutoSearch Disparado quando a grade entra em modo de pesquisa
automática.
* StartEdit Disparado quando o controle entra no modo de edição de célula
(após BeforeEdit ).
* StartPage Disparou antes de cada página enquanto a grade está sendo
impresso.
* ValidateEdit Disparou antes de sair do modo de controle de edição de célula.
Demonstração calculadora
Esta demonstração mostra como o VSFlexString controle pode ser usado para
implementar uma expressão matemática avaliador. Você pode usar esse projeto
Página - 33
Tutorial Controle VSFlexgrid
como está, para permitir aos usuários inserir expressões em vez de constantes
numéricas, ou usá-lo como ponto de partida para um avaliador mais sofisticados
com variáveis e funções personalizadas.
Aqui está como a aplicação final será:
Passo 1: Criar os controles
Iniciar um novo projeto Visual Basic. Botão direito do mouse na caixa de
ferramentas e selecione "Components ...", em seguida, escolher o VSFlexString
controle da lista. O VSFlexString ícone será adicionado à caixa de ferramentas
Visual Basic. (Se o controle não aparece na lista, não foi registrado em seu
computador. Neste caso, clique no botão "Procurar" e selecione o arquivo
VSSTR8.OCX para registrá-lo.)
Criar um VSFlexString objeto na forma clicando no ícone na caixa de
ferramentas, em seguida, soltando-o no formulário. Também criar duas caixas de
texto e um botão de comando. Organizar os controles e redimensionar o
formulário para que ele se parece com a foto acima.
Clique no VSFlexString controle e uso do Visual Basic para janela de
propriedades mudar seu nome para "fs".
Passo 2: Avaliando Expressões
Este projecto consiste principalmente de uma única função recursiva que
usa o VSFlexString controle para avaliar as expressões digitadas na caixa de
texto.
Essa função, que vamos escrever mais tarde, precisa ser chamada quando
o usuário clica no botão. Dê um duplo clique no botão e digite o seguinte no
manipulador de eventos:
"Avaliar a expressão em Text1 e mostrar o resultado em Text2
Sub Command1_Click ()
Texto2 = Format (Eval (Text1), "0.00")
End Sub
Isso deixa apenas os Eval função, que recebe uma string contendo uma
expressão matemática como um parâmetro e retorna um valor. Aqui está o
código:
Function Eval (ByVal s As String) As Double
Dim s1, $ s2, $ s3
Dim v #
"Prepare-se para analisar
fs = Trim (s) 'ponto de interrupção definido nesta linha
"Interpretar sub-expressões entre parênteses
fs.Pattern = "{.*}({[^()]*}){.*}"
if fs.MatchCount> 0 Then
s1 = fs.TagString (0) 'coisas para a esquerda
s2 = fs.TagString (1) 'sub-expressão
s3 = fs.TagString (2) 'para a direita
Página - 33
Tutorial Controle VSFlexgrid
Debug.Print "match"; s1 "; #<(>#"; s2; "#<)>#"; s3
v = Eval (s2) "avaliar a expressão sub-
Eval = Eval (s1 & Format (v) & s3)
exit function
End If
"Somar e subtrair (de alta prioridade operadores)
fs.Pattern = "{.+}{[+-]}{.+}"
if fs.MatchCount> 0 Then
s1 = fs.TagString (0) 'operando 1
s2 = fs.TagString (2) "operando 2
Debug.Print "match"; s1 "; #<+->#"; s2
Fs.TagString Select Case (1)
Case "+": Eval = Eval (s1) + Eval (s2)
Case "-": = Eval Eval (s1) - Eval (s2)
End Select
exit function
End If
'Multiplicar e dividir (de menor prioridade operadores)
fs.Pattern = "{.+}{[*/]}{.+}"
if fs.MatchCount> 0 Then
s1 = fs.TagString (0) 'operando 1
s2 = fs.TagString (2) "operando 2
Debug.Print "match"; s1 "; #<*/>#"; s2
Fs.TagString Select Case (1)
"*" Caso: Eval = Eval (s1) * Eval (s2)
Caso "/": Eval = Eval (s1) / Eval (s2)
End Select
exit function
End If
"Poder (de menor prioridade operador)
fs.Pattern = "{.+}^{.+}"
Se fs.MatchCount> 0 Then
s1 = fs.TagString (0) 'operando 1
fs.TagString = s2 (1) 'operando 2
Debug.Print "match"; s1; "#<^>#"; s2
Eval = Eval (s1) ^ Eval (s2)
exit function
End If
'Número (nada combinado, de modo que este deve ser um número)
fs.Pattern = "^-?[ 0-9] + .? [0-9] * $ "
if fs.MatchCount> 0 Then
Eval = Val (s)
else
Debug.Print "Erro Eval:"; fs: Beep
End If
End Function
Esta rotina trata todos os operadores básicos tendo em conta a sua
precedência (isto é, o poder, antes da divisão antes de soma). Ele também
lida com sub-expressões contidas entre parênteses.
O Eval função consiste em um padrão que se repete. O VSFlexString é
utilizado para analisar cada expressão em seus componentes, de acordo com
regras de prioridade do operador, e Eval é chamado recursivamente para
avaliar cada componente. Este processo continua até que um número for
encontrado e avaliados usando built-in do VB Val função.
O padrão típico tem este formato: "{.+}{[*/]}{.+}". O "+ {.}" No
início e no final da partida padrão corre de um ou mais personagens. O
"{[*/]}" corresponde a um operador que separa as partes esquerda e direita
da expressão.
Página - 33
Tutorial Controle VSFlexgrid
Passo 3: Tentando-o para fora
Pressione F5 para executar o projeto e digite uma expressão como "(2 *
(5 +3) 144 ^ 0,5) / 7". Em seguida, clique no botão de comando eo
resultado (4) aparecerá na segunda caixa de texto. A janela de depuração irá
mostrar um traço da Eval função. Aqui está uma versão comentada da
saída:
match: (2 * 5 +3 #<(># #<)># 144 ^ 0,5) / 7 found sub-
expression
match: 5 #<+-># 3 Found +
match: #<(># 2 * 8 144 ^ 0,5 #<)># / 7 found sub-expression
match: 2 * 8 #<+-># 144 ^ 0,5 found +
match: 144 #<^># 0,5 found ^
match: 2 #<*/># 8 found *
match: 28 #<*/># 7 found /
O rastreamento mostra a ordem em que foram encontrados resultados e
operações executadas. Você pode querer colocar um ponto de interrupção no
topo da Eval de rotina e ver o que acontece após cada jogo.
Passo 4: aperfeiçoar a demonstração
Como um exercício para o leitor, tente adicionar suporte para variáveis
definidas pelo usuário e funções, tais como Sin e Cos.
Página - 33

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Python Basics
Python BasicsPython Basics
Python Basics
 
Variable and constants in Vb.NET
Variable and constants in Vb.NETVariable and constants in Vb.NET
Variable and constants in Vb.NET
 
Keywords, identifiers and data type of vb.net
Keywords, identifiers and data type of vb.netKeywords, identifiers and data type of vb.net
Keywords, identifiers and data type of vb.net
 
If and select statement
If and select statementIf and select statement
If and select statement
 
Basic C Programming language
Basic C Programming languageBasic C Programming language
Basic C Programming language
 
OpenOffice.org Writer: The Basics
OpenOffice.org Writer: The BasicsOpenOffice.org Writer: The Basics
OpenOffice.org Writer: The Basics
 
C++ string
C++ stringC++ string
C++ string
 
HTML - Form
HTML - FormHTML - Form
HTML - Form
 
Algorithms and flowcharts ppt (seminar presentation)..
 Algorithms and flowcharts  ppt (seminar presentation).. Algorithms and flowcharts  ppt (seminar presentation)..
Algorithms and flowcharts ppt (seminar presentation)..
 
C# program structure
C# program structureC# program structure
C# program structure
 
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
 
Id and class selector
Id and class selectorId and class selector
Id and class selector
 
Basic controls of Visual Basic 6.0
Basic controls of Visual Basic 6.0Basic controls of Visual Basic 6.0
Basic controls of Visual Basic 6.0
 
Python Basics
Python BasicsPython Basics
Python Basics
 
Basics of Java
Basics of JavaBasics of Java
Basics of Java
 
Vb basics
Vb basicsVb basics
Vb basics
 
C++
C++C++
C++
 
Files in c++ ppt
Files in c++ pptFiles in c++ ppt
Files in c++ ppt
 
Python basics
Python basicsPython basics
Python basics
 
Control statements
Control statementsControl statements
Control statements
 

Semelhante a Controle VSFlexgrid

Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#André Luiz
 
Como criar uma calculadora no Game Maker 8.0 (GML Console)
Como criar uma calculadora no Game Maker 8.0 (GML Console)Como criar uma calculadora no Game Maker 8.0 (GML Console)
Como criar uma calculadora no Game Maker 8.0 (GML Console)Rodrigo Cavalcante
 
Exercícios de mysql
Exercícios de mysqlExercícios de mysql
Exercícios de mysqlLeo Frazão
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphihildebertomelo
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Felipe Pimentel
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
Passo a-passo-pedidos
Passo a-passo-pedidosPasso a-passo-pedidos
Passo a-passo-pedidosDiego Alves
 
Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formulariosguestd9e271
 
Integração dados prática ppt
Integração dados prática pptIntegração dados prática ppt
Integração dados prática pptRodrigo Ribeiro
 
Apostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a ParteApostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a ParteIlton Barbosa
 
Apostila excel 2010 avançado
Apostila excel 2010 avançadoApostila excel 2010 avançado
Apostila excel 2010 avançadoIzabella Werneck
 
Manual microsoft-access-2007
Manual microsoft-access-2007Manual microsoft-access-2007
Manual microsoft-access-2007Klever Pereira
 

Semelhante a Controle VSFlexgrid (20)

Vba cadastro de clientes
Vba   cadastro de clientesVba   cadastro de clientes
Vba cadastro de clientes
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#
 
Ns tutorial so
Ns tutorial soNs tutorial so
Ns tutorial so
 
14 patterns-curso gxxbr
14 patterns-curso gxxbr14 patterns-curso gxxbr
14 patterns-curso gxxbr
 
Apostila Software Arena
Apostila Software ArenaApostila Software Arena
Apostila Software Arena
 
Access
AccessAccess
Access
 
Como criar uma calculadora no Game Maker 8.0 (GML Console)
Como criar uma calculadora no Game Maker 8.0 (GML Console)Como criar uma calculadora no Game Maker 8.0 (GML Console)
Como criar uma calculadora no Game Maker 8.0 (GML Console)
 
Exercícios de mysql
Exercícios de mysqlExercícios de mysql
Exercícios de mysql
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
Passo a-passo-pedidos
Passo a-passo-pedidosPasso a-passo-pedidos
Passo a-passo-pedidos
 
04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf
 
Projeto locadora
Projeto locadoraProjeto locadora
Projeto locadora
 
Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formularios
 
Integração dados prática ppt
Integração dados prática pptIntegração dados prática ppt
Integração dados prática ppt
 
Apostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a ParteApostila PhP com Wamp 3a Parte
Apostila PhP com Wamp 3a Parte
 
Apostila excel 2010 avançado
Apostila excel 2010 avançadoApostila excel 2010 avançado
Apostila excel 2010 avançado
 
Manual microsoft-access-2007
Manual microsoft-access-2007Manual microsoft-access-2007
Manual microsoft-access-2007
 
Aula1
Aula1Aula1
Aula1
 

Controle VSFlexgrid

  • 1. Tutorial Controle VSFlexgrid Demonstração Editar Este exemplo começa com uma grade de entrada de dados básicos, em seguida, adiciona as seguintes características: formatação de dados As caixas de seleção As listas suspensas As máscaras de entrada validação de dados complexos Suporte a área de transferência Aqui está o que a aplicação final será semelhante a: Passo 1: Criar a Controle Iniciar um novo projeto Visual Basic, incluindo VSFlexGrid 8.0 (Se você não sabe como adicionar arquivos OCX para um projeto, consulte a documentação do Visual Basic). O ícone VSFlexGrid será adicionado à caixa de ferramentas Visual Basic. Criar um VSFlexGrid objeto no formulário, clicando no ícone VSFlexGrid na caixa de ferramentas, em seguida, clicando no formulário e arrastando até que o objeto é o tamanho adequado. Em seguida, use a janela de propriedades do Visual Basic para definir as propriedades de controle a seguir: (Name) = fg Editável = True Cols = 5 FixedCols = 0 FormatString = "Product = | Região | Pessoa Sales |" & _ "> Valor Vendido | Bonus" É isso aí. Pressione F5 para executar o projeto, e você pode começar a digitar os dados no controle. Pressione F2 ou a barra de espaço para editar entradas existentes, ou simplesmente digitar novas entradas de empresas existentes. Passo 2: Formatação de dados Ao exibir valores numéricos ou de data, você normalmente irá querer adotar um formato consistente para os valores. O VSFlexGrid permite que você faça isso usando a propriedade ColFormat . Esta propriedade permite atribuir um formato a Página - 33
  • 2. Tutorial Controle VSFlexgrid cada coluna. Os formatos são similares aos reconhecidos pela função Format do Visual Basic. A propriedade ColFormat deve ser atribuído durante a execução. Um bom lugar para fazer isso é no evento Form_Load, como mostra abaixo: Private Sub Form_Load () 'Column formato 3 (quantidade vendida) para exibir moeda fg.ColFormat (3) = "$#,###. 00 " End Sub Este código atribui um formato de coluna 3 (quantidade vendida). O formato especifica que os valores devem ser exibidos com um sinal de moeda, separadores de milhar e duas casas decimais. A propriedade ColFormat não afeta o conteúdo da célula, apenas a maneira que é exibida. Você pode alterar o formato livremente sem modificar os dados subjacentes. Passo 3: caixas de seleção Ao exibir valores booleanos (True / False), você tem a opção de usar caixas de seleção em vez de True / False cordas ou 1 / 0 valores. Isto tem a vantagem de impedir que os usuários insiram valores ruins. Coluna 4 (Bonus) contém valores boolean (ou alguém recebe um bônus ou não). Para exibir os valores como caixas de seleção, definir A propriedade ColDataType para flexdtBoolean. O controle irá automaticamente exibir e gerenciar as caixas de seleção. A propriedade ColDataType deve ser atribuído durante a execução. Mudar a rotina Form_Load conforme demonstrado abaixo: Private Sub Form_Load () 'Column formato 3 (quantidade vendida) para exibir moeda fg.ColFormat (3) = "$#,###. 00 " 'Make coluna 4 (Bonus) uma coluna de boolean fg.ColDataType (4) = flexdtBoolean End Sub Os usuários podem alternar as caixas de seleção clicando neles ou selecionando-os com o teclado e digite bater ou espaço. Pressione F5 para executar o projeto novamente, digite umas quantias poucas de vendas e dar bônus para algumas pessoas. Passo 4: Suspensa Listas Inserção de dados é um tedioso e propenso a erros processo. Listas drop- down são grandes porque minimizar a quantidade de digitar você deve fazer, reduzir a chance de erros e aumentar a consistência dos dados. Vamos supor que o nosso projeto de exemplo envolve apenas as vendas de três produtos (Applets, Widgets e Gadgets), em quatro regiões (Norte, Sul, Leste e Oeste), e que há três pessoas a tempo completo de vendas (Mary, Sarah, e Paula). Digitando dados repetitivos seria ineficiente e propenso a erros. Uma abordagem muito melhor seria usar listas suspensas para permitir aos usuários escolher a entrada apropriada a partir de listas. O VSFlexGrid permite atribuir uma lista de opções para cada coluna usando a propriedade ColComboList. A lista consiste em uma string com escolhas, separados por caracteres de pipe ("|"). A propriedade ColComboList deve ser atribuído durante a execução. Mudar a rotina Form_Load conforme demonstrado abaixo: Private Sub Form_Load () 'Column formato 3 (quantidade vendida) para exibir moeda fg.ColFormat (3) = "$#,###. 00 " 'Make coluna 4 (Bonus) uma coluna de boolean Página - 33
  • 3. Tutorial Controle VSFlexgrid fg.ColDataType (4) = flexdtBoolean 'Atribuir listas de combinação para cada coluna fg.ColComboList (0) = "Applets | wahoos | Gadgets" fg.ColComboList (1) = "Norte | Sul | Leste | Oeste" fg.ColComboList (2) = "| Mary | Paula | Sarah" End Sub Observe como a última ColComboList string começa com uma tubulação. Isso permitirá que os usuários digitem nomes adicionais que não estão na lista. Em outras palavras, esses valores serão editados usando uma combinação drop-down, em oposição a uma lista drop-down como os outros. Há opções de sintaxe para criar multi-colunas listas e listas traduzidas também. Consulte a referência de controle para obter mais detalhes. Pressione F5 para executar o projeto novamente, em seguida, mover o cursor. Quando você move o cursor para uma das colunas que têm listas de combinação, um botão drop-down torna-se visível. Você pode clicar sobre ele para mostrar a lista, ou simplesmente digitar a primeira letra de uma entrada para destacá-lo na lista. Passo 5: máscaras de entrada Ao escolher os dados a partir de uma lista, geralmente há pouca necessidade de validação de dados. Quando os valores de entrada são digitados, no entanto, muitas vezes você vai querer ter certeza de que é válido. No nosso exemplo, nós gostaríamos de evitar que os usuários digitem texto ou valores negativos na coluna 3 (quantidade vendida). Você pode fazer isso usando A propriedade ColEditMask, que atribui uma máscara de entrada para uma coluna que governa o que o usuário pode digitar nesse campo. A propriedade ColEditMask deve ser atribuído durante a execução. Mudar a rotina Form_Load conforme demonstrado abaixo: Private Sub Form_Load () 'Column formato 3 (quantidade vendida) para exibir moeda fg.ColFormat (3) = "$#,###. 00 " 'Atribuir editar máscara para coluna 3 (quantidade vendida) fg.ColEditMask (3) = "######.##" 'Make coluna 4 (Bonus) uma coluna de boolean fg.ColDataType (4) = flexdtBoolean 'Atribuir listas de combinação para cada coluna fg.ColComboList (0) = "Applets | wahoos | Gadgets" fg.ColComboList (1) = "Norte | Sul | Leste | Oeste" fg.ColComboList (2) = "| Mary | Paula | Sarah" End Sub A máscara de editar garante que o usuário não digitar nada na coluna 3, com excepção números. A sintaxe para A propriedade ColEditMask permite especificar vários tipos de entrada. Consulte a referência de controle para obter mais detalhes. Passo 6: Validação de dados complexos Máscaras de entrada são convenientes para ajudar a entrada de dados de usuários formatados corretamente. Eles também ajudam com tarefas simples de validação de dados. Em muitas situações, no entanto, você pode precisar executar mais complexa validação de dados. Nestes casos, você deve usar o ValidateEdit evento. Por exemplo, digamos que alguns regulamentos anti-trust nos impedem de ser capaz de vender Applets na região Norte. Para evitar erros de entrada de Página - 33
  • 4. Tutorial Controle VSFlexgrid dados e processos caros, queremos evitar que os usuários insiram esta combinação para o controle. Podemos fazê-lo com a seguinte rotina: Private Sub fa_ValidateEdit Row (ByVal As Long, _ ByVal Col As Long, _ Cancel As Boolean) RGN Dim String, prd As String "Coletar os dados que precisamos Selecione Col Caso Case 0 prd = fg.EditText RGN = fg.TextMatrix (Linha, 1) Caso 1 prd = fg.TextMatrix (Linha, 0) RGN = fg.EditText End Select "Nós não podemos vender Applets na Região Norte ... Se prd = "Applets" E RGN = "Norte" Então MsgBox "Regulamento 12333AS/SDA-23 #" & _ "Impede-nos de vender" & prd & _ "Na" & RGN e "Região." & _ "Por favor, verificar a entrada." Cancel = True End If End Sub A função começa por recolher a entrada que precisa ser validado. Note-se que os valores sendo verificados são recuperados usando a propriedade EditText . Isto é necessário porque eles ainda não foram aplicados ao controle. Se o teste falhar, a função exibe um aviso e, em seguida, define o parâmetro Cancel para True, que cancela as edições e coloca o celular de volta no modo de edição para que o usuário possa tentar novamente. Pressione F5 para executar o projeto novamente, em seguida, tentar introduzir alguns valores ruins. Você verá que o controle será rejeitá-los. Passo 7: Suporte Área de Transferência A área de transferência do Windows é um dispositivo muito útil para transferir informações entre aplicativos. Adição de suporte a projetos da área de transferência VSFlexGrid é muito fácil. Só é preciso o seguinte código: Fg_KeyDown Sub privado (KeyCode%,% Shift) As Boolean Dim Cpy, Pst As Boolean "Cópia: ctrl-C, ctrl-X, ctrl-ins Se KeyCode = vbKeyC E Shift = 2 Então Cpy = True Se KeyCode = vbKeyX E Shift = 2 Então Cpy = True Se KeyCode = vbKeyInsert E Shift = 2 Então Cpy = True 'Colar: ctrl-V, shift-ins Se KeyCode = vbKeyV E Shift = 2 Então Pst = True Se KeyCode = vbKeyInsert E Shift = 1 Então Pst = True "Fazê-lo Se Cpy seguida Clipboard.Clear Clipboard.SetText fa.Clip Então ElseIf Pst fg.Clip = Clipboard.GetText End If End Sub A rotina lida com todos os comandos de teclado padrão relacionadas com a área de transferência: CTRL-X, CTRL-C, ou CTRL-INS para copiar, e CTRL-V ou Página - 33
  • 5. Tutorial Controle VSFlexgrid SHIFT-INS para colar. O verdadeiro trabalho é feito pelo clipe de propriedade, que se encarrega de copiar e colar o texto da área de transferência na faixa atual. Outro recurso do Windows grande que está intimamente relacionado com operações de área de transferência é OLE Drag and Drop. VSFlexGrid tem duas propriedades, OLEDragMode e OLEDropMode, que ajudam a implementar este recurso. Basta definir as propriedades para as configurações automáticas e você será capaz de arrastar as seleções pelas bordas e soltá-los em outros aplicativos como o Microsoft Excel, ou faixas de arrastar de uma planilha do Excel e soltá-los no VSFlexGrid controle. Pressione F5 para executar o projeto novamente, tente copiar e colar alguns dados. Você vai notar que é possível para colar dados inválidos, porque o nosso código colar não faz qualquer validação de dados. Este é deixado como um exercício para o leitor. Demonstração esquema Este exemplo mostra como você pode usar o VSFlexGrid como um delineador para mostrar estruturado (ou hierárquica) de dados. Quando usado como um delineador, o VSFlexGrid controle se comporta como um controle Tree, exibindo nós que podem ser recolhidas ou expandidas para mostrar ramos contendo dados subordinado. A amostra lê arquivos INI várias. E apresenta cada um como um nó. Cada nó do arquivo tem uma coleção de sub-nós que contém seções dentro do arquivo correspondente. INI. Cada nó seção contém ramos que mostram os sinais e as configurações armazenadas na seção correspondente. Aqui está como o projeto final será: Passo 1: Criar a Controle Passo 2: Ler os dados e construir o Contorno Passo 3: Use o Esboço Passo 4: Mouse personalizado e manipulação de teclado Passo 1: Criar a Controle Iniciar um novo projeto Visual Basic, incluindo VSFlexGrid 8,0 (Se você não sabe como adicionar arquivos OCX para um projeto, consulte a documentação Página - 33
  • 6. Tutorial Controle VSFlexgrid do Visual Basic). O ícone VSFlexGrid será adicionado à caixa de ferramentas Visual Basic. Criar um objeto VSFlexGrid no formulário, clicando no ícone VSFlexGrid na caixa de ferramentas, em seguida, clicando no formulário e arrastando até que o objeto é o tamanho adequado. Em seguida, use a janela de propriedades do Visual Basic para definir as propriedades de controle a seguir: (Name) = fg Cols = 3 ExtendLastCol = True FixedCols = 0 Linhas = 1 FormatString = "Node | Símbolo | Setting" OutlineBar = flexOutlineBarComplete GridLines = flexGridNone MergeCells = flexMergeSpill AllowUserResising = flexResizeColumns Vamos definir a propriedade OutlineBar será capaz de ver a árvore de esboço. Você pode criar contornos, sem árvores, mas o usuário não será capaz de recolher e expandir os nós (a menos que você escrever código para fazê-lo). Nós também definir a propriedade MergeCells para flexMergeSpill, assim entradas tempo pode se estender para as células vazias adjacentes. Isso é muitas vezes uma boa configuração para usar na construção de contornos. Agora o controle está pronto. Podemos começar a adicionar alguns códigos para ele. Passo 2: Ler os dados e construir o Contorno Dê um duplo clique no formulário e adicione o seguinte código ao evento Form_Load: Private Sub Form_Load () 'Suspender pintura para aumentar a velocidade fg.Redraw = False "Preencher o controle AddNode "Win.ini" AddNode "System.ini" AddNode "VB.INI" 'Expandir esboço, redimensionar para caber, colapso esquema fg.Outline -1 fg.AutoSize 1, 2 fg.Outline 1 "Pintura está de volta nos fg.Redraw = True End Sub A rotina começa definindo o Redraw propriedade para False. Esta pintura suspende enquanto nós preencher o controle, e aumenta a velocidade significativamente. Em seguida, o AddNode rotina é chamado para preencher o controle com o conteúdo dos três arquivos INI que é provável que você tem no seu sistema:. Win, Sistema e Vb. O AddNode rotina é mostrada abaixo. Finalmente, o esboço é totalmente expandido, o método AutoSize é chamado para ajustar a largura das colunas ao seu conteúdo, eo esboço é recolhido de volta para o nível 1 para o arquivo e nós seção será exibida. A rotina AddNode faz a maior parte do trabalho. Ele lê um arquivo. INI e preenche o controle, a criação de nós e ramos de acordo com o conteúdo do arquivo. Aqui está a rotina AddNode : Página - 33
  • 7. Tutorial Controle VSFlexgrid Sub AddNode(inifile As String) Dim ln As String, p As Integer With fg ' create file node .AddItem inifile .IsSubtotal(Rows - 1) = True .Cell(flexcpFontBold, Rows - 1, 0) = True ' read ini file Open "c:windows" & inifile For Input As #1 While Not EOF(1) Line Input #1, ln ' if this is a section, add node If Left(ln, 1) = "[" Then .AddItem Mid(ln, 2, Len(ln) - 2) .IsSubtotal(Rows - 1) = True .RowOutlineLevel(Rows - 1) = 1 .Cell(flexcpFontBold, Rows - 1, 0) = True ' if this is regular data, add branch ElseIf InStr(ln, "=") > 0 Then p = InStr(ln, "=") .AddItem vbTab & Left(ln, p - 1) & vbTab & Mid(ln, p + 1) End If Wend Close #1 End With End Sub A rotina AddNode é um pouco longa, mas é bastante simples. Começa por adicionar uma linha contendo o nome do arquivo. INI que está sendo lido. Ela marca a linha como um subtotal usando a propriedade IsSubtotal para o controle irá reconhecê-lo como um nó de contorno. Em seguida, a rotina lê o arquivo linha por linha INI. Nomes de seção são colocados entre colchetes. Adicionar os códigos ao controle e em seguida, marca- los como subtotais da mesma forma que marcou o nome do arquivo. A diferença é que aqui ele também define a propriedade RowOutlineLevel 1, indicando que este nó é um filho do anterior nível-0 nó (o que contém o nome do arquivo). Finalmente, as linhas que contêm dados são analisadas em tokens e configurações e, em seguida, adicionado ao controle. Eles não são marcados como subtotais. Passo 3: Use o Esboço Pressione F5 para executar o projeto, e você vai ver o contorno em ação. Se você clicar em um dos nós, ele irá expandir ou recolher para mostrar ou ocultar os dados sob ele. Você também pode shift-clique em um nó para expandir todo o contorno para o nível do nó, ou shift-ctrl-clique em um nó a entrar em colapso todo o contorno a esse nível. Por exemplo, se você shift-clique em um nome de arquivo, você verá todos os nomes de arquivos e todas as seções, mas não há dados token. Se você shift-ctrl-clique sobre um nome de arquivo, você verá todos os nomes de arquivo, e nada mais. Página - 33
  • 8. Tutorial Controle VSFlexgrid Passo 4: Mouse personalizado e manipulação de teclado O Controle VSFlexGrid fornece a expandir e recolher para você, mas você pode estender e personalizar o seu comportamento. Cada vez que um ramo é expandido ou recolhido, o controle dispara os eventos BeforeCollapse e AfterCollapse assim que você pode tomar medidas em resposta a isso. Além disso, você pode usar a propriedade IsCollapsed para obter e definir o estado de colapso de cada ramo no código. Por exemplo, o seguinte código permite que os usuários para expandir e recolher galhos esboço clicando duas vezes em uma linha própria, em vez de na barra de contorno. Aqui está o código para fazer isso: Private Sub fg_DblClick () Dim r As Long Com fg r = Row. If. IsCollapsed (r) = flexOutlineCollapsed Then . IsCollapsed (r) = flexOutlineExpanded Else . IsCollapsed (r) = flexOutlineCollapsed End If End With End Sub O código verifica a linha atual. Se estiver recolhida, então ele expande. Caso contrário, ele desmorona-lo. Desmoronar uma linha de detalhes desmorona seu nó pai inteiro. Podemos usar o mesmo código para programar a interface do teclado. Nós acabamos de chamar o evento DblClick a partir do evento KeyPress: Private Sub fg_KeyPress (KeyAscii As Integer) if KeyAscii = vbKeyReturn then fa_DblClick End Sub Isso fecha o demo de destaques. Pressione F5 para executar o projeto, uma última vez e teste o mouse adicional e manuseio do teclado. Análise de dados de demonstração Esta amostra começa com uma grade que contém dados de vendas de diferentes produtos, regiões e vendedores, em seguida, adiciona as seguintes características:  Layout dinâmico (a ordem das colunas)  Classificação automática  Celular fusão  Subtotais automáticos  Esboçando Aqui está como a aplicação final será: Página - 33
  • 9. Tutorial Controle VSFlexgrid Passo 1: Criar a Controle Passo 2: Inicializar e preencher a grade Passo 3: Classificação automática Passo 4: Célula Mesclando Passo 5: Subtotais automáticos Passo 6: Estrutura de Tópicos Passo 1: Criar a Controle Iniciar um novo projeto Visual Basic, incluindo VSFlexGrid 8,0 (Se você não sabe como adicionar arquivos OCX para um projeto, consulte a documentação do Visual Basic). O ícone VSFlexGrid será adicionado à caixa de ferramentas Visual Basic. Criar um VSFlexGrid objeto no formulário, clicando no ícone VSFlexGrid na caixa de ferramentas, em seguida, clicando no formulário e arrastando até que o objeto é o tamanho adequado. Em seguida, use a janela de propriedades do Visual Basic para definir o nome do controle para fg. Passo 2: Inicializar e preencher a grade Existem muitos métodos disponíveis para preencher um VSFlexGrid controle. Muitas vezes, você simplesmente conectá-lo a um banco de dados usando o DataSource propriedade. Ou você pode carregar os dados de um arquivo usando o LoadGrid método. Finalmente, você pode usar o AddItem método para adicionar linhas ou o celular de propriedade para atribuir dados às células. Nesta demonstração, iremos gerar alguns dados aleatórios e atribuí-lo ao controle usando a propriedade cell. Isto é feito no evento Form_Load: Private Sub Form_Load () 'Inicializar o controle fg.Cols = 4 fg.FixedCols = 0 fg.GridLinesFixed = flexGridExplorer fg.AllowUserResizing = flexResizeBoth fg.ExplorerBar = flexExMove 'Define alguns dados da amostra Const slProduct = "Produto | Flautas | Saxofones | Baterias |" & _ "Guitarras | Trombones | Teclados | Microfones" Página - 33
  • 10. Tutorial Controle VSFlexgrid Const slAssociate = "Associado | John | Paul | Mike | Paula | Sylvia | Donna" Const slRegion = "Região | Norte | Sul | Oriente | West" Const slSales = "Vendas | 14323 | 2532 | 45342 | 43432 | 75877 | 4232 | 4543" "Preencher o controle com os dados FillColumn fg, 0, slProduct FillColumn fg, 1, slAssociate FillColumn fg, 2, slRegion FillColumn fg, 3, slSales fg.ColFormat (3) = "#,###" End Sub Esta rotina utiliza uma função auxiliar chamada FillColumn que preenche uma coluna inteira com dados retirados aleatoriamente de uma lista. Esta é uma função útil para demos, e aqui está o código: Sub FillColumn (fg Como VSFlexGrid, ByVal c As Long, ByVal s As String) Dim r As Long, i As Long, cnt As Long ReDim lst (0) As String 'Construir lista de valores de dados cnt = 0 i = InStr (s, "|") Enquanto i> 0 lst (cnt) = Left (s, i - 1) s = Mid (s, i + 1) cnt = cnt + 1 ReDim Preserve lst (cnt) As String i = InStr (s, "|") Dirigir-se lst (cnt) = s "Definir os valores a escolher aleatoriamente a partir da lista fg.Cell (flexcpText, 0, c) = lst (0) Para fg.FixedRows r = Para fa.Rows - 1 i = (Rnd () * 1000) Mod cnt + 1 fg.Cell (flexcpText, r, c) = lst (i) Próximo "Fazer uma autosize na coluna que acabou de preencher fg.AutoSize c,,, 300 End Sub Isto conclui a primeira etapa. Pressione F5 para executar o projeto, e você verá uma grade carregada com dados. Porque a propriedade ExplorerBar é definida como flexExMove, você pode arrastar os cabeçalhos de coluna em torno de reordenar as colunas. Os dados apresentados são quase inúteis, no entanto, porque não é apresentado de forma organizada. Vamos corrigir isso a seguir. Passo 3: Classificação automática O primeiro passo para organizar os dados é a classificação dele. Além disso, gostaríamos que os dados fossem classificados automaticamente sempre que o usuário reordena as colunas. Depois que o usuário reordena as colunas, o Controle VSFlexGrid de utiliza o evento AfterMoveColumn. Nós vamos adicionar um manipulador de eventos para classificar os dados usando o Sort propriedade. (Note que se a grade fosse vinculado a um banco de dados, você precisará definir a Propriedade DataMode para flexDMFree ser capaz de resolver usando a propriedade Sort.) Aqui está o código: Página - 33
  • 11. Tutorial Controle VSFlexgrid Private Sub fg_AfterMoveColumn (Col ByVal posição, Long As Long) "Classificar os dados da primeira para a última coluna fg.Select 1, 0, 1, fa.Cols - 1 fg.Sort = flexSortGenericAscending fg.Select 1, 0 End Sub O AfterMoveColumn rotina começa selecionando a linha não fixa primeiro no controle usando o método Select. Em seguida, ele classifica todo o controle em ordem crescente usando a propriedade Sort. Para começar com uma grade de classificados, que também irá adicionar uma chamada para o AfterMoveColumn rotina para o final do manipulador Form_Load. Private Sub Form_Load () 'Inicializar o controle '... 'Define alguns dados da amostra '... "Preencher o controle com os dados '... 'Organizar os dados fg_AfterMoveColumn 0, 0 End Sub Pressione F5 para executar o projeto novamente, e tente reordenar as colunas arrastando os seus títulos ao redor. Sempre que você mover uma coluna, os dados são classificados automaticamente, o que torna muito mais fácil de interpretar. Mas estamos apenas começando. Passo 4: Célula Mesclando A capacidade de mesclar células dinamicamente é uma das características que define o VSFlexGrid além de outros controles de grade. Fusão grupos de células visualmente, tornando os dados mais fáceis de interpretar. Para programar fusão celular, basta adicionar duas linhas de código para o manipulador de eventos Form_Load: Private Sub Form_Load () 'Inicializar o controle '... 'Define alguns dados da amostra '... "Preencher o controle com os dados '... 'Set up célula fusão (todas as colunas) fg.MergeCells = flexMergeRestrictAll fg.MergeCol (-1) = True 'Organizar os dados '... End Sub O novo código define a propriedade MergeCells , que funciona através de todo o controle, em seguida, define a propriedade MergeCol como True para todas as colunas (o índice -1 pode ser usado como um curinga para todas as propriedades que se aplicam a linhas e colunas). Página - 33
  • 12. Tutorial Controle VSFlexgrid Pressione F5 novamente para executar o projeto. Desta vez, parece muito diferente de uma grade típica. A célula de fusão faz com que grupos de dados destacam-se visualmente e ajudar a interpretar a informação. Passo 5: Subtotais automáticos Agora que os dados são classificados e agrupados, vamos adicionar o código para calcular subtotais. Com os subtotais, o usuário será capaz de ver quais os produtos que estão vendendo mais, em que regiões, e que os vendedores estão fazendo um bom trabalho. Adicionando subtotais para um controle VSFlexGrid é fácil. O método Subtotal lida com a maioria dos detalhes. Os subtotais precisam ser recalculados após cada espécie, por isso vamos adicionar o código necessário para o evento AfterMoveColumn. Aqui está o código revisto: Private Sub fg_AfterMoveColumn (Col ByVal posição, Long As Long) 'Desativar Redraw para obter mais velocidade fg.Redraw = False "Classificar os dados da primeira para a última coluna fg.Select 1, 0, 1, fa.Cols - 1 fg.Sort = flexSortGenericAscending fg.Select 1, 0 "Calcular subtotais flexSTClear fg.Subtotal flexSTSum fg.Subtotal, -1, 3,, 1, vbWhite, True flexSTSum fg.Subtotal, 0, 3,, vbRed, vbWhite, True flexSTSum fg.Subtotal, 1, 3,, vbBlue, vbWhite, True "Autosize fg.AutoSize 0, fa.Cols - 1, 300 'Ativar Redraw de volta fg.Redraw = True End Sub Este código começa por definir a propriedade Redraw para False. Esta suspende todas as repintura enquanto trabalhamos no grid, o que evita a tremulação e aumenta a velocidade. Em seguida, os subtotais são calculados usando o método Subtotal . A primeira chamada remove todas as linhas existentes subtotal, limpeza do grid. Os próximos três chamados adicionar linhas de subtotal. Começamos pela adição de um total geral, em seguida, subtotais de vendas agrupados por colunas 0 e 1. (Por enquanto, estamos supondo que os números de vendas será na coluna 3.) Depois de adicionar os subtotais, usamos o método AutoSize para certificar-se de todas as colunas são largas o suficiente para mostrar os novos dados. Finalmente, a propriedade Redraw é definida como True volta, altura em que as mudanças se tornam visíveis. Se você executar o projeto agora, você vai ver que ele quase funciona. O problema é que estamos assumindo que os números de vendas serão na coluna 3, e se o usuário move os números para a esquerda, os subtotais só irão somar zero. Para evitar que isso aconteça, nós podemos interceptar o evento BeforeMoveColumn e evitar que o usuário mover a coluna valor de vendas. Aqui está o código: Private Sub fg_BeforeMoveColumn (Col ByVal posição, Long As Long) Página - 33
  • 13. Tutorial Controle VSFlexgrid 'Não se movem números de vendas Se Col = fg.Cols - 1 posição, então = -1 End Sub Devemos também evitar a coluna de vendas de ter células mescladas. A fusão destes valores pode ser confusa porque as quantidades idênticas seriam fundidas e parece ser uma única entrada. Para fazer isso, precisamos voltar para o evento Form_Load e adicionar uma linha de código: Private Sub Form_Load () 'Inicializar o controle '... 'Define alguns dados da amostra '... "Preencher o controle com os dados '... 'Set up célula fusão (todas as colunas) fa.MergeCells = flexMergeRestrictAll fa.MergeCol (-1) = True fa.MergeCol (fa.Cols - 1) = False 'Organizar os dados '... End Sub Estamos a gerar os subtotais. Se você executar o projeto agora, você verá como é fácil de entender a imagem por trás dos números de vendas. Você pode organizar os dados por produto, por região ou por vendedor e ver rapidamente quem está vendendo o quê e onde. Agora estamos quase terminando com este demo. O último passo é adicionar delineando para o controle, assim os usuários podem ocultar ou exibir detalhes e ter uma visão ainda mais clara. Passo 6: Estrutura de Tópicos As capacidades de estruturação do controle VSFlexgrid dependem subtotais. Ao delinear, cada linha de subtotal é tratado como um nó que pode ser recolhido ou expandido. Subtotais aninhados são tratados como nós aninhados. Quaisquer linhas que não são linhas de subtotal são tratadas como filiais, que contêm dados detalhados. Porque nós já programamos subtotais, acrescentando as capacidades esboço é apenas uma questão de adicionar uma linha a mais de código para o manipulador de eventos Form_Load. O novo código define a propriedade OutlineBar , que exibe uma estrutura de árvore com botões que o usuário pode clicar para recolher ou expandir o esquema. Aqui está o que a rotina Form_Load deve ser semelhante a de agora: Private Sub Form_Load () 'Inicializar o controle '... 'Define alguns dados da amostra '... "Preencher o controle com os dados '... 'Set up célula fusão (todas as colunas) '... 'Set up delineando fg.OutlineBar = flexOutlineBarComplete 'Organizar os dados '... End Sub Página - 33
  • 14. Tutorial Controle VSFlexgrid Que conclui este demo. Executar o projeto mais uma vez e tentar clicar nos botões de contorno. Ao clicar irá alternar o estado do nó entre em colapso e expandida. Shift + clique ou Ctrl-Shift-clicar irá definir o nível de destaque de todo o controle. Demonstração Preenchimento de células Este exemplo demonstra como usar o da propriedade cell para formatar células individuais. O demo usa Preenchimento para criar um display combinando números e bares. Aqui está como a aplicação final será: Este projeto é muito simples. É constituído por uma única rotina, no evento Form_Load. Aqui está o código, seguido de alguns comentários: Private Sub Form_Load() Dim i As Long Dim max As Double ' initialize array with random data Dim count(1, 7) As Single For i = 0 To 7 count(0, i) = Rnd * 100 count(1, i) = Rnd * 100 Next ' initialize control fg.Cols = 3 fg.Rows = 9 fg.FloodColor = RGB(100, 255, 100) fg.ColAlignment(0) = flexAlignCenterCenter fg.ColAlignment(1) = flexAlignRightCenter fg.ColAlignment(2) = flexAlignLeftCenter fg.Cell(flexcpText, 0, 0) = "Age Range" fg.Cell(flexcpText, 0, 1) = "Females" fg.Cell(flexcpText, 0, 2) = "Males" fg.ColFormat(-1) = "#.##" ' make data bold fg.Cell(flexcpFontBold, 1, 1, _ fg.Rows - 1, fa.Cols - 1) = True ' place text in cells, keep track of maximum For i = 0 To 7 fg.Cell(flexcpText, i + 1, 0) = _ 10 * i & " - " & (10 * (i + 1) - 1) fg.Cell(flexcpText, i + 1, 1) = count(0, i) fg.Cell(flexcpText, i + 1, 2) = count(1, i) If count(0, i) > max Then max = count(0, i) If count(1, i) > max Then max = count(1, i) Página - 33
  • 15. Tutorial Controle VSFlexgrid Next ' set each cell's flood percentage, ' using max to scale from 0 to -100 for column 1 ' and from 0 to 100 for column 2: For i = 0 To 7 fg.Cell(flexcpFloodPercent, i + 1, 1) = _ -100 * count(0, i) / max fg.Cell(flexcpFloodPercent, i + 1, 2) = _ 100 * count(1, i) / max Next End Sub O código começa por declarar e preencher uma matriz com dados aleatórios. Os dados serão usados posteriormente para preencher o controle. Então o controle é inicializado. O código define o número de linhas e colunas, alinhamentos de coluna, os títulos das colunas, e o formato que deve ser usado na apresentação de dados. Note que ao definir a Propriedade ColFormat, o índice -1 é usado como um curinga para a configuração é aplicada a todas as colunas. A propriedade cell de propriedade é então utilizado para definir a fonte da área de rolagem para negrito. Leva apenas uma única instrução, porque usando a propriedade cell aceita uma série como parâmetro. Em seguida, a matriz que contém os dados é copiada para o controle (novamente usando a propriedade cell). O código se mantém informado do valor máximo atribuído a qualquer célula, a fim de dimensionar a inundação percentagens mais tarde. Finalmente, a propriedade cell é usada uma última vez para definir os percentuais de Preenchimento. As percentagens na primeira coluna estão definidas para valores negativos, o que faz com que as barras a ser desenhado da direita para a esquerda. Os percentuais sobre a segunda coluna estão definidos para valores positivos, o que faz com que as barras a ser desenhado da esquerda para a direita. O exemplo abaixo mostra como você pode usar as propriedades MouseRow e MouseCol para implementar tooltips com texto que muda conforme o mouse se move sobre o controle. Sub fg_MouseMove (Button As Integer, Shift As Integer, _ X as single, Y As Single) Static R As Long, c As Long Nr Dim As Long, nc As Long 'Obter coordenadas nr = fg.MouseRow nc = fg.MouseCol 'Update tooltip texto if c <> nc or r <n> then, r = nr c = nc fg.ToolTipText = "Linha:" & r & "Col:" & c End If "Processamento de outros ... '... End Sub O código nos mantém informados da última célula para a qual foram exibidos tooltips, e atualiza a ToolTipText somente quando necessário. Isto é feito para evitar a cintilação. Página - 33
  • 16. Tutorial Controle VSFlexgrid Demonstração de impressão O método PrintGrid faz parte do Controle VSFlexGrid , e você pode usá- lo para imprimir o conteúdo da rede diretamente para a impressora. Se você precisa imprimir dados mais sofisticados, com visualização de impressão e à capacidade de combinar várias grelhas e outros elementos, tais como tabelas e texto em um único documento, então você deve usar o controle VSPrinter, um produto ComponentOne separada que faz parte do Produto VSVIEW . Este exemplo mostra como você pode imprimir uma grade usando o método. Ambos os métodos permitem controlar quebras de página e para designar certas linhas como "header" linhas, que aparecem no topo de cada página. O exemplo presume que você tenha um Controle VSFlexGrid chamado fg e um VSPrinter controle chamado vp no seu formulário. Sub PrintFlexGridBuiltIn () fg.PrintGrid "Grid Meu" End Sub Sub PrintFlexGridOnVSPrinter () vp.StartDoc vp.RenderControl = fg.hWnd vp.EndDoc End Sub As rotinas acima são tudo que você precisa, a fim de imprimir relatórios simples. O primeiro usa o built-in método PrintGrid, e o segundo utiliza o Controle VSPrinter . O segundo método permite-lhe mostrar o relatório em uma janela de visualização, gerá-lo na impressora, ou salvá-lo em um arquivo. Para impressão de relatórios complexos, o Controle VSFlexGrid possui eventos que permitem controlar quebras de página e fornecer linhas de cabeçalho que são impressos no topo de cada página nova. O código abaixo ilustra o uso desses eventos: "BeforePageBreak: quebra controles de página "Vamos assumir que temos subtotais acima detalhes, E evitar linhas de subtotal 'Sendo a última em uma página Private Sub Fg_BeforePageBreak (ByVal As Long Row, BreakOK As Boolean) 'Se essa linha é um título subtotal, não podemos quebrar aqui if fg.IsSubtotal (Row) then BreakOK = False End Sub "GetHeaderRow: linhas de cabeçalho suprimentos para novas páginas "Vamos assumir que temos linhas título com rowdata definido como -1" que queremos mostrar 'Acima dos dados Private Sub fg_GetHeaderRow (Row ByVal HeaderRow, Long As Long) Dim r As Long "Ignorar se a linha superior é um cabeçalho já if fg.RowData (Row) = -1 Then Exit Sub "Precisamos de um cabeçalho, assim que encontrar um for r = fg.FixedRows to fa.Rows - 1 if fg.RowData (r) = -1 then HeaderRow = r Sub Exit Página - 33
  • 17. Tutorial Controle VSFlexgrid End If Next End Sub OLE Drag and Drop Demonstração Este exemplo mostra como implementar automático e manual OLE arrastar e soltar usando VSFlexGrid 8.0. OLE arrastar e soltar pode ser um pouco confuso no início, por causa de todas as propriedades, métodos, objetos e eventos que podem estar envolvidos no processo. No entanto, você só precisa lidar com alguns desses eventos, a fim de fazer OLE arrastar e largar o trabalho para você. Esta demonstração mostra os conceitos básicos e procedimentos que você irá precisar. Aqui está como a aplicação final será: Os três controles mostrados são fontes de arrastar OLE queda e metas. Isto significa que você pode arrastar os dados de um controle para os outros, ou entre qualquer um dos controles e aplicações externas. Passo 1: Criar os controles Passo 2: Inicializar os controles Passo 3: Arraste OLE manual Passo 4: Drop OLE manual Passo 2: Inicializar os controles Poderíamos ter definido as propriedades iniciais dos controles fgDDManual e fgDDAuto usando a janela de propriedades do Visual Basic, mas optou por fazê- lo usando o evento Form_Load . Aqui a rotina que inicializa os controles: Private Sub Form_Load () 'Inicializar o controle manual withDManual . Cell(flexcpText, 0, 0) = "Manual" . FixedCols = 0 . Editable = True . OLEDragMode = flexOLEDragManual . OLEDropMode = flexOLEDropManual End With Página - 33
  • 18. Tutorial Controle VSFlexgrid 'Inicializar o controle automático Com fgDDAuto . Cell(flexcpText, 0, 0) = "Auto" . FixedCols = 0 . Editable = True . OLEDragMode = flexOLEDragAutomatic . OLEDropMode = flexOLEDropAutomatic End With End Sub O código faz dois grids editáveis, para que você possa digitar a eles, e define as propriedades OLEDragMode e OLEDropMode para fazer cada controle uma fonte de arrastar e soltar OLE e um alvo. Não há necessidade de inicializar o Editbox Rich, desde que as suas propriedades OLEDragMode e OLEDropMode são definidas como automática por padrão. Isso é tudo o que é preciso para implementar arrastar e soltar OLE automática. Se você executar o projeto agora, você será capaz de arrastar o texto da richtextbox na fgDDAuto grade. Você também pode arrastar arquivos do Windows Explorer, varia de Microsoft Excel, ou o texto do Microsoft Word. Você também pode arrastar as seleções da grade fgDDAuto em qualquer destino de soltar OLE (incluindo outras áreas do mesmo controle). Para fazer isso, selecione um intervalo e mover o cursor do mouse para uma borda em torno da seleção. O cursor vai se transformar em um cursor arrastar padrão OLE, como a imagem abaixo mostra. Clique no botão esquerdo do mouse e começar a arrastar. O cursor vai lhe dar feedback visual quando você movê-lo sobre um destino de soltar OLE. Como você pode ver, a implementação de arrastar e soltar OLE automática é fácil. Basta definir as propriedades OLEDragMode e OLEDropMode para automático e está feito. Às vezes você pode desejar personalizar a maneira pela qual OLE arrastar e soltar funciona. Este exemplo mostra como você pode fazer isso, personalizando tanto arrastar o (fonte OLE) comportamento e da queda (destino OLE) comportamento do controle fgDDManual . Passo 3: Arraste OLE manual Vamos personalizar o comportamento do fgDDManual controle como uma fonte de arrastar OLE de duas maneiras: 1. Vamos iniciar arrastando sempre que o usuário clica na célula atual, e 2. Nós vamos adicionar um aviso de copyright ao conteúdo que está sendo arrastado do controle. Porque a propriedade OLEDragMode do fgDDManual controle é definido para flexOLEDragManual, você precisa iniciar a operação OLE arrastar com o código, usando o método OLEDrag. Para fazer isso, vamos adicionar código para manipular o evento BeforeMouseDown. Quando o usuário clica na célula ativa, que chamamos de método OLEDrag. Aqui está o código: private sub FgDDManual_BeforeMouseDown(byval Button as Integer, _ ByVal shift As Integer, _ ByVal X As Single, Y As Single ByVal, _ Página - 33
  • 19. Tutorial Controle VSFlexgrid Cancel As Boolean) with fgDDManual 'Se o clique foi na célula ativa "Começar a arrastar If. MouseRow = Row. E. MouseCol =. Col then "Utilizar o método OLEDrag de arranque manual "Operação de arrastar OLE "Isso vai acionar o evento OLEStartDrag, ", Que usaremos 'Para preencher o DataObject com os dados que "Deseja arrastar. . OLEDrag 'Dizer controle de grade para ignorar rato "Movimentos até que a 'Botão do mouse sobe novamente Cancel = True End If End With End Sub O código acima verifica se o usuário clicou na célula ativa. Se assim for, ele chama o método OLEDrag e define o parâmetro Cancel para True. Note que você não especificou o que os dados são. No modo automático, o controle assumiu que você queria arrastar a seleção atual. No modo manual, você é responsável pelo fornecimento dos dados. Quando o método OLEDrag , o controle dispara o evento OLEStartDrag , que dá acesso a um objeto DataObject. Você deve armazenar os dados que serão arrastados para o DataObject para que o objeto alvo pode chegar a ela. Aqui está o código: private sub FgDDManual_OLEStartDrag(data As VSFlex8Ctl.vsDataObject, AllowedEffects As Long) 'Set conteúdo do objeto de dados para arrastar manual de Dim s $ s = fgDDManual.Clip & vbCrLf & "Copyright 2000 ComponentOne" Data.SetData s, vbCFText End Sub O código leva a seleção atual (contidos na propriedade clip), acrescenta um aviso de direitos autorais a ele, e depois atribui-lo para o parâmetro de dados. Estes são os dados que serão expostos aos destinos de soltar OLE. Se você executar o projeto agora, e digite alguns dados na fgDDManual controle, você será capaz de arrastá-lo para um dos outros controles no formulário. Observe como o aviso de direitos autorais fica anexado à seleção quando você faz a queda. Passo 4: Drop OLE manual Vamos personalizar o comportamento do fgDDManual controle como um destino de soltar OLE para que, quando uma lista de arquivos é descartado, ele abre o primeiro arquivo da lista e exibe o conteúdo das primeiras 10 linhas nesse arquivo. (O comportamento padrão é para o tratamento de listas de arquivos como texto e cole os nomes dos arquivos.) Quando o usuário solta um objeto de dados OLE em um VSFlexGrid controle com o OLEDropMode propriedade definida como flexOLEDropManual, o controle dispara o OLEDragDrop evento. O objeto de dados sendo descartado é passado como um parâmetro (dados) que você pode consultar o tipo de dados que você deseja. Página - 33
  • 20. Tutorial Controle VSFlexgrid A rotina abaixo faz uma verificação para ver se os dados contidos em uma lista de arquivos. Se assim for, ele abre o primeiro arquivo na lista e lê o conteúdo de suas primeiras 10 linhas. Se o parâmetro de dados não contém todos os arquivos, então a rotina tenta fazer com que o seu conteúdo de texto. De qualquer forma, a rotina transfere os dados para a rede usando a propriedade Clip . Aqui está a rotina: Private sub FgDDManual_OLEDragDrop(data as VSFlex8Ctl.vsDataObject, _ Effect As Long, _ ByVal Button As Integer, _ ByVal shift As Integer, _ ByVal X as single, Y As Single) Dim r As Long, c As Long, i As Integer, s As String with fgDDManual "Obter a localização queda r =. MouseRow c =. MouseCol "Se nós estamos soltando arquivos, abra o arquivo 'E colar o conteúdo if Data.FileCount> 0 Then On Error Resume Next open Data.Files(0) for Input As # 1 for i = 0 To 10 Line Input # 1, s . Cell(flexcpText, r + i, c) = s next Close # 1 'Texto soltar usando a propriedade Clip ElseIf Data.GetFormat (vbCFText) Then s = Data.GetData (vbCFText) . Select r, c, .rows - 1., .Cols - 1. . Clip = s . Select r, c "Nós não aceitamos outra coisa else MsgBox "Desculpe, é só aceitamos arquivos de texto e ..." End If End With End Sub Que conclui este demo. Executar o projeto novamente e tente arrastar e soltar entre os controles e outras aplicações. VSFlexGrid de Controle > Propriedades VSFlexGrid, Eventos e Métodos Propriedades VSFlexGrid, Eventos e Métodos Todas as propriedades, eventos e métodos para a Controle VSFlexGrid estão listados nas tabelas a seguir. Propriedades, eventos e métodos que se aplicam apenas a este controle, ou que requerem uma consideração especial quando usado com ele, são marcados com um asterisco (*). Estes são documentadas nas seções posteriores. Para documentação sobre as demais propriedades, consulte a documentação do Visual Basic. Propriedades * AccessibleDescription Obtém ou define a descrição do controle usado por aplicativos cliente de acessibilidade. * AccessibleName Obtém ou define o nome do controle usado por aplicativos cliente de acessibilidade. Página - 33
  • 21. Tutorial Controle VSFlexgrid * AccessibleRole Obtém ou define o papel do controle usado por aplicativos cliente de acessibilidade. * AccessibleValue Obtém ou define o valor do controle usado por aplicativos cliente de acessibilidade. * Aggregate Retorna uma função agregada (soma, média, etc) para um determinado intervalo. * AllowBigSelection Retorna ou define se clicar na área fixa irá selecionar colunas inteiras e linhas. * AllowSelection Retorna ou define se o usuário pode selecionar intervalos de células com o mouse e teclado. * AllowUserFreezing Retorna ou define se o usuário tem permissão para congelar linhas e colunas com o mouse. * AllowUserResizing Retorna ou define se o usuário tem permissão para redimensionar linhas e colunas com o mouse. * Appearance Retorna ou define o estilo de pintura do controle sobre um objeto MDIForm ou formulário. * ArchiveInfo Retorna informações de um arquivo VSFlex. * AutoResize Retorna ou define se a largura das colunas serão ajustadas automaticamente quando os dados são carregados. * AutoSearch Retorna ou define se o controle irá procurar por entradas como eles são digitados. * AutoSearchDelay Retorna ou define o atraso, em segundos, antes que o buffer AutoSearch é reposto. * AutoSizeMode Retorna ou define se AutoSize irá ajustar a largura das colunas ou alturas de linha para caber o conteúdo da célula. * AutoSizeMouse Retorna ou define se as colunas devem ser redimensionada para caber quando o usuário clica duas vezes sobre a linha de cabeçalho. * BackColor Retorna ou define a cor de fundo das células não-fixa. * BackColorAlternate Retorna ou define a cor de fundo para linhas alternadas (definido como 0 para desabilitar). * BackColorBkg Retorna ou define a cor de fundo da área não abrangida por qualquer das células. * BackColorFixed Retorna ou define a cor de fundo das linhas fixas e colunas. * BackColorFrozen Retorna ou define a cor de fundo das linhas e colunas congeladas. * BackColorSel Retorna ou define a cor de fundo das células selecionadas. * BottomRow Retorna o índice baseado em zero da última linha exibida no controle. * Cell Retorna ou define as propriedades da célula para um intervalo arbitrário. * CellAlignment Retorna ou define o alinhamento do texto na célula selecionada ou intervalo. * CellBackColor Retorna ou define a cor de fundo da célula selecionada ou intervalo. * CellButtonPicture Retorna ou define a imagem usada em botões celular. * CellChecked Retorna ou define se uma célula da grade tem uma marca de verificação. * CellFloodColor Retorna ou define a cor a ser usada para inundar uma célula. * CellFloodPercent Retorna ou define o percentual de inundação para uma célula. Página - 33
  • 22. Tutorial Controle VSFlexgrid * CellFontBold Retorna ou define o atributo negrito da fonte da célula selecionada ou intervalo. * CellFontItalic Retorna ou define o atributo Itálico da fonte da célula selecionada ou intervalo. * CellFontName Retorna ou define o nome da fonte da célula selecionada ou intervalo. * CellFontSize Retorna ou define o tamanho da fonte da célula selecionada ou intervalo. * CellFontStrikethru Retorna ou define o atributo Strikethru da fonte da célula selecionada ou intervalo. * CellFontUnderline Retorna ou define o atributo Sublinhado da fonte da célula selecionada ou intervalo. * CellFontWidth Retorna ou define a largura da fonte da célula selecionada ou intervalo. * CellForeColor Retorna ou define a cor de primeiro plano da célula selecionada ou intervalo. * CellHeight Retorna a altura da célula selecionada, em twips. Também traz a célula em vista, a rolagem, se necessário. * CellLeft Retorna a esquerda (x) coordenar da célula selecionada em relação ao controle, em twips. Também traz a célula em vista, a rolagem, se necessário. * CellPicture Retorna ou define a imagem exibida em uma célula selecionada ou intervalo. * CellPictureAlignment Retorna ou define o alinhamento das imagens na célula selecionada ou intervalo. * CellTextStyle Retorna ou define efeitos 3D para o texto em uma célula selecionada ou intervalo. * Celltop Retorna ao topo (y) de coordenadas da célula selecionada em relação ao controle, em twips. Também traz a célula em vista, a rolagem, se necessário. * CellWidth Retorna a largura da célula selecionada, em twips. Também traz a célula em vista, a rolagem, se necessário. * ClientHeight Retorna a altura da área cliente do controle, em twips. * ClientWidth Retorna a largura da área cliente do controle, em twips. * Clip Retorna ou define o conteúdo de um intervalo. * ClipSeparators Retorna ou define os caracteres a serem usados como separadores de coluna e linha em Clipe strings. * Col Retorna ou define o índice baseado em zero da coluna atual. * ColAlignment Retorna ou define o alinhamento da coluna dado. * ColComboList Retorna ou define a lista para ser usado como um drop-down na coluna especificada. * ColData Retorna ou define um user-defined variante associada à determinada coluna. * ColDataType Retorna ou define o tipo de dados para a coluna. * ColEditMask Retorna ou define a máscara de entrada usado para editar as células da coluna especificada. * ColFormat Retorna ou define o formato usado para exibir valores numéricos. * ColHidden Retorna ou define se uma coluna está oculto. * ColImageList Define ou retorna um identificador para um ImageList para ser usado como uma fonte de imagens para uma determinada Página - 33
  • 23. Tutorial Controle VSFlexgrid coluna. * ColIndent Retorna ou define o recuo da coluna dado, em twips. * colIndex Retorna o índice da coluna que coincida com a chave dada. * ColIsVisible Retorna se uma determinada coluna está à vista. * ColKey Retorna ou define uma chave usada para identificar a coluna determinada. * ColPos Retorna a esquerda (x) coordenar de uma coluna em relação à borda do controle, em twips. * ColPosition Move uma determinada coluna para uma nova posição. * Cols Retorna ou define o número total de colunas no controle. * ColSel Retorna ou define a extensão de um intervalo de colunas. * ColSort Retorna ou define a ordem de classificação para cada coluna (para uso com o Sort propriedade). * ColWidth Retorna ou define a largura da coluna especificada em twips. * ColWidthMax Retorna ou define a largura da coluna máximo, em twips. * ColWidthMin Retorna ou define a largura da coluna mínimo, em twips. * ComboCount Retorna o número de itens na lista do editor de combinação. * ComboData Retorna o valor muito tempo associado com um item na lista do editor de combinação. * ComboIndex Retorna ou define o índice com base zero da seleção atual na lista do editor de combinação. * ComboItem Retorna a string associada a um item na lista do editor de combinação. * ComboList Retorna ou define a lista para ser usado como um drop-down ao editar uma célula. * ComboSearch Retorna ou define se as listas de combinação deve apoiar buscas inteligente. * DataMember Retorna ou define o membro de dados. * DataMode Retorna ou define o tipo de ligação de dados usado pelo controle quando ele está conectado a uma fonte de dados (somente leitura ou leitura / gravação). * DataSource Retorna ou define a fonte de dados. * DragMode Retorna / define um valor que determina se o modo de arrastar manual ou automático é usado. * Editable Retorna ou define se o controle permite que na célula de edição. * EditMask Retorna ou define a máscara de entrada usado para editar as células. * EditMaxLength Retorna ou define o número máximo de caracteres que podem ser inseridos no editor. * EditSelLength Retorna ou o número de caracteres selecionados no editor. * EditSelStart Retorna ou define o ponto de partida do texto selecionado no editor. * EditSelText Retorna ou define a string contendo a seleção atual no editor. * EditText Retorna ou define o texto no editor de celular. * EditWindow Retorna um identificador para a janela da grade de edição, ou 0 se a grade não está no modo de edição. * Ellipsis Retorna ou define se o controle irá mostrar reticências (...) Página - 33
  • 24. Tutorial Controle VSFlexgrid depois de longas cadeias. * Enabled Retorna ou define um valor que determina se um formulário ou controle pode responder a eventos gerados pelo usuário. Consulte a documentação do Visual Basic para mais informações. * ExplorerBar Retorna ou define se cabeçalhos de coluna são usados para classificar colunas e / ou mover. * ExtendLastCol Retorna ou define se a última coluna deve ser ajustada para ajustar a largura do controle. * FillStyle Retorna ou define se as alterações ao texto propriedades ou Format aplicar à célula atual ou a toda a seleção. * FindRow Retorna o índice de uma linha que contém uma seqüência especificada ou o valor rowdata. * FindRowRegex Retorna o índice da linha que contém um jogo ou -1 se nenhuma correspondência foi encontrada. * FixedAlignment Retorna ou define o alinhamento para as linhas fixas em uma coluna. * FixedCols Retorna ou define o número de colunas fixas (não rolável). * FixedRows Retorna ou define o número de linhas fixas (não rolável). * Flags Obtém ou define sinalizadores que afetam o comportamento do controle. * FlexDataSource Retorna ou define uma fonte de dados personalizado para o controle. * FloodColor Retorna ou define a cor usada para as células de inundação. * focusRect Retorna ou define o tipo de retângulo de foco a ser exibido em torno da célula atual. Font Retorna um objeto Font. Consulte a documentação do Visual Basic para mais informações. * FontBold Determina se a fonte está em negrito. * FontItalic Determina se a fonte é itálico. * FontName Retorna ou define o nome da fonte. * FontSize Determina o tamanho da fonte. * FontStrikethru Determina a strikethru da fonte. * FontUnderline Determina o tipo de letra é sublinhado. * FontWidth Retorna ou define a largura da fonte, em pontos. * ForeColor Retorna ou define a cor de primeiro plano das células não-fixa. * ForeColorFixed Retorna ou define a cor de primeiro plano das linhas fixas e colunas. * ForeColorFrozen Retorna ou define a cor de primeiro plano das linhas e colunas congeladas. * ForeColorSel Retorna ou define a cor de primeiro plano das células selecionadas. * FormatString Atribui a largura das colunas, alinhamentos e linha fixa e texto da coluna. * FrozenCols Retorna ou define o número de congelados (editável, mas não rolável) colunas. * FrozenRows Retorna ou define o número de congelados (editável, mas não rolável) linhas. * GridColor Retorna ou define a cor usada para desenhar as linhas de grade entre as células não-fixa. Página - 33
  • 25. Tutorial Controle VSFlexgrid * GridColorFixed Retorna ou define a cor usada para desenhar as linhas de grade entre as células fixas. * GridLines Retorna ou define o tipo de linhas a serem traçadas entre as células não-fixos. * GridLinesFixed Retorna ou define o tipo de linhas a serem traçadas entre células fixas. * GridLineWidth Retorna ou define a largura das linhas da grade, em pixels. * GroupCompare Retorna ou define o tipo de comparação utilizado quando o agrupamento de células. * HighLight Retorna ou define se as células selecionadas serão destaque. hWnd Retorna um identificador para um formulário ou controle. Consulte a documentação do Visual Basic para mais informações. * IsCollapsed Retorna ou define se uma linha contorno é recolhido ou expandido. * IsSearching Retorna um valor que indica se a rede está em modo de busca. * IsSelected Retorna ou define se uma linha é selecionada (para listbox tipo de seleções). * IsSubtotal Retorna ou define se uma linha contém subtotais (em oposição a dados). * LeftCol Retorna ou define o índice baseado em zero da coluna não fixa mais à esquerda exibido no controle. * MergeCells Retorna ou define se as células com o mesmo conteúdo serão fundidos em uma única célula. * MergeCellsFixed Permite aos usuários definir diferentes critérios de fusão de células fixo vs scrollable. * MergeCol Retorna ou define se uma coluna terá o seu células mescladas. * MergeCompare Retorna ou define o tipo de comparação utilizada na mesclagem de células. * MergeRow Retorna ou define se uma linha terá suas células mescladas. * MouseCol Retorna o índice baseado em zero da coluna sob o ponteiro do mouse. MouseIcon Retorna ou define um ícone de mouse personalizado. Consulte a documentação do Visual Basic para mais informações. MousePointer Retorna ou define um valor que indica o tipo de ponteiro do mouse exibido quando o mouse está sobre uma parte específica de um objeto em tempo de execução. Consulte a documentação do Visual Basic para mais informações. * MouseRow Retorna o índice baseado em zero da linha sob o cursor do mouse. * MultiTotals Retorna ou define se subtotais serão exibidos em uma única linha, quando possível. * NodeClosedPicture Retorna ou define a imagem a ser usada para nós contorno fechado. * NodeOpenPicture Retorna ou define a imagem a ser usada para nós esboço aberto. * OLEDragMode Retorna ou define se o controle pode atuar como uma fonte de arrastar OLE, automaticamente ou sob o controle do programa. * OLEDropMode Retorna ou define se o controle pode atuar como um destino de soltar OLE, automaticamente ou sob o controle do programa. * OutlineBar Retorna ou define o tipo de barra de esquema que deve ser exibido. Página - 33
  • 26. Tutorial Controle VSFlexgrid * OutlineCol Retorna ou define a coluna usada para mostrar a árvore de esboço. * OwnerDraw Retorna ou define se e quando o controle vai disparar o evento DrawCell. * Picture Retorna uma imagem de todo o controle. * PicturesOver Retorna ou define se o texto e as imagens devem ser sobrepostos nas células. * PictureType Retorna ou define o tipo de imagem retornado pela propriedade Picture. * Redraw Habilita ou desabilita o redesenho do controle VSFlexGrid. * RightCol Retorna o índice baseado em zero da última coluna exibida no controle. * RightToLeft Retorna ou define se o texto deve ser exibido da direita para a esquerda em sistemas hebraico e árabe. * Row Retorna ou define o índice baseado em zero da linha atual. * rowdata Retorna ou define um user-defined variante associada à determinada linha. * RowHeight Retorna ou define a altura da linha especificada em twips. * RowHeightMax Retorna ou define a altura da linha máximo, em twips. * RowHeightMin Retorna ou define a altura de linha mínimo, em twips. * RowHidden Retorna ou define se uma linha está oculto. * RowIsVisible Retorna se uma determinada linha está dentro da visão. * RowOutlineLevel Retorna ou define o nível de destaque para uma linha de subtotal. * RowPos Retorna ao topo (y) de coordenadas de uma linha em relação à borda do controle, em twips. * RowPosition Move-se uma determinada linha para uma nova posição. * Row Retorna ou define o número total de linhas no controle. * RowSel Retorna ou define a extensão de um intervalo de linhas. * RowStatus Retorna ou define um valor que indica se uma linha foi adicionado, excluído ou modificado. * ScrollBars Retorna ou define se o controle irá exibir horizontal ou vertical barras de rolagem. * ScrollTips Retorna ou define se dicas de ferramentas são mostradas enquanto o usuário rola verticalmente. * ScrollTipText Retorna ou define o texto dica de ferramenta exibida enquanto o usuário rola verticalmente. * ScrollTrack Retorna ou define a rolagem deve ocorrer enquanto o usuário move o polegar de rolagem. * SelectedRow Retorna a posição de uma linha selecionada quando SelectionMode está definido para flexSelectionListBox. * SelectedRows Retorna o número de linhas selecionadas, quando SelectionMode está definido para flexSelectionListBox. * SelectionMode Retorna ou define se o controle irá selecionar células em um intervalo livre, por linha, por coluna, ou como uma caixa de listagem. * SheetBorder Retorna ou define a cor usada para desenhar a borda em torno da folha. * ShowComboButton Retorna ou define se suspensa botões são mostrados quando as células editáveis são selecionados. Página - 33
  • 27. Tutorial Controle VSFlexgrid * Sort Define uma ordem de classificação para as linhas selecionadas usando as colunas selecionadas como chaves. * SortAscendingPicture Obtém ou define uma imagem personalizada para indicar a direção de classificação coluna. * SortDescendingPicture Obtém ou define uma imagem personalizada para indicar a direção de classificação coluna. * SubtotalPosition Retorna ou define se subtotais deve ser inserido acima ou abaixo dos dados totalizados. * TabBehavior Retorna ou define se a tecla tab moverá o foco entre controles (default VB) ou entre as células da grade. * Text Retorna ou define o conteúdo da célula selecionada ou intervalo. * TextArray Retorna ou define o conteúdo de uma célula identificada por um único índice. * TextMatrix Retorna ou define o conteúdo de uma célula identificada pelo seu coordenadas de linha e coluna. * TextStyle Retorna ou define efeitos 3D para a exibição de texto em células não-fixos. * TextStyleFixed Retorna ou define efeitos 3D para a exibição de texto em células fixas. * TopRow Retorna ou define o índice baseado em zero da linha não fixa mais alto exibido no controle. * TreeColor Retorna ou define a cor usada para desenhar a árvore de esboço. * Value Retorna o valor numérico da célula atual. * ValueMatrix Retorna o valor numérico de uma célula identificada pelo seu coordenadas de linha e coluna. * Version Retorna a versão do controle atualmente carregados na memória. * VirtualData Retorna ou define se todos os dados é obtido a partir da fonte de dados ao mesmo tempo ou conforme a necessidade. * WallPaper Retorna ou define uma imagem para ser usada como um fundo para a área de rolagem do controle. * WallPaperAlignment Retorna ou define o alinhamento da imagem de fundo WallPaper. * WordWrap Retorna ou define se o texto mais amplo que sua célula vai embrulhar. Métodos * AddItem Adiciona uma linha para o controle. * Archive Acrescenta, extratos, ou exclui arquivos de um arquivo vsFlexGrid. * AutoSize Redimensiona a largura das colunas ou alturas de linha para caber o conteúdo da célula. * BindToArray Liga-se a grade para uma matriz de variantes para ser utilizado como armazenamento. * BuildComboList Retorna uma ColComboList string de dados em um conjunto de registros. * CellBorder Desenha uma borda ao redor e dentro das células selecionadas. * CellBorderRange Semelhante ao CellBorder método, mas permite ao usuário especificar o intervalo em vez de usar o CellBorderRange seleção. Página - 33
  • 28. Tutorial Controle VSFlexgrid * Clear Limpa o conteúdo do controle. Parâmetros opcionais especificar o que clara e onde. * Copy Copiar seleção para a área de transferência. * Cut Corte seleção para a área de transferência. * DataRefresh Força o controle a atualizar todos os dados de sua fonte de dados. * Delete Exclui a seleção. * DragRow Começa a arrastar uma linha a uma nova posição. * EditCell Ativa o modo de edição. * FinishEditing Termina quaisquer edições pendentes e retorna a grade para o modo de navegação. * GetMergedRange Retorna o intervalo de células mesclado que inclui uma determinada célula. * GetNode Retorna um objeto do nó de contorno para uma determinada linha subtotal. * GetNodeRow Retorna o número de pais de uma linha, primeiro, ou último filho de um esboço. * GetSelection Retorna a seleção atual ordenados de forma que ROW1 <= ROW2 e Col1 <= Col2. * LoadArray Cargas controlar a com dados de uma matriz Variant ou de outro controle FlexGrid. * LoadGrid Carrega o conteúdo da grade e formato de um arquivo. * LoadGridURL Carrega o conteúdo da grade e formato de uma URL (criado com SaveGrid). * OLEDrag Inicia uma operação de arrastar OLE. * Outline Define um nível de destaque para a exibição de subtotais. * Paste Cola a seleção da área de transferência. * PrintGrid Imprime a grade na impressora. Refresh Força uma completa repaint de um formulário ou controle. Consulte a documentação do Visual Basic para mais informações. * RemoveItem Remove uma linha de controle. * SaveGrid Salva o conteúdo da grade e formato para um arquivo. * Select Seleciona um intervalo de células. * Subtotal Insere linhas com dados de resumo. Eventos * AfterCollapse Despedido depois que o usuário expande ou recolhe uma ou mais linhas em um esboço. * AfterDataRefresh Ocorre após a atualização/leitura de dados da fonte do registro. * AfterEdit Ocorre após a saída do modo de edição de células controle. * AfterMoveColumn Despedido depois de uma coluna é movida arrastando o ExplorerBar. * AfterMoveRow Despedido depois de uma briga é movida arrastando o ExplorerBar ou usar o DragRow método. * AfterRowColChange Despedido depois de a célula atual (Row, Col) alterações em uma célula diferente. * AfterScroll Despedido depois de os pergaminhos de controle. * AfterSelChange Demitido após o intervalo selecionado ( RowSel , ColSel ) Página - 33
  • 29. Tutorial Controle VSFlexgrid alterações. * AfterSort Despedido depois de uma coluna é classificada por um clique no ExplorerBar. * AfterUserFreeze Despedido depois que o usuário altera o número de linhas ou colunas congeladas. * AfterUserResize Despedido depois que o usuário redimensiona uma linha ou uma coluna. * BeforeCollapse Despedido antes que o usuário expande ou recolhe uma ou mais linhas em um esboço. * BeforeDataRefresh Disparou antes de ler dados a partir de fonte de registro. * BeforeEdit Despedido antes que o controle entra no modo de edição de célula. * BeforeMouseDown Ocorre antes do controle processar o evento MouseDown. * BeforeMoveColumn Ocorre antes de uma coluna ser movida arrastando o ExplorerBar. * BeforeMoveRow Disparou antes de uma linha é movida arrastando o ExplorerBar ou usar o DragRow método. * BeforePageBreak Disparados durante a impressão do controle para controlar quebras de página. * BeforeRowColChange Disparou antes da célula atual (Row, Col) muda para uma célula diferente. * BeforeScroll Disparou antes da rola de controle. * BeforeScrollTip Disparou antes de uma ponta de rolagem é mostrada de modo que você pode definir o ScrollTipText propriedade. * BeforeSelChange Demitido antes do intervalo selecionado ( RowSel , ColSel ) alterações. * BeforeSort Disparou antes de uma coluna é classificada por um clique no ExplorerBar . * BeforeUserResize Despedido antes que o usuário começa a redimensionar uma linha ou coluna, permite cancelar. * CellButtonClick Despedido depois que o usuário clica em um botão de células. * CellChanged Demitido após a mudança de uma célula conteúdo. * ChangeEdit Despedido depois de o texto no editor mudou. * click Este evento ocorre quando o usuário pressiona e solta o botão do dispositivo de mouse sobre um objeto. Consulte a documentação do Visual Basic para mais informações. * ComboCloseUp Demitido antes do built-in combobox fecha. * ComboDropDown Demitido antes do built-in combobox cai para baixo. * Compare Disparado quando o Sort propriedade é definida como flexSortCustom, para permitir a comparação costume de linhas. DblClick Este evento ocorre quando o usuário clica duas vezes um objeto. * DrawCell Disparado quando a propriedade OwnerDraw é configurado para permitir desenho de célula personalizado. * EndAutoSearch Disparado quando a grade sai do modo AutoSearch. * EnterCell Disparado quando uma célula se torna ativo. * Error Despedido depois de um erro de acesso a dados. * FilterData Despedido depois de um valor é lido e antes de um valor é gravado em um conjunto de registros para permitir a formatação personalizada. * GetHeaderRow Disparados durante a impressão do controle para definir linhas de cabeçalho repetição. Página - 33
  • 30. Tutorial Controle VSFlexgrid KeyDown Este evento ocorre quando o usuário pressiona uma tecla enquanto um objeto tem o foco. * KeyDownEdit Disparado quando o usuário pressiona uma tecla no modo de edição de célula. KeyPress Este evento ocorre quando o usuário pressiona e libera uma chave ANSI. * KeyPressEdit Disparado quando o usuário pressiona uma tecla no modo de edição de célula. KeyUp Ocorre quando o usuário solta uma tecla. * KeyUpEdit Disparado quando o usuário pressiona uma tecla no modo de edição de célula. * LeaveCell Demitido antes das alterações célula atual em uma célula diferente. MouseDown Ocorrer quando o usuário pressiona (MouseDown) um botão de mouse. MouseMove Ocorre quando o usuário move o mouse. MouseUp Ocorrer quando o usuário libera (MouseUp) um botão de mouse. * OLECompleteDrag Despedido depois de uma queda de informar o componente de origem que uma ação de arrastar ou foi realizado ou cancelado. * OLEDragDrop Disparado quando um componente da fonte é jogada sobre uma componente de destino. * OLEDragOver Disparado quando um componente é arrastado sobre o outro. * OLEGiveFeedback Demitido após cada OLEDragOver evento para permitir que o componente de origem para fornecer feedback visual para o usuário. * OLESetCustomDataObject Despedido depois de uma operação de arrastar OLE é iniciado (manualmente ou automaticamente), permite que você forneça uma DataObject personalizado. * OLESetData Dispararam sobre o componente de origem quando um componente de destino executa o método GetData do objeto DataObject da fonte. * OLEStartDrag Despedido depois de uma operação de arrastar OLE é iniciado (manualmente ou automaticamente). * RowColChange Disparado quando a célula atual ( Row , Col ) muda para uma célula diferente. * SelChange Demitido após o intervalo selecionado ( RowSel , ColSel ) alterações. * SetupEditStyle Demitido antes do EditWindow é criada, usada para modificar estilos janela. * SetupEditWindow Demitido após a EditWindow foi criado e antes que ela seja exibida. * StartAutoSearch Disparado quando a grade entra em modo de pesquisa automática. * StartEdit Disparado quando o controle entra no modo de edição de célula (após BeforeEdit ). * StartPage Disparou antes de cada página enquanto a grade está sendo impresso. * ValidateEdit Disparou antes de sair do modo de controle de edição de célula. Demonstração calculadora Esta demonstração mostra como o VSFlexString controle pode ser usado para implementar uma expressão matemática avaliador. Você pode usar esse projeto Página - 33
  • 31. Tutorial Controle VSFlexgrid como está, para permitir aos usuários inserir expressões em vez de constantes numéricas, ou usá-lo como ponto de partida para um avaliador mais sofisticados com variáveis e funções personalizadas. Aqui está como a aplicação final será: Passo 1: Criar os controles Iniciar um novo projeto Visual Basic. Botão direito do mouse na caixa de ferramentas e selecione "Components ...", em seguida, escolher o VSFlexString controle da lista. O VSFlexString ícone será adicionado à caixa de ferramentas Visual Basic. (Se o controle não aparece na lista, não foi registrado em seu computador. Neste caso, clique no botão "Procurar" e selecione o arquivo VSSTR8.OCX para registrá-lo.) Criar um VSFlexString objeto na forma clicando no ícone na caixa de ferramentas, em seguida, soltando-o no formulário. Também criar duas caixas de texto e um botão de comando. Organizar os controles e redimensionar o formulário para que ele se parece com a foto acima. Clique no VSFlexString controle e uso do Visual Basic para janela de propriedades mudar seu nome para "fs". Passo 2: Avaliando Expressões Este projecto consiste principalmente de uma única função recursiva que usa o VSFlexString controle para avaliar as expressões digitadas na caixa de texto. Essa função, que vamos escrever mais tarde, precisa ser chamada quando o usuário clica no botão. Dê um duplo clique no botão e digite o seguinte no manipulador de eventos: "Avaliar a expressão em Text1 e mostrar o resultado em Text2 Sub Command1_Click () Texto2 = Format (Eval (Text1), "0.00") End Sub Isso deixa apenas os Eval função, que recebe uma string contendo uma expressão matemática como um parâmetro e retorna um valor. Aqui está o código: Function Eval (ByVal s As String) As Double Dim s1, $ s2, $ s3 Dim v # "Prepare-se para analisar fs = Trim (s) 'ponto de interrupção definido nesta linha "Interpretar sub-expressões entre parênteses fs.Pattern = "{.*}({[^()]*}){.*}" if fs.MatchCount> 0 Then s1 = fs.TagString (0) 'coisas para a esquerda s2 = fs.TagString (1) 'sub-expressão s3 = fs.TagString (2) 'para a direita Página - 33
  • 32. Tutorial Controle VSFlexgrid Debug.Print "match"; s1 "; #<(>#"; s2; "#<)>#"; s3 v = Eval (s2) "avaliar a expressão sub- Eval = Eval (s1 & Format (v) & s3) exit function End If "Somar e subtrair (de alta prioridade operadores) fs.Pattern = "{.+}{[+-]}{.+}" if fs.MatchCount> 0 Then s1 = fs.TagString (0) 'operando 1 s2 = fs.TagString (2) "operando 2 Debug.Print "match"; s1 "; #<+->#"; s2 Fs.TagString Select Case (1) Case "+": Eval = Eval (s1) + Eval (s2) Case "-": = Eval Eval (s1) - Eval (s2) End Select exit function End If 'Multiplicar e dividir (de menor prioridade operadores) fs.Pattern = "{.+}{[*/]}{.+}" if fs.MatchCount> 0 Then s1 = fs.TagString (0) 'operando 1 s2 = fs.TagString (2) "operando 2 Debug.Print "match"; s1 "; #<*/>#"; s2 Fs.TagString Select Case (1) "*" Caso: Eval = Eval (s1) * Eval (s2) Caso "/": Eval = Eval (s1) / Eval (s2) End Select exit function End If "Poder (de menor prioridade operador) fs.Pattern = "{.+}^{.+}" Se fs.MatchCount> 0 Then s1 = fs.TagString (0) 'operando 1 fs.TagString = s2 (1) 'operando 2 Debug.Print "match"; s1; "#<^>#"; s2 Eval = Eval (s1) ^ Eval (s2) exit function End If 'Número (nada combinado, de modo que este deve ser um número) fs.Pattern = "^-?[ 0-9] + .? [0-9] * $ " if fs.MatchCount> 0 Then Eval = Val (s) else Debug.Print "Erro Eval:"; fs: Beep End If End Function Esta rotina trata todos os operadores básicos tendo em conta a sua precedência (isto é, o poder, antes da divisão antes de soma). Ele também lida com sub-expressões contidas entre parênteses. O Eval função consiste em um padrão que se repete. O VSFlexString é utilizado para analisar cada expressão em seus componentes, de acordo com regras de prioridade do operador, e Eval é chamado recursivamente para avaliar cada componente. Este processo continua até que um número for encontrado e avaliados usando built-in do VB Val função. O padrão típico tem este formato: "{.+}{[*/]}{.+}". O "+ {.}" No início e no final da partida padrão corre de um ou mais personagens. O "{[*/]}" corresponde a um operador que separa as partes esquerda e direita da expressão. Página - 33
  • 33. Tutorial Controle VSFlexgrid Passo 3: Tentando-o para fora Pressione F5 para executar o projeto e digite uma expressão como "(2 * (5 +3) 144 ^ 0,5) / 7". Em seguida, clique no botão de comando eo resultado (4) aparecerá na segunda caixa de texto. A janela de depuração irá mostrar um traço da Eval função. Aqui está uma versão comentada da saída: match: (2 * 5 +3 #<(># #<)># 144 ^ 0,5) / 7 found sub- expression match: 5 #<+-># 3 Found + match: #<(># 2 * 8 144 ^ 0,5 #<)># / 7 found sub-expression match: 2 * 8 #<+-># 144 ^ 0,5 found + match: 144 #<^># 0,5 found ^ match: 2 #<*/># 8 found * match: 28 #<*/># 7 found / O rastreamento mostra a ordem em que foram encontrados resultados e operações executadas. Você pode querer colocar um ponto de interrupção no topo da Eval de rotina e ver o que acontece após cada jogo. Passo 4: aperfeiçoar a demonstração Como um exercício para o leitor, tente adicionar suporte para variáveis definidas pelo usuário e funções, tais como Sin e Cos. Página - 33