REMOVER COLUNA ESPECIFICA NO FLEXGRID
Pessoal,
Tenho um flexgrid que carrega dados de um arquivo. Neste grid o usuário tem a possibilidade de excluir uma linha especÃfica, selecionada por ele (até ai tudo bem). [txt-color=#ff0000]Bom o problema e que até o momento não consegui desenvolver uma rotina que possibilite o usuário excluir um coluna especÃfica.[/txt-color]
Esperoa ajuda de você.
Um abraço a todos...
Tenho um flexgrid que carrega dados de um arquivo. Neste grid o usuário tem a possibilidade de excluir uma linha especÃfica, selecionada por ele (até ai tudo bem). [txt-color=#ff0000]Bom o problema e que até o momento não consegui desenvolver uma rotina que possibilite o usuário excluir um coluna especÃfica.[/txt-color]
Esperoa ajuda de você.
Um abraço a todos...
WCosta
Bom Dia
No caso, você teria que implementar algo no estilo abaixo:
Retirar a coluna 4 de 7 Colunas
Eu não testei aqui, mas deve resolver.
[s50]
Bom Dia
No caso, você teria que implementar algo no estilo abaixo:
Retirar a coluna 4 de 7 Colunas
Public Sub RemoveColuna (flxTemp as FlexGrid, rColuna as Integer)
Dim iCol as Integer, iLinha as Integer
For iCol = rColuna to flxTemp.Cols - 2
For iLinha = 1 to flxTemp.Rows-1
flxTemp.TextMatrix(iLinha, iCol) = flxTemp.TextMatrix(iLinha, iCol +1)
Next
Next
End Sub
Eu não testei aqui, mas deve resolver.
[s50]
Willian,
Bom, vamos antes de tudo a uma explicação.
Os objetos grids do VB geralmente possuem uma propertie chamada colposition, quando colposition é alterada, a coluna faz um "swap" sendo realocada na nova posição que o programa determinou.
Bom, explicado isso, fazer uma coluna ser excluÃda se torna fácil, pois é só jogar a coluna para a última posição e daà reduzir o número de colunas do flexgrid em -1.

Aqui está o programa que montei para exemplificar como funciona este tipo de rotina, com certeza vai te ajudar a resolver seu problema.
Bom, vamos antes de tudo a uma explicação.
Os objetos grids do VB geralmente possuem uma propertie chamada colposition, quando colposition é alterada, a coluna faz um "swap" sendo realocada na nova posição que o programa determinou.
Bom, explicado isso, fazer uma coluna ser excluÃda se torna fácil, pois é só jogar a coluna para a última posição e daà reduzir o número de colunas do flexgrid em -1.

Aqui está o programa que montei para exemplificar como funciona este tipo de rotina, com certeza vai te ajudar a resolver seu problema.
Option Explicit
Private Sub Command1_Click()
If Combo1.ListIndex > -1 Then
RemoverColunaFlexGrid MSFlexGrid1, Combo1.ListIndex
Combo1.RemoveItem Combo1.ListIndex
Combo1.ListIndex = -1
End If
End Sub
Public Sub RemoverColunaFlexGrid(oFlex As MSFlexGrid, iColuna As Integer)
With oFlex
.Redraw = False
If iColuna < .Cols Then
.ColPosition(iColuna) = .Cols - 1
.Cols = .Cols - 1
End If
.Redraw = True
End With
End Sub
Private Sub Form_Load()
Dim FSO As New FileSystemObject
Dim FIL As File
Dim I As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
MSFlexGrid1.Rows = 1
MSFlexGrid1.Cols = 5
MSFlexGrid1.TextMatrix(0, 0) = "Arquivo"
MSFlexGrid1.TextMatrix(0, 1) = "Tamanho"
MSFlexGrid1.TextMatrix(0, 2) = "Criado em"
MSFlexGrid1.TextMatrix(0, 3) = "Modificado em"
MSFlexGrid1.TextMatrix(0, 4) = "Tipo"
MSFlexGrid1.ColWidth(0) = 2000
MSFlexGrid1.ColWidth(1) = 1000
MSFlexGrid1.ColWidth(2) = 1200
MSFlexGrid1.ColWidth(3) = 1200
MSFlexGrid1.ColWidth(4) = 2200
For Each FIL In FSO.getfolder("c:\").Files
MSFlexGrid1.AddItem FIL.Name & vbTab & FIL.Size & vbTab & Format(FIL.DateCreated, "dd/mm/yyyy") & vbTab & Format(FIL.DateLastModified, "dd/mm/yyyy") & vbTab & FIL.Type
Next
If MSFlexGrid1.Cols > 0 Then
For I = 0 To MSFlexGrid1.Cols - 1
Combo1.AddItem MSFlexGrid1.TextMatrix(0, I)
Next
Combo1.ListIndex = 0
Command1.Enabled = True
End If
End Sub
WebMaster
Realmente, bem mais simples e menos "braçal"
[s92]
Realmente, bem mais simples e menos "braçal"
[s92]
Kepllar e Webmaster
Muito obrigado por me ajudar nesta empreitada.
Muito obrigado por me ajudar nesta empreitada.
Tópico encerrado , respostas não são mais permitidas