USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  PARA O TREZE/OUTRAS FERAS
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 14/09/2012 01:30 hs            
Olha, não teve jeito, quando você carrega um MSHFlex direto do recordset, ele tem um comportamente muito estranho, as vezes ao clicar seleciona toda a grade, outras vezes trava a grade, voce não consegue nem o foco na grade.
Então, estou carregando e outra forma paginando o recordset, e preenchendo as TextMatrix pela tabela, até ai tudo agora funciona bem, mas tem mais um detalhe.
Desta forma o FormatString da Grade não funciona, então tem que preencher o cabeçário também. E agora o problema, como o FormatString naõ funciona, não estou conseguindo alinhar as colunas da forma que preciso, só ficam alinhadas a esquerda.
Já Tentei
.ColAlignment = flexAlignRightCenter
.ColAlignment = 1
.CellAlignment = flexAlignRightCenter
Nada funciona.
Consegui alinhar mais ou menos, mais para a direita um pouco assim:
Format$(Format$(.TextMatrix(liJ, Col), "###,###,##0.00"), "@@@@@@@@@@@@@@")
Mas ficam desalinhadas dependendo do tamanho do campo.
Sabem de alguma informação???

vlu//
   
Treze
não registrado
ENUNCIADA !
Postada em 14/09/2012 10:20 hs   
Ramos veja bem o flexgrid é algo mais simples do que imaginamos, eu por exemplo tenho um flexgrid em um programa de folha de ponto onde insiro as horas direto no grid, e a formatação das horas é automática, com calculo de hora extra inclusive, vou explicar a forma básica de se utilizar o flexgrrid sem ter problemas.

primeira coisa a fazer é preencher o flexgrid, eu costumo criar uma função para o cabeçalho, e chamo esta função sempre que desejo apagar o flex e preencher com novos dados, então vamos lá

veja:

Sub CabecalhoGrid()
With MSFlexGrid1
.Rows = 1
.Cols = 4
.FixedCols = 0
.FormatString = "re|nome de Guerra|Nome|<Cargo função"
.ColWidth(0) = 800
.ColWidth(1) = 2000
.ColWidth(2) = 4500
.ColWidth(3) = 3000
End With

acima a função que cria o cabeçalho do flexgrid, repare que determino que o grid terá 01 linha e 04 colunas, não deixo nenhuma colana fixa

depois uso o formatstring para preencher o titilo das colunas, veja que se eu usar <, > , ^ eu determino o alinhamento.

com ColWidth(numero da coluna) eu determino a largura de cada coluna.

Pronto a primeira formatação está feita.

depois vou preencher o grid então procedo da seguinte forma

' chamo o cabeçalho
CabecalhoGrid
' e preencho
Dim Linha As Integer
sSQL= " SELECT * FROM tabela"
Set RS  = CONN.Execute(sSQL)
Do While Not RS.EOF
With MSFlexgrid1
.Rows = .Rows + 1 ' o cabeçalho vai ter apenas uma linha então a cada loop insiro mais uma
Linha = .Rows - 1   ' aqui determino a posição em que foi criada a linha
.TextMatrix(Linha, 0) = RS!re
.TextMatrix(Linha, 1) = RS!guerra
.TextMatrix(Linha, 2) = RS!Nome
.TextMatrix(Linha, 3) = RS!Cargo
RS.MoveNext
End With
Loop

durante o Preenchimento vc pode até formatar uma determinada linha, tipo

.TextMatrix(linha, 0) = Format(RS!telefone,"(@@) @@@@-@@@@")

e assim vai

apos isso vc pode usar as funções click, entercel, etc sem problema pois a primeira parte ja foi feita.
   
Tiranossauro
não registrado
ENUNCIADA !
Postada em 14/09/2012 16:20 hs   
         .ColAlignment(0) = 1  ' Alinha à esquerda
        .ColAlignment(0) = 4  ' Alinha à Centralizado
        .ColAlignment(0) = 7  ' Alinha à Direita


substitua o zero pelo número da coluna
   
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 14/09/2012 16:26 hs            
treze olha ai:
With msfCLIENTES
        .Redraw = False
        .Clear
        .Cols = 8
        .SelectionMode = flexSelectionByRow
        .FillStyle = flexFillRepeat
        .Rows = 1
        .Gridlines = chkGRADE.Value
        .BackColorSel = lfundoSELECT
        .ForeColorSel = lfrenteSELECT
        ' aqui antes eu colocava o FormatString
        ' com MSHFlex ele apaga o cabeçário quando recebe o foco
        ' então tive que fazer assim
        .ColWidth(0) = (700 * lwidTH)
        .TextMatrix(0, 0) = "CODIGO"
        .ColWidth(1) = (3500 * lwidTH)
        .TextMatrix(0, 1) = "NOME DO CLIENTE"
        .ColWidth(2) = (2550 * lwidTH)
        .TextMatrix(0, 2) = "FANTASIA/APELIDO"
        .ColWidth(3) = (1000 * lwidTH)
        .TextMatrix(0, 3) = "C.P.F./C.N.P.J."
        .ColWidth(4) = (950 * lwidTH)
        .TextMatrix(0, 4) = "TELEFONE1"
        .ColWidth(5) = (950 * lwidTH)
        .TextMatrix(0, 5) = "TELEFONE2"
        .ColWidth(6) = (950 * lwidTH)
        .TextMatrix(0, 6) = "CELULAR"
        .ColWidth(7) = (800 * lwidTH)
        .TextMatrix(0, 7) = "CÓD.CONV."
        If lREGISTROS > 0 Then
            iZEBRA = 0
            rsCLIENTES.MoveMin
            txtCODCLI.Text = rsCLIENTES!codcli
            txtNOMECLI.Text = rsCLIENTES!nomecli
            For liJ = 1 To lREGISTROS
                .Rows = (.Rows + 1)
                .Row = liJ
                .Col = 0
                .ColSel = .Cols - 1
                .TextMatrix(liJ, 0) = IIf(IsNull(rsCLIENTES!codcli), "", rsCLIENTES!codcli)
                .TextMatrix(liJ, 1) = IIf(IsNull(rsCLIENTES!nomecli), "", rsCLIENTES!nomecli)
                .TextMatrix(liJ, 2) = IIf(IsNull(rsCLIENTES!fantasia), "", rsCLIENTES!fantasia)
                .TextMatrix(liJ, 3) = IIf(IsNull(rsCLIENTES!cpfcnpj), "", rsCLIENTES!cpfcnpj)
                .TextMatrix(liJ, 4) = IIf(IsNull(rsCLIENTES!fone1), "", rsCLIENTES!fone1)
                .TextMatrix(liJ, 5) = IIf(IsNull(rsCLIENTES!FONE2), "", rsCLIENTES!FONE2)
                .TextMatrix(liJ, 6) = IIf(IsNull(rsCLIENTES!celular), "", rsCLIENTES!celular)
                .TextMatrix(liJ, 7) = IIf(IsNull(rsCLIENTES!codconv), "", rsCLIENTES!codconv)
                If iZEBRA = 0 Then
                    cor = lfundoZEBRA1
                    cor1 = lfrenteZEBRA1
                    iZEBRA = iZEBRA + 1
                Else
                    cor = lfundoZEBRA2
                    cor1 = lfrenteZEBRA2
                    iZEBRA = 0
                End If
                .CellBackColor = cor
                .CellForeColor = cor1
                rsCLIENTES.MoveNext
            Next liJ
            .Row = 1
            .Col = 0
            .ColSel = .Cols - 1
            
        End If
    End With

É isto ai amigo, agora já tentei centralizar as colunas de toda forma, nada funciona.

vlu//
   
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 14/09/2012 16:28 hs            
Lembrando que a resposta acima do Tiranossauro, funciona muito bem no MSFlex, mas no MSHFlex, não. Etive que migrar para o MSHflex, por causa do BD.

vlu//
   
Treze
não registrado
ENUNCIADA !
Postada em 14/09/2012 16:44 hs   
Veja bem é praticamente a mesma coisa que o flexgrid


Private Sub Form_Load()
With MSHFlexGrid1
.Rows = 2
.Cols = 3
.FixedRows = 1
.FixedCols = 0
.FormatString = "^codigo|^nome|^idade"
.ColWidth(0) = 1000
.ColWidth(1) = 1000
.ColWidth(2) = 1000
End With
End Sub

simplesmente cria o grid com uma linha e o cabeçalho alinhados ao centro
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página