Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

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

Moderator: Moderatoren

Ouagadougou
**
Beiträge: 27
Registriert: Mi, 01.02.2017 11:13

Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Ouagadougou »

Hallo,

ich bin auf der Suche nach einer Lösung für mein Problem in Calc.

Ich habe mir eine Maske mithilfe der Steuerungselemente "zusammengebastelt". (Ich wollte eine individuelle Lösung, die Maske sollte in der Mappe inkludiert sein: 4 Textbosen, 1 Listbox und 4 Schaltflächen)
Nun schaffe ich es nicht, die Schaltflächen "Speichern", "Beenden", "Löschen", "Neuer Eintrag" mit passenden Befehlen also Makros zu belegen.
Ich möchte, dass die eingetragenen Daten in den Textboxen automatisch in eine Tabelle im zweiten Tabellenblatt übertragen werden. Jeder Datensatz ein neue Zeile. Dies soll unter Speichern geschehen. unter "Neuer Eintrag" verstehe ich, dass die Inhalte der Textboxen in die Tabelle übertragen werden und sich die Textboxen wieder leeren für einen neuen Eintrag.
Unter "löschen" verstehe ich, dass ich ausgewählte Datensätze löschen kann. Diese möchte ich mir in der Listbox anzeigen lassen und somit auswählen können. Unter "Beenden" verstehe ich, dass sich das Dokument selbst abspeichert und schließt.

Vielen Dank schon einmal!!
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Stephan »

Nun schaffe ich es nicht, die Schaltflächen "Speichern", "Beenden", "Löschen", "Neuer Eintrag" mit passenden Befehlen also Makros zu belegen.
-mit Ansicht-Symbolleisten-Formularsteuerelemente die Steuerelemente-Symbolleiste anzeigen
-dort auf das Icon für "Entwurfsmodus an/aus" klicken
-die Schaltfläche anklicken und das Kontexmenü erzeugen
-dort Eintrag "Kontrollfeld..." anklicken
-im erscheinenden Dialog zum Register "Ereignisse" wechseln
-dort unter "Aktion ausführen" das gewünschte Makro zuweisen

alles bestätigen und in der Symbolleiste wieder den Entwurfsmodus abschalten.


Gruß
Stephan
Ouagadougou
**
Beiträge: 27
Registriert: Mi, 01.02.2017 11:13

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Ouagadougou »

Danke für deine Antwort, allerdings ist dieser Schritt kein Problem für mich. Ich habe keine Ahnung von oobasic und dementsprechend kann ich gar nicht die Makros nach meinen Vorstellungen erzeugen. Ich bräuchte Vorschläge, wie die 4 Makros auszusehen haben.
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Jörg »

Hallo,
ich fürchte so wie Du es Dir vorstellst, wird es nicht gehen.
Aus eigener Erfahrung weiß ich, dass die Fachleute hier im Forum sehr gern und kompetent helfen.
Doch ein wenig mußt Du schon selbst tun.
Dein "Speichern" ist im Grunde ein Kopieren, oder?

Lies mal hier:
http://www.dannenhoefer.de/faqstarbasic/index.html

Auch im Forum selbst sind viele Anregungen und Beispiele. Einfach googeln.
Gruß Jörg

Win 10 Pro AOO 4.1.15
Ouagadougou
**
Beiträge: 27
Registriert: Mi, 01.02.2017 11:13

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Ouagadougou »

Vielen Dank für die Anregung. Ich habe mich bereits bei Excel ausprobiert und meine Anforderungen auch selbst erfüllen können, u.a. mit Hilfe des Internets. Excel benutzt aber VBA, die bei OO keine Anwendung findet. Im Internet gibt es keine konkreten Befehle, die es erleichtern, daher habe ich hier auf Hilfe gehofft. Ich habe mich selbstverständlich im Vorhinein schlau gemacht, aber die Sprache OObasic ist für mich nicht so schlüssig. ich komme da einfach nicht weiter.
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Jörg »

Hallo,
trotzdem:
ohne konkrete Fragen wirst Du keine konkreten Antworten bekommen können.
Hilfreich wäre für die Fachleute u.a., wenn Du eine (verfremdete)Beispieldatei hochladen würdest.
Gruß Jörg

Win 10 Pro AOO 4.1.15
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Stephan »

Ich bräuchte Vorschläge, wie die 4 Makros auszusehen haben.
dann schau Dir diese Extension an:
http://extensions.services.openoffice.o ... t/dataform

erstens tut Diese weitgehend schon was Du willst (wobei sie einen Dialog und kein Formular nutzt), zweitens hast Du die Möglichkeit Dir dort die genaue Programmierung anzuseghen und kannst daraus lernen.



Gruß
Stephan
Ouagadougou
**
Beiträge: 27
Registriert: Mi, 01.02.2017 11:13

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Ouagadougou »

Fast schon Guten Aben ;)
Hilfreich wäre für die Fachleute u.a., wenn Du eine (verfremdete)Beispieldatei hochladen würdest.
Hier meine Beispieldatei.

@stephan: ich schau mir mal die extension an, danke.
Dateianhänge
Beispiel_Ouagadougou.ods
(13.8 KiB) 163-mal heruntergeladen
Zuletzt geändert von Ouagadougou am Mi, 01.02.2017 18:06, insgesamt 1-mal geändert.
Ouagadougou
**
Beiträge: 27
Registriert: Mi, 01.02.2017 11:13

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Ouagadougou »

Lieber Stephan,
ich habe mir die Extension angesehen, habe allerdings keine Möglichkeit gesehen die Befehle des Dialogs anzusehen....
Dialog.JPG
Dialog.JPG (28.88 KiB) 9084 mal betrachtet
Ich will ja gerade kein Dialog, sondern ich möchte es in mein Tabellenblatt implementieren :)
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von F3K Total »

Hallo,
vielleicht ist eine kleine BASE-Datenbankdatei da besser, anbei eine kleine Version, die alles kann, was du willst, bis auf das Beenden.
Alles ohne ein Makro.
Öffne das Formular per Doppelklick und los gehts.
Gruß R
Dateianhänge
Ouagadougou.odb
(13.47 KiB) 215-mal heruntergeladen
Ouagadougou
**
Beiträge: 27
Registriert: Mi, 01.02.2017 11:13

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Ouagadougou »

Hallo R,
Das man das auch anders umsetzen kann ist mir bewusst, ich möchte jedoch alles zusammen in Calc machen. In Excel geht das ja auch. Ich brauch ja "nur" die Befehle, die ja auch überall hinterliegen aber nicht zugänglich sind...
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von F3K Total »

Upps,
da war noch ein Relikt, dein Makro-Eintrag auf dem Button "Neuer Eintrag", habe ich in der Version anbei gelöscht.
Jetzt funktioniert es.
Gruß R
Dateianhänge
Ouagadougou.odb
(13.27 KiB) 182-mal heruntergeladen
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Stephan »

habe allerdings keine Möglichkeit gesehen die Befehle des Dialogs anzusehen....
mmh, ja ... mir war garnicht bewusst das in dieser Extension der Dialog zur Laufzeit erzeugt wird. Da das geschieht steht das natürlich alles lediglich im Basic-Code und ist nicht über den Dialog zugewiesen.

Im Konkreten werden die Button über das Makro Sub DlgTool_Button (siehe LibDataForm) erzeugt und mit Funktion belegt, im Einzelnen sind das die Aufrufe (siehe BasicModul "DataForm") :

Code: Alles auswählen

 DlgTool_Button(oDlg, -5, 17, btnWidth, 14, "btnNuovo", strLocale(CMDNEW))
DlgTool_Button(oDlg, -5, 35, btnWidth, 14, "btnElimina", strLocale(CMDDELETE))
DlgTool_Button(oDlg, -5, 54, btnWidth, 14, "btnRipristina", strLocale(CMDRESTORE))
DlgTool_Button(oDlg, -5, 75, btnWidth, 14, "btnPrec", strLocale(CMDFINDPREV))
DlgTool_Button(oDlg, -5, 93, btnWidth, 14, "btnSucc", strLocale(CMDFINDNEXT))
DlgTool_Button(oDlg, -5, 110, btnWidth, 14, "btnCriteri", strLocale(CMDCRITERIA))
DlgTool_Button(oDlg, -5, 133, btnWidth, 14, "btnChiudi", strLocale(CMDCLOSE))
die entsprechenden Ereignis-Makros zu diesen Buttons sind:

Code: Alles auswählen

Sub btnNuovo_actionPerformed(oEvent)
	if salvaRecord = True Then ' se non ci sono errori nel salvataggio
		With oDlg.getControl("scrlBarra")
			.Value = .Maximum
		End With
		nuovoRecord()
	End If
End Sub

Sub btnElimina_actionPerformed(oEvent)
	Dim oRighe as Object
	Dim i as Integer
	Dim oAddr

	Select Case modalita
	Case CRITERI ' azzera i criteri
	
		For i = 1 to nCols
			oDlg.getControl("txtCampo" & i).Text = ""
		Next
		
	Case MODULO	' rimuove il record corrente

		if msgbox(strLocale(MSGDELRECORD), 1 + 48) = 2 Then
			' l'utente ha premuto "Annulla"
			Exit Sub
		End If

		oAddr = oRange.getRangeAddress
		oAddr.StartRow = oAddr.StartRow + indiceRecord
		oAddr.EndRow = oAddr.StartRow
		oFoglio.removeRange(oAddr, com.sun.star.sheet.CellDeleteMode.UP) 
		
		' aggiorno nRows (le dimensioni di oRange vengono
		' aggiornate automaticamente)
		nRows = oRange.getRows.Count
		
		' decremento limite massimo della barra
		With oDlg.getControl("scrlBarra")
			.Maximum = .Maximum - 1
		End With
	
		if indiceRecord = nRows Then
			' è stato eliminato l'ultimo record
			With oDlg.getControl("scrlBarra")
				.Value = .Maximum
			End With
			nuovoRecord()
		Else
			scorriRecord(indiceRecord)
		End If
		
	End Select
End Sub

Sub btnRipristina_actionPerformed(oEvent)
	Dim i as Integer
	
	Select Case modalita
	Case CRITERI ' ripristina criteri
	
		For i = 1 to nCols
			oDlg.getControl("txtCampo" & i).Text = arrCriteri(i)
		Next
	
	Case MODULO ' ripristina valori record
		
		if indiceRecord = nRows Then
			' si tratta di un nuovo record ancora non salvato
			For i = 1 to nCols
				' azzera tutti i campi
				oDlg.getControl("txtCampo" & i).Text = ""
			Next
		Else
			' rilegge il record corrente dal foglio
			scorriRecord(indiceRecord)
		End If
		
		oDlg.getControl("btnRipristina").Enable = False
		
	End Select
	
	selezionaTxt(oDlg.getControl("txtCampo1"))
End Sub

Sub btnPrec_actionPerformed(oEvent)
	trovaPrecSucc(PREC)
End Sub

Sub btnSucc_actionPerformed(oEvent)
	trovaPrecSucc(SUCC)
End Sub

Sub btnCriteri_actionPerformed(oEvent)
	cambiaModalita
	selezionaTxt(oDlg.getControl("txtCampo1"))
End Sub


Gruß
Stephan
Ouagadougou
**
Beiträge: 27
Registriert: Mi, 01.02.2017 11:13

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von Ouagadougou »

Hallo

Danke für deine Recherche, jedoch schaffe ich nicht diese Code-Schnipsel in mein Dokument zu integrieren, sodass es funktioniert.
Kann mir jemand weiterhelfen? (Eine Beispieldatei wurde ein paar Beiträge vorher hochgeladen)

Vielen Dank!
mikeleb
*******
Beiträge: 1425
Registriert: Fr, 09.12.2011 16:50

Re: Befehle/ Makros für Steuerungelemente, wie Speichern, Löschen

Beitrag von mikeleb »

Hallo,
anbei mal ein erster Schritt (praktisch ein zusammenkopierter Code aus der bereits genannte Quelle http://www.dannenhoefer.de/faqstarbasic/index.html)
Dateianhänge
Beispiel_Ouagadougou.ods
(22.36 KiB) 269-mal heruntergeladen
Gruß,
mikeleb
Antworten