Autor Beitrag
crakos
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: Sa 07.05.05 18:35 
//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
///////////////Erkentnisse aus diesem Thread:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Blinkender Cursor :arrow: hier
Markieren :arrow: 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.
ausblenden 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])<65or (ord(gta[i])>90then
        begin
          showmessage('Bitte verwenden Sie keine Sonderzeichen in ihrem Schlüsselwort');
          //hier soll nun der cursor springen
          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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: Sa 07.05.05 20:14 
mh leider markiert der das nicht :/
feivel3333
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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
ausblenden 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 :/
ausblenden Delphi-Quelltext
1:
2:
          richedit1.SelStart:=nipos;
          richedit1.SelLength:=1;
feivel3333
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: 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:

ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt, B- durch Highlight-Tags ersetzt.
crakos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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 ;)

_________________
Das Ende der Menschheit ist der Anfang der Unendlichkeit.
crakos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 var Position:integer
 begin
   Edit.SetFocus;  //das Editierfeld soll angewählt werden (wichtig) 
   Pos('ö',Edit.Text); //Position von ö herrausfinden
   Edit.SelStart := Position-1;//markieren nach dem ö daher -1 um vor dem ö zu markieren
   Edit.SelLength := 1// wieviele buchstaben  markiert werden sollen
 end;

_________________
Das Ende der Menschheit ist der Anfang der Unendlichkeit.
crakos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 195


D2k5 Pers
BeitragVerfasst: So 15.05.05 19:27 
mit
ausblenden Delphi-Quelltext
1:
 edit.selstart:= (Hier position des Cursors); //muss eine zahl sein ;)					

kann man den Blinkenden Cursor zu der gewünschten position dirigieren.
Wichtig dabei
ausblenden Delphi-Quelltext
1:
 Edit.SetFocus;  //das Editierfeld muss vor dem selstart angewählt werden (wichtig)					

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.