AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Textcursor

Ein Thema von Orhan · begonnen am 8. Jul 2006 · letzter Beitrag vom 12. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Orhan

Registriert seit: 24. Dez 2004
Ort: Breslauerstr.9 Neu-Ulm
46 Beiträge
 
#1

Textcursor

  Alt 8. Jul 2006, 18:52
Hallo

ich habe eine Frage zu Delphi:

Wie kann ich den Textcursor mit dem Timer verbinden lassen?
Kurz gesagt: Ich möchte den Textcursor mit dem Timer funktionieren lassen.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: Textcursor

  Alt 8. Jul 2006, 18:59
In wie fern? Wie oft er in einer Sekunde aufblickt oder wie meinst du das? Soll er jede Sekunde was schreiben???
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Textcursor

  Alt 8. Jul 2006, 18:59
Bitte? Den Textcursor mit einem Timer verbinden? Noch einmal für nicht eingeweihte bitte

Wenn du meinst, die Blinkgeschwindigkeit zu ändern: das geht mit einem Timer nicht, es sei denn du zeichnest den Cursor selbst.
  Mit Zitat antworten Zitat
8. Jul 2006, 20:15
Dieses Thema wurde von "Christian Seehase" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Falsche Sparte
Orhan

Registriert seit: 24. Dez 2004
Ort: Breslauerstr.9 Neu-Ulm
46 Beiträge
 
#5

Re: Textcursor

  Alt 9. Jul 2006, 11:04
Hallo

In einem Text möchte ich den Textcursor in die beiden Richtungen
(VK_LEFT, VK_RİGHT) mit dem Timer verschieben lassen.

Anders gesagt: Ich möchte die Rechts und Links Pfeile (VK_LEFT, VK_RİGHT) an den Timer
anschließen.

Danke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Textcursor

  Alt 9. Jul 2006, 12:32
Hallo Orhan,

du kannst die Eigenschaft SelStart eines Text-Controls manipulieren, um das Caret zu bewegen. Die angehängte Demo zeigt dir wie es geht.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip caret_785.zip (1,9 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
Orhan

Registriert seit: 24. Dez 2004
Ort: Breslauerstr.9 Neu-Ulm
46 Beiträge
 
#7

Re: Textcursor

  Alt 9. Jul 2006, 15:08
Hallo Marabu

Danke vielmals!

Es funktioniert wunderbar.
Aber ein kleines Problem habe ich nicht lösen können.
İch möchte diese Funktion im RichEdit anwenden.
Wie springt der Cursor im RichEdit in die nächste Zeile.

Danke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Textcursor

  Alt 9. Jul 2006, 17:53
Hallo Orhan,

bei Multiline Edit Controls gibt es eine Besonderheit: du musst über den Zeilentrenner sLineBreak (#13#10) hinweg springen, mitten hinein funktioniert nicht.

Delphi-Quellcode:
function TDemoForm.MoveCaret(e: TRichEdit; forth: Boolean): Boolean;
var
  iPos, iDelta: Integer;
begin
  with e do
  begin
    iDelta := Ord(forth) shl 1 - 1;
    iPos := SelStart + iDelta;
    SelStart := iPos;

    // Sonderbehandlung von Multiline Edit Controls
    // nur bei forth = True notwendig
    if iPos <> SelStart then
    begin
      iPos := SelStart + iDelta shl 1;
      SelStart := iPos;
    end;

    if forth
      then Result := iPos < Length(Text)
      else Result := iPos > 0;

    self.Caption := Format('caret pos %d', [iPos]);
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Orhan

Registriert seit: 24. Dez 2004
Ort: Breslauerstr.9 Neu-Ulm
46 Beiträge
 
#9

Re: Textcursor

  Alt 10. Jul 2006, 13:34
Hallo marabu

Herzlichen Dank für ihre Hilfe.
Das war sehr nett von ihnen.

Kann man zu dem Code auch so eine Funktion zufügen:

Wenn der Cursor blinkt wird der Buchstabe in der Zeile (im Text) z.B. rot und
wenn der Cursor nicht mehr blinkt (verschwindet) wird der Buchstabe wieder schwarz.

Ist das möglich? Und wie...Bitte?

Danke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Textcursor

  Alt 10. Jul 2006, 14:26
Hallo Orhan,

das Zeichen rechts neben dem Caret rot zu färben ist kein Problem:

Delphi-Quellcode:
function TDemoForm.MoveCaret(e: TRichEdit; forth: Boolean): Boolean;
var
  iPos, iDelta: Integer;
begin
  with e do
  begin
    iDelta := Ord(forth) shl 1 - 1;
    iPos := SelStart + iDelta;

    // das Zeichen rechts normal (schwarz) anmalen
    SelLength := 1;
    SelAttributes.Color := Font.Color;
    SelLength := 0;

    SelStart := iPos;
    // Sonderbehandlung von Multiline Edit Controls
    // nur bei forth = True notwendig
    if iPos <> SelStart then
    begin
      iPos := SelStart + iDelta shl 1;
      SelStart := iPos;
    end;

    // das Zeichen rechts rot anmalen
    SelLength := 1;
    SelAttributes.Color := clRed;
    SelLength := 0;

    if forth
      then Result := iPos < Length(Text)
      else Result := iPos > 0;

    self.Caption := Format('caret pos %d', [iPos]);
  end;
end;
Der gewünschte Zusammenhang mit der Sichtbarkeit des Carets ist mir nicht ganz klar. Da gibt es auch sicherlich ein paar Randbedingungen, aber die Steuerung der Schriftfarbe geschieht grundsätzlich nach folgendem Muster:

Delphi-Quellcode:
with RichEdit do
begin
  SelStart := 0; // Cursor vor das erste Zeichen setzen
  SelLength := Length(Lines.Text); // Anzahl der Zeichen festlegen
  SelAttributes.Color := Font.Color; // Farbe festlegen
  SelLength := 0; // eventuell Markierung aufheben
end;
Freundliche Grüße

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz