![]() |
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 |
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. |
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... |
Re: Bei Enter wort einfügen und neue Zeile
sorry leute, das hab ich noch nicht so ganz verstanden?
|
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. |
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
|
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:
Man liest sich, Stanlay :hi:
IF Key = VK_RETURN THEN
begin . . . end; |
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; |
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? |
Re: Bei Enter wort einfügen und neue Zeile
Zitat:
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! |
Re: Bei Enter wort einfügen und neue Zeile
jo thx Stanley.
|
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: |
Re: Bei Enter wort einfügen und neue Zeile
OH Sorry!
Natürlich Stanlay. :mrgreen: |
Re: Bei Enter wort einfügen und neue Zeile
Zitat:
Kenn mich noch so aus mit delphi. Hab die ganze zeit versucht des irgendwie hinzubasteln aber bekomms nicht hin. |
Re: Bei Enter wort einfügen und neue Zeile
Hi! Dann setz mal das da statt dem bisherigen QT ein:
Delphi-Quellcode:
Damit müsste es gehen. Ich hab den Ansatz von Illuminator-23-5 verwendet.
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; Man liest sich, Stanlay :hi: |
Re: Bei Enter wort einfügen und neue Zeile
Zitat:
Im Vergleich mit den Standards :) :( :? 8) :x Der neue :hi: Der alte http://www.delphipraxis.net/images/smiles/wave2.gif ...:cat:... |
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: > |
Re: Bei Enter wort einfügen und neue Zeile
@ Stanlay: Thx nochmal. Hat wunderbar funktioniert. :hello:
cya ByteLord |
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:
Au'revoir,
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; Aya~ |
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: |
Re: Bei Enter wort einfügen und neue Zeile
Hi,
na dann halt einfach nochne leerzeile dazu ;)
Delphi-Quellcode:
Au'revoir,
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; Aya~ |
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; |
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:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz