Buongiorno
avrei necessità tramite la formula che vi allego, la possibilità di inserire all'interno del grid control i dati filtrati presenti in un foglio. Il problema che mi appare nella grid control solamente i dati filtrati presenti nella colonna "A" e non i dati presenti nelle colonne successive. Mi potete Aiutare? Grazie mille.
Sub Grid_stand
Dim oCell
Dim oFilterDesc
Dim oTextBox
Dim Arr
dlgmodel = oDialogo11.getModel()
gridmodel = dlgmodel.createInstance("com.sun.star.awt.grid.UnoControlGridModel")
with gridmodel
.PositionX = 352
.PositionY = 35
.Width = 178
.Height = 172
end with
' add columns
columnmodel = gridmodel.ColumnModel
col = columnmodel.createColumn()
col.Title = "STAND"
columnmodel.addColumn(col)
col = columnmodel.createColumn()
col.Title = "ID. COD."
columnmodel.addColumn(col)
col = columnmodel.createColumn()
col.Title = "DESCRIZIONE"
columnmodel.addColumn(col)
col = columnmodel.createColumn()
col.Title = "Q.TA'"
columnmodel.addColumn(col)
If oDialogo11.getControl("TextField1").text <>"" Then
dlgmodel.insertByName("grid", gridmodel)
grid = oDialogo11.getControl("grid")
oListener = (CreateUnoListener("grid_", "com.sun.star.awt.grid.XGridSelectionListener"))
grid.addSelectionListener(oListener)
datamodel = gridmodel.GridDataModel
Dim oFields(0) As New com.sun.star.sheet.TableFilterField2
Sheet = ThisComponent.Sheets(1)
oTextBox = oDialogo11.getControl("TextField1")
Daric = UCase(oTextBox.Text)
c = Sheet.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow + 1
CellRange = Sheet.getCellRangeByName("A2:A" & LastRow)
oFilterDesc = CellRange.createFilterDescriptor(True)
With oFields(0)
.Field = 0
.Operator = com.sun.star.sheet.FilterOperator2.BEGINS_WITH
.StringValue = Daric
End With
oFilterDesc = CellRange.createFilterDescriptor(True)
With oFilterDesc
.ContainsHeader = False
.CopyOutputData = False
.FilterFields2 = oFields()
End With
CellRange.filter(oFilterDesc)
ranges = CellRange.queryVisibleCells()
If Ubound(ranges.RowDescriptions) > -1 Then
ReDim Arr(0 To Ubound(ranges.RowDescriptions))
Dim a(0 To Ubound(ranges.RowDescriptions))
For Each oCell in ranges.Cells
Arr(x) = oCell.CellAddress.Row
a(x) = oCell.DataArray(0)
x = x +1
Next
datamodel.addRows(a, a)
End if
End if
End Sub
Ultima modifica di Luka2017 il martedì 30 luglio 2024, 22:12, modificato 2 volte in totale.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Visto che nel Dialog2 non esiste nessun oggetto di nome textbox2, ho preferito prepararti la seguente macro che è un punto di partenza utile per capire come popolare i campi che desidererai riempire. In un msgbox ho inserito i richiami ai vari campi della riga selezionata
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Sub grid_selectionChanged(oEvt)
indice=oEvt.Source.CurrentRow
row_selected=datamodel.GetRowData(indice)
oDialogo16.getControl("TextField1").Text = row_selected(1)
End Sub
Buonasera,
A seguito di questa macro è possibile modificare il dato presente nel
oDialogo16.getControl("TextField1").Text
Per salvarlo nella cella che fa parte della riga selezionata nel grid control?
Grazie mille in anticipo