Ir para conteúdo
Fórum Script Brasil
  • 0

Alinhamento Treeview


ToPronto N'Area

Pergunta

Ola pessoal é o seguinte montei um treeview e ficou legal, to imprimindo ele pelo objeto printer enfim ficou bem funcional todo ele, só tem um detalhe. neste treeview ele faz uma somatoria dos dados referente a cada linha e coloca na frente do nome o valor, por exemplo.

Receitas - 12.000,00

o problema é que os itens de baixos ficam desalinhados eu queria verificar se tem uma forma de fazer uma função que verifique o um tamanho limite e alinhe o valor la no tamanho limite, tentei fazer alguma coisa só q fica desalinhado da mesma forma.

olha o codigo que eu fiz.

LblTam.Caption = VerTabulacao

For i = LblTam.Width To 7650

VerTabulacao = VerTabulacao & "."

i = i + 45

'Next

onde lbltam é uma label só pra base de calculo, vertabulacao é um string que recebe o texto q vai no node

o i recebe 45 prq 45 ó twip referente há um "."

Ele completa e fica legal, só q a direita fica tudo desalinhado num fico ligal.

Se algum puder me dar uma mão eu agradeço.

Valeu!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
hum, não deu pra entender direito. posta um print pra ver se a gente entende aqui.

beleza dr, é mais ou menos assim:

No load do form eu chamo esta função

MontarArvore

A qual é a seguinte

Private Sub MontarArvore()
Dim NODX As Node
Dim Nome1, Nome2, Nome3, Nome4 As String
Dim ContNivel, ContSubNivel As Integer 'para diferenciar a key do data nivel
ContNivel = 0
TrvPlano.Nodes.Clear

Set TrvPlano.ImageList = ImgTrv

Set NODX = TrvPlano.Nodes.Add(, , "Root", "Balancete") ', "Inicio")
'NODX.ExpandedImage = "Aberto"
NODX.Expanded = True

Do While Not DtaCategoria.Recordset.EOF
    CodCatePrc = DtaCategoria.Recordset.Fields("codcategoria") '& "."
    VerTabulacao = DtaCategoria.Recordset.Fields("categoria")
    VerTtlPc
[b]    For i = (Len(VerTabulacao) * 50) To (7920 - (Len(VlrCategoria) * 50))
        VerTabulacao = VerTabulacao & "."
        i = i + 50
    Next i[/b]
    Nome1 = DtaCategoria.Recordset.Fields("CodCategoria") & " - " & VerTabulacao & Format(VlrCategoria, "#,##0.00;(#,##0.00)")
    Set NODX = TrvPlano.Nodes.Add("Root", tvwChild, "Categoria" & DtaCategoria.Recordset.Fields("Codigo"), Nome1) ', "Aberto")
    DtaSubCategoria.RecordSource = "SELECT * FROM SubCategoria WHERE CodCategoria LIKE '" & DtaCategoria.Recordset.Fields("CodCategoria") & "' ORDER BY Codigo"
    DtaSubCategoria.Refresh
    NODX.Expanded = True
        Do While Not DtaSubCategoria.Recordset.EOF
        CodCatePrc = DtaSubCategoria.Recordset.Fields("CodCategoria") & "." & DtaSubCategoria.Recordset.Fields("CodSubCategoria")
        VerTabulacao = DtaSubCategoria.Recordset.Fields("SubCategoria")
        VerTtlPc
            For i = (Len(VerTabulacao) * 50) To (7728 - (Len(VlrCategoria) * 50))
                VerTabulacao = VerTabulacao & "."
                i = i + 50
            Next i
        Nome2 = DtaSubCategoria.Recordset.Fields("CodCategoria") & "." & DtaSubCategoria.Recordset.Fields("CodSubCategoria") & " - " & VerTabulacao & Format(VlrCategoria, "#,##0.00;(#,##0.00)")
        Set NODX = TrvPlano.Nodes.Add("Categoria" & DtaCategoria.Recordset.Fields("Codigo"), tvwChild, "SubCategoria" & DtaSubCategoria.Recordset.Fields("Codigo"), Nome2) ', "Aberto")
        DtaNivel.RecordSource = "SELECT * FROM NIVEL WHERE CodCategoria LIKE '" & DtaCategoria.Recordset.Fields("CodCategoria") & "' AND CodSubCategoria LIKE '" & DtaSubCategoria.Recordset.Fields("CodSubCategoria") & "' ORDER BY Codigo"
        DtaNivel.Refresh
        NODX.Expanded = True
            Do While Not DtaNivel.Recordset.EOF
            CodCatePrc = DtaNivel.Recordset.Fields("CodCategoria") & "." & DtaNivel.Recordset.Fields("CodSubCategoria") & "." & DtaNivel.Recordset.Fields("CodNivel")
            VerTabulacao = DtaNivel.Recordset.Fields("nivel")
            VerTtlPc
                For i = (Len(VerTabulacao) * 50) To (7536 - (Len(VlrCategoria) * 50))
                    VerTabulacao = VerTabulacao & "."
                    i = i + 50
                Next i
            Nome3 = DtaNivel.Recordset.Fields("CodCategoria") & "." & DtaNivel.Recordset.Fields("CodSubCategoria") & "." & DtaNivel.Recordset.Fields("CodNivel") & " - " & VerTabulacao & Format(VlrCategoria, "#,##0.00;(#,##0.00)")
            Set NODX = TrvPlano.Nodes.Add("SubCategoria" & DtaSubCategoria.Recordset.Fields("Codigo"), tvwChild, "Nivel" & ContNivel, Nome3) ', "Aberto")
            DtaSubNivel.RecordSource = "SELECT * FROM SUBNIVEL WHERE CodCategoria LIKE '" & DtaCategoria.Recordset.Fields("CodCategoria") & "' AND CodSubCategoria LIKE '" & DtaSubCategoria.Recordset.Fields("CodSubCategoria") & "' AND CodNivel LIKE '" & DtaNivel.Recordset.Fields("CodNivel") & "'ORDER BY Codigo"
            DtaSubNivel.Refresh
            NODX.Expanded = True
                Do While Not DtaSubNivel.Recordset.EOF
                CodCatePrc = DtaSubNivel.Recordset.Fields("CodCategoria") & "." & DtaSubNivel.Recordset.Fields("CodSubCategoria") & "." & DtaSubNivel.Recordset.Fields("CodNivel") & "." & DtaSubNivel.Recordset.Fields("CodSubNivel")
                VerTabulacao = DtaSubNivel.Recordset.Fields("subnivel")
                VerTtlPc
                    For i = (Len(VerTabulacao) * 50) To (7344 - (Len(VlrCategoria) * 50))
                        VerTabulacao = VerTabulacao & "."
                        i = i + 50
                    Next i
                Nome4 = DtaSubNivel.Recordset.Fields("CodCategoria") & "." & DtaSubNivel.Recordset.Fields("CodSubCategoria") & "." & DtaSubNivel.Recordset.Fields("CodNivel") & "." & DtaSubNivel.Recordset.Fields("CodSubNivel") & " - " & VerTabulacao & Format(VlrCategoria, "#,##0.00;(#,##0.00)")
                Set NODX = TrvPlano.Nodes.Add("Nivel" & ContNivel, tvwChild, "SubNivel" & ContSubNivel, Nome4) ', "Aberto")
                ContSubNivel = ContSubNivel + 1
                DtaSubNivel.Recordset.MoveNext
                NODX.Expanded = True
                Loop
            ContNivel = ContNivel + 1
            DtaNivel.Recordset.MoveNext
            Loop
        DtaSubCategoria.Recordset.MoveNext
        Loop
    DtaCategoria.Recordset.MoveNext
Loop

End Sub
Ond eos laços são chamados de locais diferentes pelo fato da arvore jogar o inicio da palavra mais pra frente e como eu não consigo descobrir o left do node fiz desta forma com um pouco de calculo e rabiscos. rsrsrs bom o valor 50 é de 50 twps q equivalem aproximadamente há um caracter então ele faz o calculo do tamanho que o node.text possui e depois verifica até o tamanho limite q eu preciso menos o tamanho do vlrcategoria que é o valor q vai na frente do plano de conta. Foi assim q eu pensei q iria dar pra alinhar ele a direita mas ta complicado. Bem a outra função q passa o valor esta aqui a baixo.
Public Sub VerTtlPc()
On Error GoTo TRATAERRO
criterio = Chr$(39) & CodCatePrc & "%" & Chr$(39)
verifica_rs
SQL = "select sum(valor) as TtlVlr from findetpc where DATABAIXA >=#" & Format(FrmDetPc.Ctxt(0).Text, "MM/DD/YYYY") & "#"
SQL = SQL & " AND databaixa <= #" & Format(FrmDetPc.Ctxt(1).Text, "MM/DD/YYYY") & "#"
SQL = SQL & " AND pc like " & criterio
Rst.Open SQL, Cnn
If Rst.BOF = True And Rst.EOF = True Then
VlrCategoria = "0,00"

Else
    VlrCategoria = Rst![ttlvlr]
End If
Rst.Close
TRATAERRO:
Select Case Err.Number
Case Is = 0
Case Is = 94
VlrCategoria = "0,00"
Resume Next
Case Else
MsgBox "Ocorreu um erro inexperado informe o código " & Err.Number & " - " & Err.Description & " ao administrador do sistema!", vbInformation, "Montar Valor"
Exit Sub
End Select
End Sub

há eu não achei aqui no forum como colocar um print mas joguei no 4shared quem quiser baixar pra ver como esta ficando, ou então deixa o email pra eu enviar!

http://www.4shared.com/file/72074568/afa83...rified=43af34ac

Sem mais, agradeço a atenção de todos,e Kuroi valeu pela ajuda.

Abraços!

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0

hum, mas no for acho q ta errado você subtrarir o len do 7920. porque o 7920 é onde você quer chegar. se você subtrai o len o tamanho vai variar pra cada um não?? e otra coisa, o i ta sendo somado 51 a cada vez e não 50. porque o for já soma 1 e você ta somando mais 50. ou você soma 49, ou usa o Step, q serve pra isso mesmo.

acho q assim seria o mais certo:

For i = (Len(VerTabulacao) * 50) To 7920 Step 50
        VerTabulacao = VerTabulacao & "."
    Next[/code]

mas ai você teria q ver q cada nivel comeca numa determinada posicao. exemplo, o 1.1 comeca mais pra frente do q o 1 e o 1.2 mais pra frente ainda.

ai você teria q fazer de acordo com o nivel.

mas pra ficar mais facil porque você não usa uma fonte q os caracteres ocupam td o mesmo tamanho?? tipo Lucida Console?? ai você ve pelo numero de caracteres em vez de ficar pegando posicao.

há eu não achei aqui no forum como colocar um print

cara la em cima na tem um botao chamado Inserir Imagem, do lado do botao da carinha. ai você passa o link de uma imagem da internet q ela aparece ai.

ou tem a opcao ali embaxo de anexar algum arquivo.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...