Ein Eingabefenster für eine Zahl

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

egerlach
****
Beiträge: 107
Registriert: Fr, 13.10.2006 20:21

Ein Eingabefenster für eine Zahl

Beitrag von egerlach »

Ich will bei Klick auf einen Button eine Eingabemaske haben, in die ich eine Zahl eingebe.
Unter
http://documentation.openoffice.org/HOW ... macros.sxw
habe ich danke des
viewtopic.php?t=1553
ein Dokument mit Beispielen gefunden. Nur leider bleibt beim Kopieren des Beispieles mit der Eingabemaske der Code in meinem Dokument immer bei:

oSearchWordTextfieldModel = oSearchWordTextfield.Model

mit dem vielsagendn BASIC-Fehler: BASIC Laufzeitfehler! Objektvariable nicht belegt hängen. Ich habe den Code komplett übernommen.

Hat mir jmd ein funktionierendes Beispiel? Vielleicht eine Beispielsammlung? Oder ist OO-BASIC wie die Linux-/Unix-Manpages: möglichst KEIN Beispiel, Anwender dürfen nur eingeweihte sein ... ;-)
Oder muß ich dafür erstmal ein Studium von OO hinlegen? Dann lieber Access.

Gruss
Eckard
Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Beitrag von Steffan »

Hallo,

einfachste Form ist wohl die Inputbox

Code: Alles auswählen

Sub Main
sZahl=Inputbox("Geben Sie einen Wert ein.")
if isNumeric(sZahl) then 
	msgbox "Die eingegebene Zahl ist " & sZahl, 64
	iZahl= cDbl(sZahl)
else
	msgbox "Der eingegebene Text kann nicht in eine Zahl umgewandelt werden",16
endif
End Sub
Die ist allerdings ziemlich unflexibel (keine weitere Formatierungsmöglichkeiten, nur ein Eingabefeld etc.), so dass die Verwedung wohl nur für die allereinfachsten Eingaben sinnvoll ist.

Sobald Du mehr machen willst, brauchst Du einen Dialog.
Hierzu gehst Du folgendermaßen vor:
- Dialog erstellen
- Textfeld und OK-Button zeichnen
Im Codemodul folgendes eingeben:

Code: Alles auswählen

Dim oDia as Object
Sub DiaOpen
	DialogLibraries.LoadLibrary("Standard")
	oDia=CreateUnoDialog(DialogLibraries.Standard.Dialog1)
	oDia.Execute
end Sub

Sub DiaEnd
	sZahl=oDia.getControl("TextField1").text
	oDia.EndExecute
	if isNumeric(sZahl) then 
		msgbox "Die eingegebene Zahl ist " & sZahl, 64
		iZahl= cInt(sZahl)
	else
		msgbox "Der eingegebene Text kann nicht in eine Zahl umgewandelt werden",16
	endif	
End Sub
(Ich habe immer die Standard-Namen verwendet also ggf. anpassen)

- Zurück zum Dialog
- Eigenschaftsfenster für OK-Button öffnen (Doppelklick)
- dort Reiter Ereignisse auswählen
- Beim Auslösen Verlinkung auf das Makro DiaEnd setzen
Jetzt macht der Dialog das gleiche wie die Inputbox, allerdings hast Du nun verschiedenste Einstellungsmöglichkeiten über das Eigenschaftsfenster und vor allen Dingen kannst Du weiter COntrols hinzufügen.

Die Makros aus der Besispieldatei funktionieren bei mir ohne Fehler, so dass ich da nicht weiterhelfen kann.

Was die Dokumentation angeht, kann ich Dir nur zustimmen. EINE komplette Beispielsammlung gibt es nicht (bzw. kenne ich nicht). Für den Einstieg fand ich am hilfreichsten die StarBasic FAQ von Michael Dannenhöfer. Meistens findet man die Lösung in einer der im Thread "Informationen zur StarBasic-Programmierung" angegebenen Quellen.
Und ansonsten gibts ja noch das Forum zum Fragen.

Steffan.
egerlach
****
Beiträge: 107
Registriert: Fr, 13.10.2006 20:21

Beitrag von egerlach »

Klasse! Vielen Dank! So etwas erleichtert den Einstieg ungemein!

Den einfachen Falle mit der msgbox habe ich getestet und es funktioniert! Waoh!

Auch den Dialog habe ich gerade getestet. Geht! Klasse! So einfach Anfängerbeispiele sind sehr wichtig. Ich nehme mir mal vor die in einem thread hier zusammenzufassen,

Gruss
Eckard
Antworten