von Stephan » Mi, 01.02.2017 20:08
habe allerdings keine Möglichkeit gesehen die Befehle des Dialogs anzusehen....
mmh, ja ... mir war garnicht bewusst das in dieser Extension der Dialog zur Laufzeit erzeugt wird. Da das geschieht steht das natürlich alles lediglich im Basic-Code und ist nicht über den Dialog zugewiesen.
Im Konkreten werden die Button über das Makro Sub DlgTool_Button (siehe LibDataForm) erzeugt und mit Funktion belegt, im Einzelnen sind das die Aufrufe (siehe BasicModul "DataForm") :
Code: Alles auswählen
DlgTool_Button(oDlg, -5, 17, btnWidth, 14, "btnNuovo", strLocale(CMDNEW))
DlgTool_Button(oDlg, -5, 35, btnWidth, 14, "btnElimina", strLocale(CMDDELETE))
DlgTool_Button(oDlg, -5, 54, btnWidth, 14, "btnRipristina", strLocale(CMDRESTORE))
DlgTool_Button(oDlg, -5, 75, btnWidth, 14, "btnPrec", strLocale(CMDFINDPREV))
DlgTool_Button(oDlg, -5, 93, btnWidth, 14, "btnSucc", strLocale(CMDFINDNEXT))
DlgTool_Button(oDlg, -5, 110, btnWidth, 14, "btnCriteri", strLocale(CMDCRITERIA))
DlgTool_Button(oDlg, -5, 133, btnWidth, 14, "btnChiudi", strLocale(CMDCLOSE))
die entsprechenden Ereignis-Makros zu diesen Buttons sind:
Code: Alles auswählen
Sub btnNuovo_actionPerformed(oEvent)
if salvaRecord = True Then ' se non ci sono errori nel salvataggio
With oDlg.getControl("scrlBarra")
.Value = .Maximum
End With
nuovoRecord()
End If
End Sub
Sub btnElimina_actionPerformed(oEvent)
Dim oRighe as Object
Dim i as Integer
Dim oAddr
Select Case modalita
Case CRITERI ' azzera i criteri
For i = 1 to nCols
oDlg.getControl("txtCampo" & i).Text = ""
Next
Case MODULO ' rimuove il record corrente
if msgbox(strLocale(MSGDELRECORD), 1 + 48) = 2 Then
' l'utente ha premuto "Annulla"
Exit Sub
End If
oAddr = oRange.getRangeAddress
oAddr.StartRow = oAddr.StartRow + indiceRecord
oAddr.EndRow = oAddr.StartRow
oFoglio.removeRange(oAddr, com.sun.star.sheet.CellDeleteMode.UP)
' aggiorno nRows (le dimensioni di oRange vengono
' aggiornate automaticamente)
nRows = oRange.getRows.Count
' decremento limite massimo della barra
With oDlg.getControl("scrlBarra")
.Maximum = .Maximum - 1
End With
if indiceRecord = nRows Then
' è stato eliminato l'ultimo record
With oDlg.getControl("scrlBarra")
.Value = .Maximum
End With
nuovoRecord()
Else
scorriRecord(indiceRecord)
End If
End Select
End Sub
Sub btnRipristina_actionPerformed(oEvent)
Dim i as Integer
Select Case modalita
Case CRITERI ' ripristina criteri
For i = 1 to nCols
oDlg.getControl("txtCampo" & i).Text = arrCriteri(i)
Next
Case MODULO ' ripristina valori record
if indiceRecord = nRows Then
' si tratta di un nuovo record ancora non salvato
For i = 1 to nCols
' azzera tutti i campi
oDlg.getControl("txtCampo" & i).Text = ""
Next
Else
' rilegge il record corrente dal foglio
scorriRecord(indiceRecord)
End If
oDlg.getControl("btnRipristina").Enable = False
End Select
selezionaTxt(oDlg.getControl("txtCampo1"))
End Sub
Sub btnPrec_actionPerformed(oEvent)
trovaPrecSucc(PREC)
End Sub
Sub btnSucc_actionPerformed(oEvent)
trovaPrecSucc(SUCC)
End Sub
Sub btnCriteri_actionPerformed(oEvent)
cambiaModalita
selezionaTxt(oDlg.getControl("txtCampo1"))
End Sub
Gruß
Stephan
[quote]habe allerdings keine Möglichkeit gesehen die Befehle des Dialogs anzusehen.... [/quote]
mmh, ja ... mir war garnicht bewusst das in dieser Extension der Dialog zur Laufzeit erzeugt wird. Da das geschieht steht das natürlich alles lediglich im Basic-Code und ist nicht über den Dialog zugewiesen.
Im Konkreten werden die Button über das Makro Sub DlgTool_Button (siehe LibDataForm) erzeugt und mit Funktion belegt, im Einzelnen sind das die Aufrufe (siehe BasicModul "DataForm") :
[code] DlgTool_Button(oDlg, -5, 17, btnWidth, 14, "btnNuovo", strLocale(CMDNEW))
DlgTool_Button(oDlg, -5, 35, btnWidth, 14, "btnElimina", strLocale(CMDDELETE))
DlgTool_Button(oDlg, -5, 54, btnWidth, 14, "btnRipristina", strLocale(CMDRESTORE))
DlgTool_Button(oDlg, -5, 75, btnWidth, 14, "btnPrec", strLocale(CMDFINDPREV))
DlgTool_Button(oDlg, -5, 93, btnWidth, 14, "btnSucc", strLocale(CMDFINDNEXT))
DlgTool_Button(oDlg, -5, 110, btnWidth, 14, "btnCriteri", strLocale(CMDCRITERIA))
DlgTool_Button(oDlg, -5, 133, btnWidth, 14, "btnChiudi", strLocale(CMDCLOSE))
[/code]
die entsprechenden Ereignis-Makros zu diesen Buttons sind:
[code]Sub btnNuovo_actionPerformed(oEvent)
if salvaRecord = True Then ' se non ci sono errori nel salvataggio
With oDlg.getControl("scrlBarra")
.Value = .Maximum
End With
nuovoRecord()
End If
End Sub
Sub btnElimina_actionPerformed(oEvent)
Dim oRighe as Object
Dim i as Integer
Dim oAddr
Select Case modalita
Case CRITERI ' azzera i criteri
For i = 1 to nCols
oDlg.getControl("txtCampo" & i).Text = ""
Next
Case MODULO ' rimuove il record corrente
if msgbox(strLocale(MSGDELRECORD), 1 + 48) = 2 Then
' l'utente ha premuto "Annulla"
Exit Sub
End If
oAddr = oRange.getRangeAddress
oAddr.StartRow = oAddr.StartRow + indiceRecord
oAddr.EndRow = oAddr.StartRow
oFoglio.removeRange(oAddr, com.sun.star.sheet.CellDeleteMode.UP)
' aggiorno nRows (le dimensioni di oRange vengono
' aggiornate automaticamente)
nRows = oRange.getRows.Count
' decremento limite massimo della barra
With oDlg.getControl("scrlBarra")
.Maximum = .Maximum - 1
End With
if indiceRecord = nRows Then
' è stato eliminato l'ultimo record
With oDlg.getControl("scrlBarra")
.Value = .Maximum
End With
nuovoRecord()
Else
scorriRecord(indiceRecord)
End If
End Select
End Sub
Sub btnRipristina_actionPerformed(oEvent)
Dim i as Integer
Select Case modalita
Case CRITERI ' ripristina criteri
For i = 1 to nCols
oDlg.getControl("txtCampo" & i).Text = arrCriteri(i)
Next
Case MODULO ' ripristina valori record
if indiceRecord = nRows Then
' si tratta di un nuovo record ancora non salvato
For i = 1 to nCols
' azzera tutti i campi
oDlg.getControl("txtCampo" & i).Text = ""
Next
Else
' rilegge il record corrente dal foglio
scorriRecord(indiceRecord)
End If
oDlg.getControl("btnRipristina").Enable = False
End Select
selezionaTxt(oDlg.getControl("txtCampo1"))
End Sub
Sub btnPrec_actionPerformed(oEvent)
trovaPrecSucc(PREC)
End Sub
Sub btnSucc_actionPerformed(oEvent)
trovaPrecSucc(SUCC)
End Sub
Sub btnCriteri_actionPerformed(oEvent)
cambiaModalita
selezionaTxt(oDlg.getControl("txtCampo1"))
End Sub
[/code]
Gruß
Stephan