Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bei Enter wort einfügen und neue Zeile (https://www.delphipraxis.net/7707-bei-enter-wort-einfuegen-und-neue-zeile.html)

ByteLord 19. Aug 2003 15:07


Bei Enter wort einfügen und neue Zeile
 
Hi,

ich habe folgendes Problem:
Ich habe ein Richedit und immer wenn ich Enter drücke soll
eingefügt werden und der Cursor soll in die nächste Zeile springen.

Wie mach das am besten.

Thx für eure Hilfe.

Cya
ByteLord

Tpercon 19. Aug 2003 15:24

Re: Bei Enter wort einfügen und neue Zeile
 
Schau dir das OnKeyPress Ereignis mal an.
Wenn key = #13 dann fügst du an der CursorPos
ein.

Alexander 19. Aug 2003 15:25

Re: Bei Enter wort einfügen und neue Zeile
 
Kuck dir mal die Vrtual Keys und das Event OnKeyDown an.
Vergiss nciht Keypreview auf true zu stellen...
Nachtrag: Mist wieder zu spät...

ByteLord 19. Aug 2003 15:58

Re: Bei Enter wort einfügen und neue Zeile
 
sorry leute, das hab ich noch nicht so ganz verstanden?

Tpercon 19. Aug 2003 16:03

Re: Bei Enter wort einfügen und neue Zeile
 
Die Abfrage dürfte ja kein Problem sein, also nehme ich an, es liegt am einfügen.
Mach es dir einfach und füge am Ende der letzten Zeile vorm Cursor einfach ein
ein. Die Zeilen des RichEdit sprichst du mit RichEdit1.Lines.Strings[welchezeile] an.

Dannyboy 19. Aug 2003 16:07

Re: Bei Enter wort einfügen und neue Zeile
 
... und die Abfrage auf die Return-Taste hat den Wert '#13' oder
Du nimmst die Konstante
Delphi-Quellcode:
VK_RETURN

Stanlay Hanks 19. Aug 2003 16:13

Re: Bei Enter wort einfügen und neue Zeile
 
Wenns wirklich an der Abfrage liegt:

Zuerst im Objektinspektor bei den Eigenschaften von Form
"KeyPreview" auf true setzten.

Dann im Obejktinspektor von dem RichEdit auf das Ereignisse Register wechseln und zweimal auf die Zeile mit
OnKeyDown klicken.

Dann wird eine Prozedur erzeugt in die du noch folgendes Einträgst:

Delphi-Quellcode:
IF Key = VK_RETURN THEN
 begin
 .
 .
 .
 end;
Man liest sich, Stanlay :hi:

Illuminator-23-5 19. Aug 2003 16:27

Re: Bei Enter wort einfügen und neue Zeile
 
ich würd sagen, es wär besser, wenn man die abfrage im Ereignis des Richedits/des eingabefelds zu machen, denn wenn man sonst irgendwo enter drückt, dann wird das ereignis doch ausgeführt (sprich: keypreview dann auch auf false)

dann würds so aussehen (wie schon von stanlay angedeutet)
Delphi-Quellcode:
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    richedit1.Lines[richedit1.CaretPos.Y] := richedit1.Lines[richedit1.CaretPos.Y] + '
'
end;

ByteLord 19. Aug 2003 16:39

Re: Bei Enter wort einfügen und neue Zeile
 
thx für eure tipps, ich konnte sie erfolgreich verwenden.
wie könnte ich es jetzt noch anstellen, dass das
rot ist?

Stanlay Hanks 19. Aug 2003 16:44

Re: Bei Enter wort einfügen und neue Zeile
 
Zitat:

Zitat von ByteLord
thx für eure tipps, ich konnte sie erfolgreich verwenden.

Na das wundert mich aber :mrgreen:

Zu dem rot:

Schau dir mal dazu in der OI "SelAttributes", "SelStart" und "SelLength" an. Da dürfte sich einiges von selber klähren :wink:

Man liest sich, Stanlay :hi:

PS: Ich will den alten :hi : smiley wieder!

ByteLord 19. Aug 2003 16:47

Re: Bei Enter wort einfügen und neue Zeile
 
jo thx Stanley.

Stanlay Hanks 19. Aug 2003 16:54

Re: Bei Enter wort einfügen und neue Zeile
 
Kein Problem. Wenn du irgendwo nicht weiterkommst, kannst du ja nochmal fragen. :wink:

PS: Stanlay :wink:

Man liest sich, Stanlay :hi:

ByteLord 19. Aug 2003 16:55

Re: Bei Enter wort einfügen und neue Zeile
 
OH Sorry!
Natürlich Stanlay. :mrgreen:

ByteLord 19. Aug 2003 17:41

Re: Bei Enter wort einfügen und neue Zeile
 
Zitat:

Zitat von Stanlay Hanks
Kein Problem. Wenn du irgendwo nicht weiterkommst, kannst du ja nochmal fragen. :wink:

Komm doch nicht weiter mit dem farbig machen.
Kenn mich noch so aus mit delphi. Hab die ganze zeit versucht des irgendwie hinzubasteln aber bekomms nicht hin.

Stanlay Hanks 19. Aug 2003 17:59

Re: Bei Enter wort einfügen und neue Zeile
 
Hi! Dann setz mal das da statt dem bisherigen QT ein:

Delphi-Quellcode:
if key = VK_RETURN then
    begin
    RichEdit1.SelAttributes.Color := clred;
    IF RichEdit1.CaretPos.y <> 0 THEN
    RichEdit1.Lines.Add('');
    richedit1.Lines[richedit1.CaretPos.Y] := richedit1.Lines[richedit1.CaretPos.Y] + '
';
    RichEdit1.SelAttributes.Color := clblack;
    end;
end;
Damit müsste es gehen. Ich hab den Ansatz von Illuminator-23-5 verwendet.

Man liest sich, Stanlay :hi:

sakura 19. Aug 2003 18:05

Re: Bei Enter wort einfügen und neue Zeile
 
Zitat:

Zitat von Stanlay Hanks
PS: Ich will den alten :hi : smiley wieder!

Wie ist der neue Kompromiss?

Im Vergleich mit den Standards :) :( :? 8) :x

Der neue :hi:
Der alte http://www.delphipraxis.net/images/smiles/wave2.gif

...:cat:...

Stanlay Hanks 19. Aug 2003 18:09

Re: Bei Enter wort einfügen und neue Zeile
 
Ich .... will ... meinen .... alten .... <weinkrampf kriegt :cry:> ... smiley....bitte!!!!!

Der alte war soooo cool. So ein richtiger Standard Smiley. :love: Also mir persönlich gefällt der am besten...Nett, dass du nen Kompromiss vorschlägst, aber ich persönlich find den alten am besten! :wink:

Man liest sich, Stanlay <hier wäre normalerweise der : hi : Smiley :mrgreen: >

ByteLord 19. Aug 2003 18:19

Re: Bei Enter wort einfügen und neue Zeile
 
@ Stanlay: Thx nochmal. Hat wunderbar funktioniert. :hello:
cya
ByteLord

Aya 19. Aug 2003 19:29

Re: Bei Enter wort einfügen und neue Zeile
 
Hi,

das ganze geht noch viel leichter... ;)
mit Richedit.SelText kannst du einen Text an der CursorPosition einfügen:

Delphi-Quellcode:
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=VK_RETURN then begin
    RichEdit1.SelAttributes.Color:=clRed;
    RichEdit1.SelText:='
';
    RichEdit1.SelAttributes.Color:=RichEdit1.Font.Color;
  end;
end;
Au'revoir,
Aya~

Stanlay Hanks 19. Aug 2003 19:38

Re: Bei Enter wort einfügen und neue Zeile
 
Naja....da kommen am schluss sachen wie



Hallo

Hallo

Hallo


raus. :wink:
und so sollte es aussehen:



Hallo


Hallo


Hallo

Man liest sich, Stanlay :hi:

Aya 19. Aug 2003 19:40

Re: Bei Enter wort einfügen und neue Zeile
 
Hi,

na dann halt einfach nochne leerzeile dazu ;)

Delphi-Quellcode:
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=VK_RETURN then begin
    RichEdit1.SelAttributes.Color:=clRed;
    RichEdit1.SelText:=#13#10+'
';
    RichEdit1.SelAttributes.Color:=RichEdit1.Font.Color;
  end;
end;
Au'revoir,
Aya~

Stanlay Hanks 19. Aug 2003 19:44

Re: Bei Enter wort einfügen und neue Zeile
 
Und weil ich so pingelig bin:

Dann gibt's das erste mal, wenn ich Enter drücke, eine Leerzeile....:mrgreen:

Du müsstest also noch abfragen, ob du grade in der ersten Zeile bist.

Delphi-Quellcode:
if Key=VK_RETURN then begin
    RichEdit1.SelAttributes.Color:=clRed;
    IF RichEdit1.CaretPos.Y <> 0 THEN
    RichEdit1.SelText:=#13#10+'
'
    ELSE
    RichEdit1.SelText:='
';
    RichEdit1.SelAttributes.Color:=RichEdit1.Font.Color;
  end;

Stanlay Hanks 19. Aug 2003 19:45

Re: Bei Enter wort einfügen und neue Zeile
 
Dann ist deine Lösung natürlich kürzer und besser. :wink:

Man liest sich, Stanlay :hi:


[Edit] Edit gelöscht...geht doch nicht so :mrgreen: [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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