WaBis

walter.bislins.ch

xTextControl: Funktionen

Ein direktes Ändern der Properties des xTextControl hat keinerlei Auswirkung auf das zugehörige Eingabefeld. Um die Eigenschaften und den Text des Eingabefeldes zu ändern, müssen daher die entsprechenden Funktionen verwendet werden!

Beim Erzeugen des xTextControl Objektes wird das Objekt mit dem entsprechenden Eingabefeld synchronisiert. Die Properties enthalten also aktuelle Werte. Das xTextControl Objekt kann jederzeit mit der Funktion GetDataFromControl mit dem Eingabefeld synchronisiert werden.

Normierter Text

Verschiedene Browser machen einen Unterschied in der internen Codierung von Zeilenenden. Der IE zum Beispiel verwendet die Zeichenkombination '\r\n', Mozilla hingegen nur '\n'. Bei normiertem Text wird das Zeilenende immer mit dem einzigen Zeichen '\n' codiert.

Das xTextControl arbeitet mit normiertem Text. Das bedeutet, der Text ist auf allen Browsern gleich. Somit entsprechen alle Positionen des Eingabefeldes (Cursor, Selektion) 1:1 den entsprechenden Positionen im normierten Text des xTextControl - auf allen Browsern!

xTextControl.SetText()

xTextControl.SetText( aText );

Ersetzt den Text des zugehörigen Eingabefeldes durch aText. Verwende nur diese Funktion, um den Text des Eingabefeldes zu ersetzen, nicht das Property value des Eingabefeldes!

aText muss ein normierter Text sein, wie er mit den Properties Text und SelText abgefragt werden kann.

Hinweis

Durch SetText wird die Selektion des xTextControl ungültig, sie stimmt nicht mehr mit der Selektion des Eingabefeldes überein. Verwende falls nötig die Funktion GetDataFromControl um die aktuellen Werte vom Eingabefeld zu übertragen oder die Funktion SetSelectionRange um neue Werte für das xTextControl und das Eingabefeld zu setzen.

Beispiel

var tc = new xTextControl( document.getElementById('myTextField') );
// text setzen und selektieren
tc.SetText( 'Standardtext' );
tc.SetSelectionRange( 0, tc.Text.length, true );

Siehe auch

xTextControl.ChangeSelectionText()

xTextControl.ChangeSelectionText(
  aReplaceText, aUpdateControlSelection );

Ersetzt den selektierten Text durch aReplaceText. Wenn kein Text selektiert ist, wird aReplaceText an der Cursorposition eingefügt.

Die Properties des xTextControl werden alle nachgeführt. Der neue Text wird auch an das zugehörige Eingabefeld übertragen. Die Selektion des xTextControl wird auf aReplaceText gesetzt.

Wenn aUpdateControlSelection = true ist, wird die neue Selektion auch an das Eingabefeld übertragen. Wenn aUpdateControlSelection = false ist, wird die Selektion nicht übertragen. Dies ist sinnvoll, wenn die Selektion in einem weiteren Schritt sowieso geändert werden soll.

Die Selektion kann zum Beispiel mit der Funktion UpdateControlSelection explizit an das Eingabefeld übertragen werden.

Hinweis

aRaplaceText muss normierter Text sein.

Beispiel

var tc = new xTextControl( document.getElementById('myTextField') );
var newText = 'Ersatztext';
tc.ChangeSelectionText( newText, true );

Siehe auch

xTextControl.ChangeSelection()

xTextControl.ChangeSelection(
  aSelStart, aSelEnd, aReplaceText, aUpdateControlSelection );

Ersetzt den Text zwischen aSelStart und aSelEnd durch aReplaceText und selektiert den neuen Text. Wenn aSelStart = aSelEnd ist, wird aReplaceText an dieser Stelle in den Text eingefügt.

Alle Properties des xTextControl werden entsprechend neu berechnet. Wenn aUpdateControlSelection = true ist, wird die Selektion auch an das zugehörige Eingabefeld übertragen, sonst wird nur der Text des Eingabefeldes geändert. Dies ist sinnvoll, wenn in einem weiteren Schritt die Selektion sowieso neu gesetzt werden soll.

Hinweis

aRaplaceText muss normierter Text sein. Für aSelStart und aSelEnd muss gelten:

  • aSelStart >= 0 and aSelStart <= xTextControl.Text.length
  • aSelEnd >= 0 and aSelEnd <= xTextControl.Text.length
  • aSelStart <= aSelEnd

Beispiel

Das folgende Beispiel implementiert eine suchen-und-ersetzen Funktion. Das Beispiel ist nicht effizient, es zeigt nur eine Anwendung der Funktion ChangeSelection.

var tc = new xTextControl( document.getElementById('myTextField') );
var oldText = 'Suchtext';
var newText = 'Ersatztext';
var startPos = tc.Text.indexOf( oldText );
while (startPos >= 0) {
  tc.ChangeSelection( startPos, startPos+oldText.length, newText, false );
  startPos = tc.Text.indexOf( oldText );
}
tc.UpdateControlSelection();

Siehe auch

xTextControl.SetSelectionRange()

xTextControl.SetSelectionRange(
  aSelStart, aSelEnd, aUpdateControlSelection );

Setzt die Selektion auf den Bereich aSelStart bis exklusiv aSelEnd. Die entsprechenden Properties (SelText, SelStart, SelEnd) des xTextControl werden nachgeführt.

Wenn aUpdateControlSelection = true ist, wird die Selektion auch an das zugehörige Eingabefeld übertragen, sonst nicht. Dies ist sinnvoll, wenn in einem weiteren Schritt weitere Änderungen vorgenommen werden sollen.

Hinweis

Für aSelStart und aSelEnd muss gelten:

  • aSelStart >= 0 and aSelStart <= xTextControl.Text.length
  • aSelEnd >= 0 and aSelEnd <= xTextControl.Text.length
  • aSelStart <= aSelEnd

Beispiel

Im folgenden Beispiel wird die erste Fundstelle eines Textes markiert.

var tc = new xTextControl( document.getElementById('myTextField') );
var searchText = 'Suchtext';
var startPos = tc.Text.indexOf( searchText );
if (startPos >= 0) {
  tc.SetSelectionRange( startPos, startPos+searchText.length, true );
}

Siehe auch

xTextControl.SetCaretPos()

xTextControl.SetCaretPos( aPos );

Setzt den Cursor an die Position aPos.

Hinweis

Für aPos muss gelten:

  • aPos >= 0 and aPos <= xTextControl.Text.length

Diese Funktion ruft intern die Funktion SetSelectionRange wiefolgt auf:

var tc = new xTextControl( document.getElementById('myTextField') );
tc.SetSelectionRange( aPos, aPos, true );

Beispiel

Im folgenden Beispiel wird der Cursor an den Textanfang gesetzt:

var tc = new xTextControl( document.getElementById('myTextField') );
tc.SetCaretPos( 0 );

Siehe auch

xTextControl.GetScrollTop()

xTextControl.GetScrollTop();

Gibt die Position des obersten im Fenster sichtbaren Pixels in Pixel zurück. Mit der Funktion SetScrollTop kann der Text zu dieser Position gescrollt werden.

Beispiel

var tc = new xTextControl( document.getElementById('myTextField') );
var top = tc.GetScrollTop();

Siehe auch

xTextControl.SetScrollTop()

xTextControl.SetScrollTop( aPos );

Scrollt das Dokument im Fenster so, dass die Pixelposition aPos ganz oben im Fenster erscheint. Mit der Funktion GetScrollTop kann diese Position abgefragt werden.

Beispiel

var tc = new xTextControl( document.getElementById('myTextField') );
var top = tc.GetScrollTop();
// move cursor...
tc.SetScrollTop( top );

Siehe auch

xTextControl.GetCursorScrollTop()

var pos = xTextControl.GetCursorScrollTop();

Gibt die Pixel-Position der Zeile zurück, in der sich der Cursor (SelectionStart) befindet. Wenn mit diesem Wert SetScrollTop gerufen wird, so scrollt der Browser das Dokument so, dass die Zeile mit dem Cursor die oberste Zeile im Fenster ist.

Beispiel

var tc = new xTextControl( document.getElementById('myTextField') );
tc.SetCaretPos( aCursorPosition );
var topScroll = tc.GetCursorScrollTop();
tc.SetScrollTop( topScroll );

Siehe auch

xTextControl.GetLineHeight()

xTextControl.GetLineHeight();

Gibt die Zeilenhöhe in Pixel zurück.

Die Zeilenhöhe wird aus dem Abstand zweier Zeilen berechnet. Es wird nicht ein Style-Attribut abgefragt. Die Zeilenhöhe fällt als Nebenprodukt der Funktion GetCursorScrollTop ab. Wenn möglich sollte die Zeilenhöhe also nach GetCursorScrollTop abgefragt werden, da sonst letztere zweimal hintereinander ausgeführt wird.

xTextControl.GetDataFromControl()

xTextControl.GetDataFromControl();

Synchronisiert die Properties des xTextControl mit den Werten des zugehörigen Eingabefeldes. Beim Erzeugen des xTextControl wird diese Funktion ausgeführt. Wenn der Anwender zwischen Funktionsaufrufen die Möglichkeit hat, das Eingabefeld interaktiv zu verändern, muss GetDataFromControl() gerufen werden, um das xTextControl auf den aktuellen Stand zu bringen.

Beispiel

Im folgenden Beispiel wird angenommen, dass die Funktion OnAnyEvent bei allen möglichen Anwenderaktionen mit dem Eingabefeld myTextField gerufen wird (onclick, onkeydown usw.).

var tc = new xTextControl( document.getElementById('myTextField') );

function OnAnyEvent( event ) {
  tc.GetDataFromControl();
  // auf Event reagieren
}

Siehe auch

xTextControl.UpdateControlSelection()

xTextControl.UpdateControlSelection();

Bei etlichen Funktionen des xTextControl kann per Parameter aUpdateControlSelection angegeben werden, ob die geänderte Selektion des xTextControl an das zugehörige Eingabefeld weiter gegeben werden soll oder nicht. So kann man mehrere Funktionen zusammen fassen, bevor das Eingabefeld nachgeführt wird. Mit UpdateControlSelection wird dann die aktuelle Selektion des xTextControl an das Textfeld weiter geleitet.

Hinweis

Die Funktion UpdateControlSelction wird intern bei etlichen Funktionen aufgerufen, wenn der Parameter aUpdateControlSelection = true gesetzt wird.

Beispiel

Im folgenden Beispiel werden 2 Änderungen am xTextControl vorgenommen, ohne die veränderte Selektion an das Eingabefeld weiter zu leiten. Mit dem abschliessenden Aufruf von UpdateControlSelection wird dies nachgeholt.

var tc = new xTextControl( document.getElementById('myTextField') );
tc.ChangeSelectionText( 'Ersatztext', false );
tc.SetSelectionRange( 0, tc.Text.length, false );
tc.UpdateControlSelection();

Siehe auch

Weitere Infos zur Seite
Erzeugt Donnerstag, 4. Dezember 2008
von wabis
Zum Seitenanfang
Geändert Mittwoch, 19. November 2014
von wabis