naja, aber API-Funktionen wie Blockinput und dergleichen sind nicht sonderlich aufwendig aber äußerst praktisch, z.B. bei automatischer Brieferstellung.
edit:
Also, ich wollte eben eine gefundene API umsetzen und musste mit Entsetzen feststellen, dass das onchange-Ereignis nicht bei jeder Änderung des Feldes sondern erst nach Änderung + Verlassen des Feldes ausgeführt wird. LAut Hilfe soll das auch noch so sein... ::)
In Office wird das change-Ereignis für Felder bei jeder Änderung innerhalb des Feldes ausgeführt, was meines Erachtens auch Sinn macht. Dann funktioniert folgender Code:
'Deklarationen-Teil des Feldes
Public Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
Public Declare Function GetAsyncKeyState Lib "user32.dll" ( ByVal vKey As Long) As Integer
'Abzufragende Taste
Public Const Enter As Long = "13"
'Change-Ereignis des Feldes
If CBool(GetAsyncKeyState(Enter) And &H8000) Then MsgBox ("Die Enter-Taste wurde gedrückt.")
Aber ohne das passende Ereignis in Notes wirds schwierig...
Gruß
Demian
Ah ja, das hab ich auch schon gesehen. Ich habe mal daraus einen "LS-per-Javascript-Enter-Starter" gebastelt, der das Problem lösen dürfte:
Im JS-Header der Maske:
var newline = String.fromCharCode(10);
var ssactive;
var fname = new Array( "fldSuche");
var fnum = 0;
var fcount = fname.length - 1;
function StartScriptOnEnter() {
if (document.forms[0][fname[fnum]].value.indexOf(newline)>=0) {
document.forms[0][fname[fnum]].value = document.forms[0][fname[fnum]].value.replace(String.fromCharCode(10), '');
fnum = (fnum >= fcount) ? 0 : (fnum + 1);
document.forms[0][fname[fnum]].focus();
document.forms[0].ScriptStarterButton.click();
}
}
Im OnLoad:
ssactive = window.setInterval("StartScriptOnEnter()",1);
Im OnUnload:
window.clearInterval(ssactive);
Das Eingabefeld in der Maske (Javascript muss natürlich aktiviert sein) heisst im gegebenen Fall fldSuche.
Desweiteren brauchts noch einen Button namens ScriptStarterButton irgendwo im Dokument (kann man auch verstecken). Mit dem Namen ist nicht die Beschriftung des Buttons, sondern dessen HTML-Name (in den HTML-Eigenschaften) gemeint.
In den Button kann man beliebigen LS- oder Formel-Code setzen und durch Betätigung der Eingabetaste starten, wenn das Feld "fldSuche" den Fokus hat.
(only short tested no warranty undsoweiter ;))
genau sowas hab ich gesucht, die js Funktion ist echt lecker. :o
Ich hab das ganze noch etwas umgestrickt, damit das js nicht ständig läuft.
ich habe den Startaufruf des Intervalls in den onFocus Event meines Suchfeldes geschrieben und den Aufruf zum Beenden des Intervalls in den onBlur Event.
zusätzliches habe ich noch ein Feld (FldEndScript) in meine Maske eingebaut. Im oben genannten Button habe ich folgende LS Funktion eingebaut:
Sub Click(Source As Button)
Dim uiWorkspace As New NotesUIWorkspace
Dim uiDocument As NotesUIDocument
Set uiDocument = uiWorkspace.CurrentDocument
...
...
Call uiDocument.GotoField ( "FldEndScript" )
End Sub
Dadurch startet beim Klicken in das Suchfeld das Skript und am Ende des Skripts im Button springt der Zeiger in das andere Feld und der onBlur Event des Suchfeldes greift und beendet das js.
Einzigster kleiner Nachteil, das zusätzliche Feld darf nicht hidden sein.
greetz Hevelmann