Autor |
Beitrag |
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 07.05.05 18:35
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
///////////////Erkentnisse aus diesem Thread: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Blinkender Cursor hier
Markieren hier
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
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
Zuletzt bearbeitet von crakos am So 15.05.05 19:31, insgesamt 1-mal bearbeitet
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: 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 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 07.05.05 20:14
mh leider markiert der das nicht :/
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: 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 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: 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
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: 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
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: 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 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: 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
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: 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 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Sa 07.05.05 21:17
yeah vielen dank
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 
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: 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  ist einfach edit.selstart:=positiondescursors
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: 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; |
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
crakos 
      
Beiträge: 195
D2k5 Pers
|
Verfasst: 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
Delphi-Quelltext
Und
edit.selstart:= (Hier position des Cursors)-1;
Wenn der Cursor vor den gewünschten buchstaben soll
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|