Textbox neu zeichnen lassen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

ChristianMuc
**
Beiträge: 40
Registriert: Do, 25.12.2008 18:32

Textbox neu zeichnen lassen

Beitrag von ChristianMuc »

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