Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Blinkenden Cursor an bestimmte position setzen
crakos - Sa 07.05.05 18:35
Titel: Blinkenden Cursor an bestimmte position setzen
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
///////////////Erkentnisse aus diesem Thread:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Blinkender Cursor :arrow:
hier [
http://www.delphi-forum.de/viewtopic.php?t=41568#252494]
Markieren :arrow:
hier [
http://www.delphi-forum.de/viewtopic.php?t=41568#252493]
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Ja Cursor ist gleich Mauszeiger, daher auch GetCursorPos und SetCursorPos aber das was immer im text blinkt ist doch auch der cursor oder? :)
Ich möchte das der Cursor vor das sonderzeichen gesetzt wird also vor gta[i] am liebsten noch markieren, aber das geht bestimmt nur mit richedit.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| gta:=uppercase(leerstellen_loeschen(edgta.text));
for i:=1 to length(gta) do begin if (ord(gta[i])<65) or (ord(gta[i])>90) then begin showmessage('Bitte verwenden Sie keine Sonderzeichen in ihrem Schlüsselwort'); exit; end; end; |
brauche das auch zb wenn das program gestartet wird. das der cursor sofort im richtigen feld blickt,damit man nicht erst noch reinklicken muss.
hoffe mir kann jemand helfen
feivel3333 - Sa 07.05.05 19:38
Titel: Edit focussieren und Text markieren
Hi,
prinzipiell kannst du alle möglichen Objekte focussieren, also "den Cursor draufpositionieren", wenn du z.B. Edit.SetFocus schreibst.
Dann möchtest du Text markieren.
Als erstes benötigst du die Position des ungültigen Zeichens.
Mit niPos := pos( '$', Edit.Text ) bekommst du die Position des Zeichens, hier ein Dollarzeichen, im Edit-Text.
Wenn du nun
Edit.SelStart := niPos;
und
Edit.SelLength := 1
schreibst, dann wird dieses Zeichen markiert.
Gruß, André
crakos - Sa 07.05.05 20:14
mh leider markiert der das nicht :/
feivel3333 - Sa 07.05.05 20:23
Titel: Text im Edit markieren
Könntest du mal ein paar mehr Informationen geben:
Was für ein Typ von Editfeld hast du benutzt? TEdit oder TMaskEdit?
Welcher Text steht im Editfeld, den du markieren willst?
Welches Zeichen soll im Editfeld markiert werden?
Durch was wird die Prozedur aktiviert, die die Prüfung in deinem Programm vornimmt?
Hast du mal den Debugger eingeschaltet und geprüft, ob das Programm deine Prüfroutine überhaupt durchläuft?
Wenn sie durchlaufen wird, welcher Wert steht dann als Position in der Variable, die ich dir vorgeschlagen habe?
Gruß, André
crakos - Sa 07.05.05 20:38
k mehr infos
im feld steht ein wort zb: kkkökkkk hier soll ö markiert werden
ist tedit
die pos funktion findet das sonderzeichen auch genau
es durchläuft die schleife auch nur er markiert es dann nicht
Delphi-Quelltext
1: 2:
| edgta.SelStart:=niPos; edgta.SelLength:=1; |
auch wenn ich für niPos einen wert einsetze markiert er nix,
es liegt nicht an dem rest des programs
ob ich danach per exit rausgehe oder nicht ist egal
der code läuft nicht
achso hab alles mal mit trichedit gemacht, geht auch net :/
Delphi-Quelltext
1: 2:
| richedit1.SelStart:=nipos; richedit1.SelLength:=1; |
feivel3333 - Sa 07.05.05 20:50
Prinzipiell hast du schon alles richtig gemacht.
Ich vermute mal, das Übel liegt wo anders, und zwar:
Entweder ist das Edit nicht auf Enable = true
oder der Focus wird kurz nach dem SelStart und SelLength auf ein anderes Element gesetzt und die blaue Markierung kann nicht angezeigt werden.
Dafür bräuchte ich aber die weitere Umgebung des Programms. Ist es ein großes oder ein kleines Progrämmchen? Könntest du es mir vielleicht mal kurz mailen, dass ich es mir in seiner Gesamtheit ansehen kann? Mit dem Debugger ist es sicher direkt zu finden.
feivel3333 - Sa 07.05.05 20:52
Es gibt noch eine Alternative, wo der Fehler herkommen kann:
Du hast das Editfeld nicht anfocussiert, das bedeutet, der Cursor ist nicht im Edit.
Ich habe das gerade mal nachgespielt, indem ich zwei Edits auf ein Form gelegt habe. Das erste enthielt den fehlerhaften Text und das zweite habe ich anfocussiert. Dann habe ich auf dem ersten mit SelStart und SelLength gearbeitet. Natürlich wurde hier nichts angezeigt bzw. markiert, da der Focus auf dem zweiten Edit lag.
crakos - Sa 07.05.05 20:58
also klein ist es warlich nicht. bin grad am verfeinern.
ich weiss nicht wie der debugger funktioniert *schäm*
das richfeld hab ich wie gesagt gerade dazu gemacht
und das editier feld hab ich gerade aus commentiert
feivel3333 - Sa 07.05.05 21:10
Ich kann es zwar nicht kompilieren, da ich keine Variants.dcu habe, aber ich gehe schwer davon aus, dass meine letzte Vermutung der Grund für das nicht korrekte Darstellen der Markierung ist.
In dem Moment, wenn du auf den Chiffrieren-Button klickst, ist der Focus auf eben diesem Button. Nun stellt das Programm fest, dass sich ein fehlerhaftes Zeichen im Edit befindet. Es meldet diesen Fehler und soll im Editfeld etwas markieren. Die Markierung wird aber nicht dargestellt, da der Focus immer noch auf dem Button liegt. Also:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| showmessage('Bitte verwenden Sie keine Sonderzeichen in ihrem Schlüsselwort'); niPos := pos( gta[i],richedit1.text); richEdit1.SetFocus; richedit1.SelStart:=nipos; richedit1.SelLength:=1; exit; |
Das dürfte eigentlich schon alles sein. Und du musst dafür kein RichEdit nehmen, das geht auch mit Edit oder MaskEdit.
Moderiert von
raziel: Delphi-Tags hinzugefügt, B- durch Highlight-Tags ersetzt.
crakos - Sa 07.05.05 21:17
yeah vielen dank :D
war der focus, war mir nach deiner erklärung auch inen sin bekommen ;)
danke für deine gedult und ach noch zum hinzufügen
er markiert NACH der position die länge die bei length eingetragen wird
also die position nicht mit, daher voher -1 und er machts ;)
also nochmals vielen dank :)
wenn alle leute so viel gedult hätten wie du, würde vieles schneller gehen, naja liegt wohl daran, weil die meisten keine zeit haben :)
//edit so ganz nebenbei hast du mit dem setfocus auch das problem des aktivieren des
feldes bei programstart gelöst ;)
crakos - Sa 07.05.05 21:33
mein direktes problem ist zwar super gelöst.
Nun möchte ich aber doch noch wissen wie ich den blinkenden cursor an eine bestimmte stelle setze.
//edit ach soeben selbst rausgefunden :lol: ist einfach edit.selstart:=positiondescursors
crakos - So 15.05.05 19:21
So ich fasse alles nochmal zusammen:
sagen wir mal
Zitat: |
edit.text:=kkköukk |
und wir wollen das ö markieren
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var Position:integer begin Edit.SetFocus; Pos('ö',Edit.Text); Edit.SelStart := Position-1; Edit.SelLength := 1; end; |
crakos - So 15.05.05 19:27
mit
Delphi-Quelltext
1:
| edit.selstart:= (Hier position des Cursors); |
kann man den Blinkenden Cursor zu der gewünschten position dirigieren.
Wichtig dabei
Und
edit.selstart:= (Hier position des Cursors)-1;
Wenn der Cursor
vor den gewünschten buchstaben soll
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!