Seite 1 von 1

Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 11:29
von lokgeist
Hallo und guten Tag

Ich würde gern einer Schaltfläche in einem Formular die Tastenkombination "Strg+V" zuweisen.
Leider finde ich weder hier im Forum noch in den Handbüchern eine Antwort. Nur wie man Macros starten kann.
Geht es eventuell ja gar nicht?
Würde mich über eine erklärende Antwort sehr freuen.

lokgeist

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 16:14
von F3K Total
Hallo,
wenn Du der Schaltfläche einen Tabstop zuordnest, kannst Du sie, wenn du die Schlaltfläche beim "Formulardurchlauf" erreicht hast, per Eingabetaste auslösen.
Ausserdem ist es möglich die Schaltfläche als "Standardschaltfläche" zu definieren, dann wird sie von jedem Standpunkt aus per EIngabetaste ausgelöst.
HTH
Gruß R

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 17:14
von lokgeist
Hallo F3K Total

danke für Deine Antwort.
Leider verstehe ich das mit der Schaltfläche als Standardschaltfläche zuweisen nicht.
Mir geht es darum eine Schaltfläche einzubauen die die Tastenkombination "Strg + V" aus Windows ersetzt bzw vereinfacht um Text aus dem Zwischenspeicher / Ablage einzufügen.
Giebt es da eventuell noch eine Lösung?

Tschüß
lokgeist

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 17:21
von RobertG
Hallo lokgeist,

wenn Du einer Schaltfläche ein Tastenkürzel zuweisen willst, so funktioniert das standardmäßig nur, wenn Du Dich im Formular befindest, also irgendwo in einem der Eingabefelder.
"Schalt~fläche", eingegeben in den Titel "Schaltfläche", macht aus dem "f" ein unterstrichenes "f" und deutet damit an, dass über Alt+f dieser Button angesteuert wird.
Auf die gleiche Art und Weise kannst Du auch Felder, die mit einem Beschriftungsfeld in einer Gruppe verbunden sind, über die Beschriftung ansteuern. Angenommen Du hast ein Feld "txtName", das Verbunden ist mit einem Labelfeld, in dem der Titel "Na~me" steht, dann erscheint bei gruppierten Felder der Hinweis auf das Beschriftungsfeld <Na~me>. Jetzt erreichts Du über Alt+m dieses Feld.

Im Handbuch haben wir das schlicht vergessen, weil ich das bisher nie angewandt habe. Wird in der nächsten Ausgabe sicher drin stehen.

Eine Möglichkeit, dies mit der Steuerungstaste zu erreichen, kenne ich nicht.

Gruß

Robert

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 17:24
von RobertG
Hallo lokgeist,
lokgeist hat geschrieben: Mir geht es darum eine Schaltfläche einzubauen die die Tastenkombination "Strg + V" aus Windows ersetzt bzw vereinfacht um Text aus dem Zwischenspeicher / Ablage einzufügen.
Du meinst doch jetzt Base und dort ein Formular, oder? Inhalt der Zwischenablage kannst Du immer nur in ein Feld einfügen. Versuchst Du einfach Strg+V, dann landest Du nicht im Formular. Du musst also bereits im Formular sein, dann mit der Methode, die ich gerade beschrieben habe, ein Formularfeld ansteuern und dort Strg+V ausführen.

Gruß

Robert

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 17:52
von lokgeist
Hallo,
ich versuchs nochmal.
Ich bin in einem Formular und fülle meine Felder aus. Zum Schluß muß ich noch das Datumsfeld ausfüllen. Aber nicht das aktuelle. Da es meistens in 20 -30 aufeinanderfolgenden Datensätzen der Fall ist kopiere ich es mir und kann es dann über die Tastenkombination "Strg + V" einfügen. Also mit der Maus nur ein Tastenklick, mit beiden Händen auf Strg und Taste V beschwerlicher und umständlich. Die Maus habe ich sowiso schon in der Hand weil auch einige Auswahlen in Listenfeldern anzuklicken sind.
Ich habe mich eventuell vorher etwas ungenau ausgedrückt. Entschuldigung.

Tschüß
lokgeist

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 18:50
von RobertG
Hallo lokgeist,

das ist ein entsprechend anderer Ansatz. Da musst Du den Inhalt aus der Zwischenablage auslesen und als Datum einfügen. Für das Auslesen des Inhaltes aus der Zwischenablage habe ich hier ein Beispiel aus dem Buch "Makros in OpenOffice.org" von Thomas Krumbein liegen. Da könnte ich entsprechend anpassen, dass das auch auf ein Formular passt. Das zweite Problem ist aber, dass Du nicht den Inhalt der Zwischenablage einfach so reinkopieren kannst, weil es sich um ein Datum handelt. Da muss ein Feld mit updateDate bearbeitet werden und auch noch das richtige Datumsformat aus der Zwischenablage erhalten. Wenn Du nur den Inhalt als Text einfügst, dann wird das nicht als eine Formularänderung wahrgenommen. Ich werde das jetzt einmal durchtesten.

Gruß

Robert

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 19:21
von lokgeist
Hallo Robert,

vielen Dank das Du dich der Sache so intensiv annimst.
Ich denke mit dem Datumsformat müßte es doch auch so passen ohne nochmals zu formatieren. Ich kopiere es ja beim erstenmal schon aus der entsprechenden Zelle und füge es dann bei den kommenden Datensätzen nur noch aus der Zwischenablage wieder rein. So hatte es bisher auch schon funktioniert. Nur eben zu umständlich.
Besten Dank wenn es doch noch klappen sollte.

Tschüß lokgeist

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 19:54
von RobertG
Hallo lokgeist,

gerade die Datumsgeschichte ist da etwas komplizierter als gedacht. Beim Einfügen über die Zwischenbanlage musst Du direkt das zugrundeliegende Formularfeld treffen, damit die Daten auch sicher übernommen werden.
Hier das, was ich jetzt zusammengesetzt habe:

Code: Alles auswählen

SUB Zwischenablage
	DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oForm AS OBJECT
	DIM oFeld AS OBJECT
	DIM sClipBoard AS STRING
	DIM a()
	oDoc=thisComponent	
	oDrawpage=oDoc.Drawpage
	REM Lage des Feldes in dem entsprechenden Formular aufsuchen
	oForm=oDrawpage.Forms.getByName("Formular")
	oFeld=oForm.getByName("Datum")
	sClipBoard = GetClipboard
	IF sClipboard = "" THEN
		sClipBoard = "Keine Daten in der Zwischenablage enthalten!"	
		msgbox sClipBoard
	ELSE
		a = split(sClipBoard,".")
		IF Ubound(a)<> 2 THEN
			sClipBoard = "Keine gültige Datumseingabe!"	
			msgbox sClipBoard
		ELSE
			unoDate = createUnoStruct("com.sun.star.util.Date")
			IF len(a(0))= 1 THEN
				a(0) = "0"+a(0)
			END IF
			unoDate.Day = a(0)
			IF len(a(1))= 1 THEN
				a(1) = "0"+a(1)
			END IF
			unoDate.Month = a(1)
			IF len(a(2))= 0 THEN
				unoDate.Year = Year(Date)
			ELSEIF len(a(2)) = 2 THEN
				unoDate.Year = "20"+a(2)
			ELSE
				unoDate.Year = a(2)
			END IF
			oFeld.BoundField.updateDate(unoDate)	
		END IF
	END IF
END SUB


FUNCTION GetClipboard
	On Error goto ErrorHandler
	DIM ClipBoardHandle AS OBJECT
	DIM DataObj AS OBJECT
	DIM DataTypSeq() AS OBJECT
	DIM sClipBoardString AS STRING	
	ClipBoardHandle = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
	DataObj = createUnoService("com.sun.star.datatransfer.XTransferable")
	DataObj = ClipBoardHandle.getContents()
	DataTypSeq = DataObj.getTransferDataFlavors()
	sClipBoardString = DataObj.getTransferData(DataTypSeq(0))
	getClipboard = sClipBoardString
	EXIT FUNCTION	
		ErrorHandler:	
		GetClipboard = ""	
END FUNCTION
Das Makro geht davon aus, dass Du ein Formular geöffnet hast, das (z.B. im Formularnavigator) den Namen "Formular" hat. In diesem Formular befindet sich ein Feld, das "Datum" heißt. Die Prozedur "Zwischenablage" sprichst Du mit Deinem Button an. Die Zwischenablage wird ausgelesen (Quelle: Buch von Thomas Krumbein) und entsprechend grob untersucht, ob es sich dabei um einen in Deinem Sinne verwertbaren Inhalt handeln kann. Dann wird das daraus erstellte Datum in das Feld eingefügt.

Einfach nur einen Text aus der Zwischenablage einzusetzen gelingt, wird aber nicht abgespeichert und erscheint übrigens bei jedem neuen Datensatz als Vorgabetext. Damit würde nur eine Eigenschaft des Formularfeldes vorübergehend geändert, die keine Auswirkung auf den Inhalt der dem Formular zugrundeliegenden Tabelle hat.

Gruß

Robert

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 20:49
von lokgeist
Hallo Robert,

vielen Dank für Deine große und schnelle Mühe.
Ich schaffe es aber nicht da durchzusteigen. Mit Macros habe ich noch nie etwas zu tun gehabt.
Schade das es so kompliziert ist wo Du Dir doch so Mühe gemacht hast. Entschuldige bitte das ich es nicht nutzen kann.

Tschüß lokgeist

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 22:29
von F3K Total
lokgeist hat geschrieben:... wo Du Dir doch so Mühe gemacht hast. Entschuldige bitte das ich es nicht nutzen kann.
Das ist zu schade.
Roberts Makro funktioniert hervorragend, siehe Beispiel anbei.


Gruß R

Re: Einer Schaltfläche eine Tastenkombination zuweisen

Verfasst: Fr, 19.04.2013 23:17
von lokgeist
Hallo Robert und F3K Total,

das ist ja riesig.

So vorgefertigt bekomme ich es bestimmt in meinem Formular auch zum laufen.
:D Danke :D Danke :D Danke :D

Vielen lieben Dank
und Tschüß
lokgeist