Jestli ještě mohu: tenhle kód funguje bezvadně v writeru, ale nedaří se mi jej rozchodit v calcu, přitom zahlásí jen že nedostal textový vstup, spustí dialog, kde lze vstup znovu zadat (resp. upravit, pokud se zadání podaří) a nakonec se QR kód vytvoří. Tzn. samotná výroba kódu funguje i v calcu bez problémů a bez úprav, to zadání se mi ale nedaří upravit. Věděli byste kde je zakopaný pes?
Jo tak on ten kód ale teky funguje pouze je-li umístěn ve složce "Makra a dialogy OpenOfiice", když je v nějakém modulu1 tak hlásí chybu i v tom tvaru uvedeném. Lze nějak editovat makro ve složce "Makra a dialogy OpenOffice", běžný způsob pomocí editoru úpravy nepovoluje.
Začínám taky pomalu chápat, že níže uvedený kód se neobejde bez nainstalovaných podpůrných souborů takže bych měl uvést že jsem jej získal zde: http://extensions.services.openoffice.o … -generator. Nicméně stále bych byl vděčný komukoli kdo mi poradí jak tento prográmek aplikovat na calc.
REM ***** BASIC *****
GLOBAL oDlg
GLOBAL oSelect as String
Sub Main
oGoogle = "http://google.com"
oSFA = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
if oSFA.exists(oGoogle)= False then
MsgBox (Trans(0) & oGoogle & chr(10) & Trans(1))
exit sub
endif
oSelect = GetSelection()
' if oSelect = false then exit sub
StartDialog
End Sub
Sub StartDialog
DialogLibraries.LoadLibrary("QRcodeGen")
oBibli = DialogLibraries.GetByName("QRcodeGen")
oDialog = oBibli.GetByName("QRcodeGen")
oDlg = CreateUnoDialog(oDialog)
oContent = oDlg.GetControl("Content")
oContent.Text = oSelect
oDlg.GetControl("Label1").text = Trans(4)
oDlg.GetControl("Label2").text = Trans(5)
oDlg.GetControl("Label3").text = Trans(6)
oDlg.GetControl("Label4").text = Trans(7)
oDlg.GetControl("Cancel").label = Trans(8)
oDlg.execute()
End Sub
Sub ExecDialog
sSize = oDlg.getControl("Size").SelectedItem
sContent = oDlg.getControl("Content").text
sEncode = oDlg.getControl("Encode").SelectedItem
if len(sContent) < 1 then
ErrorHandling(Trans(9))
exit sub
elseif len(sContent) > 160 then
ErrorHandling(Trans(10))
exit sub
End if
oDlg.endExecute()
sURL = "http://chart.apis.google.com/chart?cht=qr&chs="
oQR = ConvertToURL(sURL & sSize & "&chl=" & sContent & "&choe=" & sEncode)
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = oQR
args1(1).Name = "FilterName"
args1(1).Value = "<Alle formater>"
args1(2).Name = "AsLink"
args1(2).Value = false
args1(3).Name = "Style"
args1(3).Value = "QRcodeGen"
dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())
End Sub
Sub ErrorHandling(Text$)
msgbox (Text$, 16, Trans(3))
End sub
Function GetSelection()
oDoc = ThisComponent
oQuoi = oDoc.CurrentSelection.ImplementationName
if oQuoi = "SwXTextRanges" then
oVC = oDoc.getCurrentController.getViewCursor
'on error goto Erreur
oTC = oVC.getText.createTextCursorByRange(oVC)
GetSelection = oTC.string
exit function
endif
Erreur:
ErrorHandling(Trans(2))
End function
Function Localize()
oLocal = GetStarOfficeLocale()
oLocale = ThisComponent.CharLocale
Localize = oLocale.Language
End function
Function Trans(nStr)
english = array("No access to: ", _
"Check if internet works!", _
"Only text can be selected", _
"Error", _
"Size", _
"Text content", _
"Encoding", _
"WebService provided by Google", _
"Cancel", _
"No text input in content!", _
"Too much text: does not exceed 160 characters.", _
)
french = array( "Aucun accès pour : ", _
"Vérifiez si internet fonctionne !", _
"Sélection de texte uniquement", _
"Erreur", _
"Taille", _
"Contenu", _
"Encodage", _
"Service web fourni par Google", _
"Annuler", _
"Aucun texte dans le contenu !", _
"Trop de texte : maximum 160 caractères.", _
)
if Localize = "fr" then
Trans = french(nStr)
else
Trans = english(nStr)
endif
End Function
Editoval ludviktrnka (21. 7. 2014 20:41:29)