von ChristianMuc » Do, 15.01.2009 21:42
Hallo,
Ich habe bisher folgendes realisiert:
Aus einer Calctabelle lese per Zufallsgenerator eine Rechenaufgabe für Schüler aus.
Die Aufgabe weise ich in einem Impresspresentation einer Textbox zu. Leider zeigt mir diese Textbox keine Veränderung an.
Erst wenn ich per Maus auf die Textbox klicke, wird der Text geändert. Ich benoetige eine Prozedur, die das Neuzeichnen der Textbox erzwingt. Wie kann man das realisieren?
Vielen Dank für Eure Hilfe
Christian
Hier meine amatuerhafter Code:
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Sub Main
dim impress as object
dim zeichenblatt as object
dim Ausgabebox as object
dim Tabellenblatt as object
dim myFileProp(0) as New com.sun.star.beans.PropertyValue
dim Verzeichnispfad as string
dim Impresspfad as string
dim Tabellenname as string
dim url as string
dim Calcanwendung
dim i as integer
dim Anzahl_der_Durchlaeufe as integer
dim Startzeile as long
dim Endzeile as long
dim Aufgabenzeile as integer
dim Schleife_verlassen as boolean
Tabellenname="aufgabentabelle.ods"
impress = ThisComponent
Impresspfad=impress.location ' Abfrage des Pfad der Datei beamer.odp
GlobalScope.BasicLibraries.LoadLibrary("Tools") 'Laedt die Bibliothek mit Stringtools
Verzeichnispfad= DirectoryNameoutofPath(Impresspfad , "/")
REM Abfrage welche das Textfeld mit Namen Ausgabebox ist
zeichenblatt=impress.getdrawpages
for i=0 to zeichenblatt.getcount()
if zeichenblatt.getbyname("page1").getbyindex(i).name="Ausgabebox"then
Ausgabebox=zeichenblatt.getbyname("page1").getbyindex(i)
exit for
end if
next i
REM Verstecktes Oeffnen der Calctabelle
url=converttourl(Verzeichnispfad & "/" & Tabellenname)
myFileProp(0).name="Hidden"
myFileProp(0).value=True
Calcanwendung = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
REM print rnd()
Tabellenblatt=Calcanwendung.getsheets.getbyname("Tabelle1")
REM Suche die letzte Zeile in der Tabelle die eine Aufgabe enthält
Startzeile=1
Endzeile=Startzeile
while Schleife_verlassen = false
Endzeile=Endzeile+1
if Tabellenblatt.getcellbyposition(0,Endzeile).string="" then Schleife_verlassen=True
wend
xray zeichenblatt.getbyname("page1")
REM impress.presentation.start() 'Startet die Präsentation
Anzahl_der_Durchlaeufe=10
for i = 1 to Anzahl_der_Durchlaeufe
Aufgabenzeile= int (rnd()*(Endzeile-Startzeile)+Startzeile)
Ausgabebox.string= Tabellenblatt.getcellbyposition(1,Aufgabenzeile).string
wait (100)
next i
Calcanwendung.close(false) 'Schliesst wieder die versteckte Calctabelle
end sub
Hallo,
Ich habe bisher folgendes realisiert:
Aus einer Calctabelle lese per Zufallsgenerator eine Rechenaufgabe für Schüler aus.
Die Aufgabe weise ich in einem Impresspresentation einer Textbox zu. Leider zeigt mir diese Textbox keine Veränderung an.
Erst wenn ich per Maus auf die Textbox klicke, wird der Text geändert. Ich benoetige eine Prozedur, die das Neuzeichnen der Textbox erzwingt. Wie kann man das realisieren?
Vielen Dank für Eure Hilfe
Christian
Hier meine amatuerhafter Code:
[code]REM ***** BASIC *****
Option Explicit
Sub Main
dim impress as object
dim zeichenblatt as object
dim Ausgabebox as object
dim Tabellenblatt as object
dim myFileProp(0) as New com.sun.star.beans.PropertyValue
dim Verzeichnispfad as string
dim Impresspfad as string
dim Tabellenname as string
dim url as string
dim Calcanwendung
dim i as integer
dim Anzahl_der_Durchlaeufe as integer
dim Startzeile as long
dim Endzeile as long
dim Aufgabenzeile as integer
dim Schleife_verlassen as boolean
Tabellenname="aufgabentabelle.ods"
impress = ThisComponent
Impresspfad=impress.location ' Abfrage des Pfad der Datei beamer.odp
GlobalScope.BasicLibraries.LoadLibrary("Tools") 'Laedt die Bibliothek mit Stringtools
Verzeichnispfad= DirectoryNameoutofPath(Impresspfad , "/")
REM Abfrage welche das Textfeld mit Namen Ausgabebox ist
zeichenblatt=impress.getdrawpages
for i=0 to zeichenblatt.getcount()
if zeichenblatt.getbyname("page1").getbyindex(i).name="Ausgabebox"then
Ausgabebox=zeichenblatt.getbyname("page1").getbyindex(i)
exit for
end if
next i
REM Verstecktes Oeffnen der Calctabelle
url=converttourl(Verzeichnispfad & "/" & Tabellenname)
myFileProp(0).name="Hidden"
myFileProp(0).value=True
Calcanwendung = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
REM print rnd()
Tabellenblatt=Calcanwendung.getsheets.getbyname("Tabelle1")
REM Suche die letzte Zeile in der Tabelle die eine Aufgabe enthält
Startzeile=1
Endzeile=Startzeile
while Schleife_verlassen = false
Endzeile=Endzeile+1
if Tabellenblatt.getcellbyposition(0,Endzeile).string="" then Schleife_verlassen=True
wend
xray zeichenblatt.getbyname("page1")
REM impress.presentation.start() 'Startet die Präsentation
Anzahl_der_Durchlaeufe=10
for i = 1 to Anzahl_der_Durchlaeufe
Aufgabenzeile= int (rnd()*(Endzeile-Startzeile)+Startzeile)
Ausgabebox.string= Tabellenblatt.getcellbyposition(1,Aufgabenzeile).string
wait (100)
next i
Calcanwendung.close(false) 'Schliesst wieder die versteckte Calctabelle
end sub[/code]