mit Doppelklick Programm starten

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: mit Doppelklick Programm starten

Re: mit Doppelklick Programm starten

von Stephan » So, 27.06.2010 19:59

Mein VBA-Code besteht aus 5 Zeilen,


Das heißt dann es ging bei der einen Zeile tatsächlich doch um VB? Dann würde mich der Code schon etwas interessieren.
weshalb ich davon ausging, bei OOBasic etwas völlig missverstanden zu haben.
Naja, es wäre schon von Interesse zu erfahren welches Forum 30 Zeilen als Mindestcode für einen Eventlisterner benannt hat - deshalb fragte ich ja danach.


Gruß
Stephan

Re: mit Doppelklick Programm starten

von Radi » So, 27.06.2010 19:52

Herzlichen Dank für die Antworten auf meine Fragen!

(Mein VBA-Code besteht aus 5 Zeilen, weshalb ich davon ausging, bei OOBasic etwas völlig missverstanden zu haben. Dank der Hilfe kann ich mich nun mit Zuversicht auf OOBasic stürzen.)

Re: mit Doppelklick Programm starten

von Stephan » Sa, 26.06.2010 23:53

* Wie sieht der shell- Funktionsaufruf aus?

Code: Alles auswählen

Shell("C:\Programme\bildbearbeitung.exe ", 4, <Zellinhalt>)
* Wie sieht der Event-Handler aus für den Doppelklick ("Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ??")?
Du mußt einen MouseClickHandler-Listener:
http://api.openoffice.org/docs/common/r ... ndler.html

registrieren und dann auf die Ereignisse reagieren, z.B.:

Code: Alles auswählen

Global d_klick As Object

Sub start_listener()
d_klick = createUnoListener("dk_list_", "com.sun.star.awt.XMouseClickHandler")
ThisComponent.currentController.addMouseClickHandler(d_klick)
Msgbox "Bitte doppelklicken Sie eine Zelle in Spalte G"
End Sub

Sub stop_listener()
On Error Resume Next
ThisComponent.currentController.removeMouseClickHandler(d_klick)
On Error Goto 0
End Sub


Sub dk_list_disposing(par)
'
End Sub

Function dk_list_mousePressed(par) As Boolean
dk_list_mousePressed = False
End Function

Function dk_list_mouseReleased(par) As Boolean
On Error Goto err
If par.ClickCount = 2 AND ThisComponent.CurrentSelection.getCellAddress.Column = 6 Then
	With ThisComponent
		zeile = .CurrentSelection.getCellAddress.Row
		tabelle = .CurrentSelection.getCellAddress.Sheet
		inhalt = .Sheets(tabelle).getCellByPosition(6, zeile).String
		'Shell("C:\Programme\bildbearbeitung.exe ", 4, inhalt)
		Msgbox("Shell(""C:\Programme\bildbearbeitung.exe"", 4, " & CHR(34) & inhalt & CHR(34) & ")", 0, "Ausgeführt würde:")
	End With
End If
err:
On Error Goto 0
dk_list_mouseReleased = False
End Function
Demonstrationsdatei hängt an.

* Wie schränke ich ein, dass nur die 7. Spalte einen Funktionsaufruf bewirken soll ("If Target.Column = 2 Then.."??)?
z.B. indem Du überprüfst das Du in dieser Spalte bist:

Code: Alles auswählen

If ThisComponent.CurrentSelection.getCellAddress.Column = 6 Then
'...
End If
Laut Forumauskunft besteht also ein Eventlistener besteht bei OO aus mind. 30 Zeilen Code
Wo steht das?
Der Umfang des Codes ist dadurch bestimmt was Du machen willst, der Mindestzeilenumfang eines Listenercodes ist jedoch theoretisch/formal: Anzahl der möglichen Ereignisse des Listeners plus 9, denn Listener-Registrierung und Abmeldung brauchen (mindestens) je 3 Zeilen ("Sub ...", Codezeile, "End Sub") plus 2 Zeilen für das immer vorkommene Ereignis "dispose" des Listeners plus je 2 Zeilen pro mögliches Listener-Ereignis des speziellen Listeners plus mindestens 1 Zeile code für irgendeine auszuführende Listener Aktion.
bei VBasic ist es eine
?
Wie denn? Das ist meiner Meinung nach nur mit VBA in einer Zeile möglich.



Gruß
Stephan
Dateianhänge
doppelklick.ods
(8.89 KiB) 58-mal heruntergeladen

Re: mit Doppelklick Programm starten

von Radi » Sa, 26.06.2010 23:25

Danke!

---
Mutter Germania gebar in legitimer Ehe mit dem Geist der Zeit drei Söhne, den Konfektionsreisenden, den Oberlehrer und den Radfahrer. (Erich Mühsam)

Re: mit Doppelklick Programm starten

von marcel_at_work » Sa, 26.06.2010 16:34

Coole Sache. ;-)

lg, Marci

Re: mit Doppelklick Programm starten

von turtle47 » Sa, 26.06.2010 15:43

Hallo Radi,
Radi hat geschrieben:Laut Forumauskunft besteht also ein Eventlistener besteht bei OO aus mind. 30 Zeilen Code
Richtig.
Radi hat geschrieben:bei VBasic ist es eine
Wenn Du darauf bestehst dann solltest Du bei Excel bleiben.

Beigefügt mal eine Datei die ich mal erstellt habe zur Verwaltung von verschiedenen FTP-Zugängen.

Dort wird mit einen Einfach-Klick-Listener in den Spalten "Action" auf "Connect" oder "Close" reagiert.
Da das Programm Filezilla sicherlich nicht auf Deinem Rechner installiert ist wird eine Fehlermeldung angezeigt.

Der Code sollte Dir aber veranschaulichen wie so etwas aussehen kann.

Der Listener wird über den Eintrag in: Menue > Extras > Anpassen > Reiter Ereignisse initialisiert.

Viel Erfolg.

Jürgen
Dateianhänge
FileZillaConnectionManager.ods
(24.67 KiB) 55-mal heruntergeladen

Re: mit Doppelklick Programm starten

von Radi » Sa, 26.06.2010 14:06

Klasse Anwort, und hilfreich!

Laut Forumauskunft besteht also ein Eventlistener besteht bei OO aus mind. 30 Zeilen Code -- bei VBasic ist es eine.

Radi

Re: mit Doppelklick Programm starten

von komma4 » Sa, 26.06.2010 07:10

Willkommen im Forum.

Hier findest Du Hilfe zur Selbsthilfe!
Radi hat geschrieben: * Wie sieht der shell- Funktionsaufruf aus?
* Wie sieht der Event-Handler aus für den Doppelklick ("Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ??")?
* Wie schränke ich ein, dass nur die 7. Spalte einen Funktionsaufruf bewirken soll ("If Target.Column = 2 Then.."??)?
Besorge Dir Andrews Makro-Dokument.

Wenn dann noch Fragen offen sind... suche hier im Forum (alle Deine Fragen sind hier schon beantwortet worden).
Wenn Du Nachfragen hast - oder konkrete Probleme beim Umsetzen... nur zu.


Viel Erfolg!

mit Doppelklick Programm starten

von Radi » Fr, 25.06.2010 23:18

In einer Spalte stehen Dateinamen. Mit einem (Doppel-)Klick auf eine Zelle mit einem Dateinamen möchte ich ein Programm aufrufen und ihm als Parameter den Zellinhalt übergeben.

In Vbasic lautet der Aufruf (wenn die Dateinamen in der 7. Spalte stehen): "Shell "C:\Programme\bildbearbeitung.exe " & Cells(Target.Row, 7)"

Fragen:
* Wie sieht der shell- Funktionsaufruf aus?
* Wie sieht der Event-Handler aus für den Doppelklick ("Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ??")?
* Wie schränke ich ein, dass nur die 7. Spalte einen Funktionsaufruf bewirken soll ("If Target.Column = 2 Then.."??)?

Danke!

Radi

Nach oben