Ordner per Button öffnen

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

Moderator: Moderatoren

Reginald
****
Beiträge: 114
Registriert: Fr, 23.07.2010 23:58

Ordner per Button öffnen

Beitrag von Reginald »

Hallo zusammen, ich habe vor 20 Jahren einiges mit Turbopascal und Basic programmiert, seitdem aber nie wieder. Jetzt will und muss ich mich ein wenig mit OO befassen und habe eine Frage.

Ich habe in einem OO Base Formular ein Feld mit dem Namen ORDNER, wo pro Kunde ein kompletter Ordner angegeben ist, also z. B. X:\Kunden\BMW Jetzt bräuchte ich den Code, um per Buttonklick das Feld auszulesen, den Wert in einer Variablen zu speichern und dann den entsprechenden Ordner zu öffnen.

Also manuell funktioniert das hier:

Code: Alles auswählen

Sub Main
Dim sPath as String
	sPath = "X:\Kunden\BMW"
	shell "explorer /e," & sPath, 1
End Sub
Aber wie lese ich das Feld ORDNER aus und speicher den Wert in sPath ab?

Danke schonmal,
Reginald
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Ordner per Button öffnen

Beitrag von komma4 »

Willkommen im Forum.

Folgendes könnte funktionieren (ungetestet)

Code: Alles auswählen

oDok = ThisComponent
oForm = oDok.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "Ordnername" )
sPfad = oFeld.getString()
Auch für Dich der Hinweis:

X-RAY ist Dein Freund.

Bei Andrew findest Du zwei Dokumente -seine Makrosammlung und eines zur Datenbank-Programmierung- auch die helfen bestimmt, Deine Kenntnisse aufzufrischen.

Und: irgendwo habe ich Code gesehen, um ein solches Textfeld mit einer Hyperlink-Funktion zu versehen (klicken im Textfeld öffnet das Ziel). [Suchbegriffe: FORM+HYPERLINK+OPEN]



Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Reginald
****
Beiträge: 114
Registriert: Fr, 23.07.2010 23:58

Re: Ordner per Button öffnen

Beitrag von Reginald »

Hallo Winfried,
danke für die Links! Also das pdf-Buch ist an sich schon hilfreich.

Bzgl der Syntax in deinem Beispiel: So wie ich das verstehe, ist drawpage eine Funktion in OO Calc, nicht Base. Dein GetByName scheint aber der richtige Ansatz zu sein. Wo findet man denn Erläuterungen zu diesen Funktionen? http://www.dannenhoefer.de bezieht sich auch nur auf Calc - nicht Base.

Schau mal bitte unter
viewtopic.php?f=18&t=19988

Da gibt es auch ein ähnliches Beispiel, aber irgendwie verstehe ich das alles noch nicht. Der auszulesende Wert steht bei mir in dem Textfeld namens "txtFolder" und das Formular heißt "Customers". Kannst du oder sonstjemand mir bei der Syntax für den Befehl helfen? Oder: Wo finde ich die Syntax für GetByName ordentlich erläutert?

Danke schonmal,
Reginald
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Ordner per Button öffnen

Beitrag von komma4 »

Reginald hat geschrieben:ist drawpage eine Funktion in OO Calc, nicht Base. Dein GetByName scheint aber der richtige Ansatz zu sein. Wo findet man denn Erläuterungen zu diesen Funktionen?
.DrawPage ist eine Eigenschaft eines Base-Formulars (in Calc sind mehrere, oCalc.Drawpages() möglich)
[Funktionen "machen" etwas, z.B. Eigenschaften ändern]

Sieh Dir mal das erste Posting im Basic-Bereich an - da stehen diverse Quellen. Besonders ans Herz gelegt seinen Dir Andrews Makro-Dokument und http://api.openoffice.org/

Und hole Dir X-Ray, installiere es und verwende es

Reginald hat geschrieben:Der auszulesende Wert steht bei mir in dem Textfeld namens "txtFolder" und das Formular heißt "Customers".
Der angezeigte Name des Formulars ist nicht der interne Name!
Hast Du diesen nicht geändert (re. Maustaste>Formular...) so heisst dieser "MainForm".
Setze im gegebenen Beispiel mal txtFolder ein, für die Funktion .getByName

Reginald hat geschrieben:Wo finde ich die Syntax für GetByName ordentlich erläutert?
Sowas findest Du hier:
http://api.openoffice.org/docs/common/r ... dex-1.html

Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Reginald
****
Beiträge: 114
Registriert: Fr, 23.07.2010 23:58

Re: Ordner per Button öffnen

Beitrag von Reginald »

Also, ich habe es letztlich alles zum Laufen gebracht:

Code: Alles auswählen

Sub Main
Dim sPath as String    'Path weil es der Pfad ist. s weil es ein String ist. Deshalb zusammengesetzt   sPath
Dim oForm as Object    'o = Object   Form = Formular    Deshalb oForm
Dim sPathField as String  'Das ist der Name des Feldes, wo der String drinsteht. Könnte man auch fest verdrahten.
        
   oDoc = ThisComponent  'Das ist immer so eine Muss-Zeile
   oForm = oDoc.drawpage.forms.getbyindex(0)  'Drawpage des Formulars. Auch immer so eine Musszeile.
   sPathField = "FolderName" 'Feldname des Feldes wo der Folder drinsteht. Könnte genauso "test123" heißen
                                           'Muss halt im Formular entsprechend angepasst sein
   
   	'Das Feld auslesen + zur Kontrolle anzeigen
	sPath = oForm.getByName(sPathField).text
	MsgBox "Der Pfad ist " + sPath

	'Jetzt den Explorer öffnen:
   shell "explorer /e," & sPath, 1
End Sub

Danke an alle, die geholfen haben!

Grüße
Reginald
Antworten