Einer Schaltfläche eine Tastenkombination zuweisen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Einer Schaltfläche eine Tastenkombination zuweisen

Re: Einer Schaltfläche eine Tastenkombination zuweisen

von lokgeist » Fr, 19.04.2013 23:17

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

Re: Einer Schaltfläche eine Tastenkombination zuweisen

von F3K Total » Fr, 19.04.2013 22:29

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
Dateianhänge
Date_from_clipboard.odb
(12.91 KiB) 82-mal heruntergeladen

Re: Einer Schaltfläche eine Tastenkombination zuweisen

von lokgeist » Fr, 19.04.2013 20:49

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

von RobertG » Fr, 19.04.2013 19:54

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

von lokgeist » Fr, 19.04.2013 19:21

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

von RobertG » Fr, 19.04.2013 18:50

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

von lokgeist » Fr, 19.04.2013 17:52

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

von RobertG » Fr, 19.04.2013 17:24

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

von RobertG » Fr, 19.04.2013 17:21

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

von lokgeist » Fr, 19.04.2013 17:14

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

von F3K Total » Fr, 19.04.2013 16:14

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

Einer Schaltfläche eine Tastenkombination zuweisen

von lokgeist » Fr, 19.04.2013 11:29

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

Nach oben