von openmind » Mi, 30.07.2003 15:14
Manchmal gibt es Schwierigkeiten, welche von Dingen abhängen, die nichts mit dem Code zu tun haben:
1. Copy und Paste aus einer Website in die BasicIDE klappt bei mir nicht immer sehr gut. Manchmal hab ich dabei Stress wegen zusätzlichen oder Fehlenden Zeilenumbrüchen die durch C&P (Linux, OOo xyz) entstehen. Massnahme:

?? Abtippen ??
2. Ich bilde mir ein, dass es manchmal nötig ist ein Script aus dem Document heraus auszurufen und nicht aus der IDE. Massnahme: Man kann man zu Testzwecken einen Button machen, der im Document ist und mit dem BasicCode verknüpft wird. Ene andere Variante is jedesmal Extras - Macros - Macros und dann das Macros auswählen und ausführen drücken. Kann sein, dass das paranoid ist aber bei einigen Beispielen hatte ich das Gefühl das hilft.
Zum konkreten Beispiel mit den Feldbefehlen:
hakt es jetzt ab:
If currentField.VariableName = "Name" then
Möglicherweise enthält das Dokument TextFields, die keinen VariableNamen haben (Variablenfeld, Format Text, Name und Wert gesetzt?). Hmmm.. Man müsste im COde testen, ob das currentField das Interface unterstützt, welches wir benötigen. Ich werde Dir den entsprechenden Code nachreichen. Inzwischen hab ich Dir was informatives:
(code nicht von mir ... )
Code: Alles auswählen
Sub Main
DisplayMethods( thisComponent, "" )
DisplayMethods( thisComponent, "props" )
DisplayMethods( thisComponent, "interfaces" )
End Sub
Sub DisplayMethods(oObj As Object, SWhat As String)
DIM sMethodList As String, sMsgBox As String
DIM fs, ep As Integer
DIM i As Integer
DIM EOL As Boolean
if sWhat = "" then
sMethodList = oObj.DBG_methods
elseif sWhat = "props" then
sMethodList = oObj.DBG_Properties
else
sMethodList = oObj.DBG_SupportedInterfaces
endif
fs = 1
EOL = FALSE
While fs <= Len(sMethodList)
sMsgBox = ""
For i = 0 to 15
ep = InStr(fs, sMethodList, ";")
if ep = 0 then
ep = Len(sMethodList)
endif
sMsgBox = sMsgBox & Mid$(sMethodList, fs, ep - fs) & Chr$(13)
fs = ep + 1
Next i
MsgBox sMsgBox
Wend
End Sub
Die Methode DisplayMethods zeigt dir die Methoden, Properties und Interfaces an, welche ein Object besitzt. Das Beispiel in der Main-Routine zeigt die Methoden, Properties und Interfaces an, welche für das Object thisComponent vorhanden sind. Ultrapraktisch, um mehr über ein Objekt (TextField?) herauszufinden.
Manchmal gibt es Schwierigkeiten, welche von Dingen abhängen, die nichts mit dem Code zu tun haben:
1. Copy und Paste aus einer Website in die BasicIDE klappt bei mir nicht immer sehr gut. Manchmal hab ich dabei Stress wegen zusätzlichen oder Fehlenden Zeilenumbrüchen die durch C&P (Linux, OOo xyz) entstehen. Massnahme: :cry: ?? Abtippen ??
2. Ich bilde mir ein, dass es manchmal nötig ist ein Script aus dem Document heraus auszurufen und nicht aus der IDE. Massnahme: Man kann man zu Testzwecken einen Button machen, der im Document ist und mit dem BasicCode verknüpft wird. Ene andere Variante is jedesmal Extras - Macros - Macros und dann das Macros auswählen und ausführen drücken. Kann sein, dass das paranoid ist aber bei einigen Beispielen hatte ich das Gefühl das hilft.
Zum konkreten Beispiel mit den Feldbefehlen:
[quote]hakt es jetzt ab:
If currentField.VariableName = "Name" then [/quote]
Möglicherweise enthält das Dokument TextFields, die keinen VariableNamen haben (Variablenfeld, Format Text, Name und Wert gesetzt?). Hmmm.. Man müsste im COde testen, ob das currentField das Interface unterstützt, welches wir benötigen. Ich werde Dir den entsprechenden Code nachreichen. Inzwischen hab ich Dir was informatives:
(code nicht von mir ... )
[code]Sub Main
DisplayMethods( thisComponent, "" )
DisplayMethods( thisComponent, "props" )
DisplayMethods( thisComponent, "interfaces" )
End Sub
Sub DisplayMethods(oObj As Object, SWhat As String)
DIM sMethodList As String, sMsgBox As String
DIM fs, ep As Integer
DIM i As Integer
DIM EOL As Boolean
if sWhat = "" then
sMethodList = oObj.DBG_methods
elseif sWhat = "props" then
sMethodList = oObj.DBG_Properties
else
sMethodList = oObj.DBG_SupportedInterfaces
endif
fs = 1
EOL = FALSE
While fs <= Len(sMethodList)
sMsgBox = ""
For i = 0 to 15
ep = InStr(fs, sMethodList, ";")
if ep = 0 then
ep = Len(sMethodList)
endif
sMsgBox = sMsgBox & Mid$(sMethodList, fs, ep - fs) & Chr$(13)
fs = ep + 1
Next i
MsgBox sMsgBox
Wend
End Sub[/code]
Die Methode DisplayMethods zeigt dir die Methoden, Properties und Interfaces an, welche ein Object besitzt. Das Beispiel in der Main-Routine zeigt die Methoden, Properties und Interfaces an, welche für das Object thisComponent vorhanden sind. Ultrapraktisch, um mehr über ein Objekt (TextField?) herauszufinden.