Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Mr.Black am 12.01.05 - 21:31:24

Titel: Taste F9 mit code ausführen?
Beitrag von: Mr.Black am 12.01.05 - 21:31:24
Hallo Leute,

kann mir jemand sagen wie ich mir spare F9 zu drücken wenn ich einen Datensatz löschen will... kann ich F9 auch mit einer Funktion ausführen ...

THX

Mr.Black
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: Glombi am 12.01.05 - 21:35:37
Willkommen im Forum, Mr. Black. Joe Black ?  ;D

Meinst Du eine programmatische Lösung? Kannst Du uns bitte etwas mehr erzählen, was Du erreichen willst.

Andreas
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: TMC am 12.01.05 - 21:36:42
"Datensätze" gibt es so nicht im Notes, Du meinst sicherlich Dokumente.

Wie genau willst Du ein Dokument löschen? Entfernen-Taste? Über Button?

Z.B. eine Umsetzung wäre möglich über den Event QueryDocumentDelete.
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: y20frank am 12.01.05 - 22:06:30
Meinst Du eine programmatische Lösung? Kannst Du uns bitte etwas mehr erzählen, was Du erreichen willst.

Hmm, er möchte doch pragmatisch "F9" mit einem Code (also Script) ausführen... dann würde doch dieser API-Kram ("GetKeyState") weiterhelfen - ansatzweise wie das da ?!...:

Declare Function GetKeyState Lib "user32" (Byval nVirtKey As Long) As Long
Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Dim kbArray As KeyboardBytes, kbOld As KeyboardBytes

Habe mal versucht, die ESC-Taste damit in einer Maske zu unterdrücken - das war schon heavy genug - und auch nicht ganz so sauber... und zwar so (wenn's denn weiterhelfen sollte zum eigentlichen "F9'er Problem"... HTH):

Code
'- Die folgenden Deklarationen werden zum verhindern der Esc- Taste benötigt
Const VK_ESC = 27


Type KeyboardBytes
	kbByte(0 To 255) As Long
End Type

Declare Function GetKeyState Lib "user32" (Byval nVirtKey As Long) As Long
Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Dim kbArray As KeyboardBytes, kbOld As KeyboardBytes
'- Ende Esc- verhinderung

Jetzt der eigentliche Code:

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
'- der Code hier verhindert das schliessen des Fensters durch Esc unter bestimmten umständen
	If GetKeyState(VK_ESC) Then
          'Get the keyboard state
   	   GetKeyboardState kbArray
          'Change a key
	   kbArray.kbByte(VK_ESC) = 1
          'Set the keyboard state
	   SetKeyboardState kbArray
	   SetKeyboardState kbOld
	   continue = False
	End If
End Sub

Und schliesslich in den Button, der das fenster schliesst noch folgenden Code: 

Sub Initialize
	Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Set uidoc = ws.CurrentDocument
       'Esc-Key reset
	SetKeyboardState kbOld
       'close Document
	Call uidoc.Close
End Sub
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: TMC am 12.01.05 - 22:09:59
Nicht ganz, Frank, da steht:

wie ich mir spare F9 zu drücken wenn ich einen Datensatz löschen will

Und da gibt es definitiv mehrere saubere Möglichkeiten, nun muss aber der Fragesteller weiteren Input geben, wie er genau löscht etc.,  um helfen zu können.
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: y20frank am 12.01.05 - 22:14:45
Zitat
Und da gibt es definitiv mehrere saubere Möglichkeiten, nun muss aber der Fragesteller weiteren Input geben, wie er genau löscht etc.,  um helfen zu können.

Das stimmt allerdings - also warten wir ab, was er tatsächlich möchte... waiting for input. ready.
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: Mr.Black am 12.01.05 - 22:20:53
Erstmal vielen Dank für die schnellen vielen Antworten... echt cooll   ;D

Ich habe ein Button der mir einen ausgewählten Datensatz ( bzw wie es in Notes heißt Dokumente ) in einer Tabelle löscht.

Wenn ich den Button klicke wird lediglich das Dokument markiert, nun muss ich aber noch F9 drücke n, und das soll eben automatisch gehen ...

Eventuell noch ein Nachrichten-Fenster mit der Frage wirklich löschen?

...

THX schonmal

Titel: Re: Taste F9 mit code ausführen?
Beitrag von: y20frank am 12.01.05 - 22:24:07
... in einer Tabelle löscht.

Wenn ich den Button klicke wird lediglich das Dokument markiert, nun muss ich aber noch F9 drücke n, und das soll eben automatisch gehen

Tabelle?! Du meinst in einer Ansicht, oder...?
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: TMC am 12.01.05 - 22:24:58
Würde ich ins DB-Script QueryDocumentDelete einbauen.
Denn der User könnte ja auch die Entf-Taste drücken.

So etwa (Auszug):

Code
Set collection = Source.Documents
Set doc = collection.GetFirstDocument	
While Not (doc Is Nothing)
   Set docTemp = collection.GetNextDocument(doc)
   Call doc.Remove( True )
   Set doc = docTemp
Wend
Call uiws.ViewRefresh

Vor der Ausführung kannst Du ja noch eine Msgbox einbauen.
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: Mr.Black am 12.01.05 - 22:42:54
sorry das ich mich so dämlich anstelle , aber ich mache notes erst seit 2 Tagen....

Was ist mit dem DB Script .... 

Gibt es keinen Code den man als formel für den button eingibt?
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: Glombi am 12.01.05 - 22:45:16
sorry das ich mich so dämlich anstelle , aber ich mache notes erst seit 2 Tagen....

Was ist mit dem DB Script .... 

Gibt es keinen Code den man als formel für den button eingibt?
Klar, denn musst Du dann aber in alle Datenbanken einbauen...
oder Du machst Dir ein Smarticon mit der Formel

@Command([ViewRefreshFields])

Andreas
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: koehlerbv am 12.01.05 - 22:50:00
sorry das ich mich so dämlich anstelle , aber ich mache notes erst seit 2 Tagen....

Dann würde ich das aber noch etwas langsamer angehen lassen. Produktive DBs sollten wir Dich erstmal noch absolut tabu sein. Du hast ja noch Verständnisprobleme (Datensätze, Tabellen), und die zeit musst Du Dir einfach geben / nehmen / einfordern.

Bernhard

PS: Zu Andreas' Vorschlag möchte ich noch ergänzen: Er meint nicht "alle Datenbanken", sondern alle Ansichten. Die Sicherheitsabfrage wäre über @Prompt zu lösen (siehe DesignerHelp wegen der Parameter und der Rückgabewerte).

PPS: Herzlich willkommen im Forum und der Notes / Domino-Welt ! Wenn wir helfen können - gerne.
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: TMC am 12.01.05 - 22:51:44
Jo, allerdings kann man in Notes in Ansichten (Du nennst diese oben "Tabellen") auch per "Entf"-Taste ein Dokument zum löschen markieren.

Um dies zu umgehen, kann man im Notes-Designer im Database Script den Event "QueryDocumentDelete" verwenden.
Das ist jetzt aber für Dich noch nicht empfehlenswert, nach "2 Tage Notes".
Titel: Re: Taste F9 mit code ausführen?
Beitrag von: Mr.Black am 12.01.05 - 23:03:14
cool danke ....

das mit dem @Command([ViewRefreshFields])

is ok so ....


THX