mit Doppelklick Programm starten

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

Moderator: Moderatoren

Radi
Beiträge: 4
Registriert: Fr, 25.06.2010 22:38

mit Doppelklick Programm starten

Beitrag von Radi »

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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: mit Doppelklick Programm starten

Beitrag von komma4 »

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!
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)
Radi
Beiträge: 4
Registriert: Fr, 25.06.2010 22:38

Re: mit Doppelklick Programm starten

Beitrag von Radi »

Klasse Anwort, und hilfreich!

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

Radi
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: mit Doppelklick Programm starten

Beitrag von turtle47 »

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
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: mit Doppelklick Programm starten

Beitrag von marcel_at_work »

Coole Sache. ;-)

lg, Marci
[Win 10 Pro x64/Downgrade 7, AOO 4.1.6 und LO 6.3.0.4]
Radi
Beiträge: 4
Registriert: Fr, 25.06.2010 22:38

Re: mit Doppelklick Programm starten

Beitrag von Radi »

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)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: mit Doppelklick Programm starten

Beitrag von Stephan »

* 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
Radi
Beiträge: 4
Registriert: Fr, 25.06.2010 22:38

Re: mit Doppelklick Programm starten

Beitrag von Radi »

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.)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: mit Doppelklick Programm starten

Beitrag von Stephan »

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
Antworten