![]() |
RichEdit und Zeilenumbruch
Hi,
ich habe ein kleines problem. Ich möchte das RichEdit den text nicht nur an einem Space umbricht sondern auch an anderen zeichen. Kann man das irgendwo einstellen? ca. 1 Stunde google hat mich nicht weitergebracht. Danke im voraus |
Re: Frage zu RichEdit
Hi,
meines Wissens hat TRichEdit keine entsprechende Eigenschaft. Es sollte sich aber umsetzen lassen, in dem du über die Nachricht ![]() |
Re: Frage zu RichEdit
Oh gott, sowas hab ich noch nie gemacht. Also ich habe rausgefunden das er bei Space und - einen wrap macht. Mir fehlt nur der punkt :(
Eventuell mal dran denken das ich erst seit ca. 2 Wochen Programmiere (unter Windows)..... Also seitdem ich hier angemeldet bin ^^ Wenn ich hier mal was frage, dann hänge ich echt in der kurve und komme nicht weiter. Ansonsten wühle ich mich durch. Im moment mache ich einen kleinen irc-client. Der rennt auch schon nachdem ich die idirc.pas geändert habe. Die geänderte unit hab ich natürlich hier hochgeladen (ich hoffe das ist erwünscht), damit andere nicht über den selben fehler stolpern. Und für den irc-client bräucht ich den umbruch.... Kann man denn wielliecht RichEdit dazu bringen einfach umzubrechen wenn er am ende ist??? Egal welches zeichen dort steht. Das wäre auch genial...... Gruss und danke |
Re: Frage zu RichEdit
Ich möchte gleich noch eine frage hinterherschieben ;)
Und zwar habe ich grad mal versucht mit TabControl zu arbeiten. Leider scheint es so, das wenn RichEdit.Visible:=False ist, das alles nichtmehr richtig arbeitet wenn ich trotzdem weiter daten da reinschreibe. Gibt es da einen trick??? Danke |
Re: Frage zu RichEdit
Weil Weihnachten ist (und es mich selbst interessiert hat ...):
Automatische Zeilenwechsel werden an Zeichen aus WhitespaceChars und aus DelimiterChars durchgeführt. Die Implementierung ist nicht ganz perfekt: Wortweise springen nach Links mit Strg + Pfeiltaste verhält sich nicht ganz Standardkonform, aber ich hatte jetzt nicht mehr Zeit.
Delphi-Quellcode:
Gib deinem Thread bitte noch einen etwas aussagekräftigeren Titel und mach für die zweite Frage einen neuen auf. Sonst findet das später keiner mehr, der vielleicht mal vor dem gleichen Problem steht. Danke. :-)
// Fehlende Definitionen ergänzen
const WB_CLASSIFY = 3; WB_MOVEWORDLEFT = 4; WB_MOVEWORDRIGHT = 5; WB_LEFTBREAK = 6; WB_RIGHTBREAK = 7; WB_CLASS_WHITESPACE = 0; WB_CLASS_LINEBREAK = 1; WB_CLASS_DELIMITER = 2; WB_CLASS_NORMALCHAR = 3; WBF_CLASS = $0F; WBF_ISWHITE = $10; WBF_BREAKLINE = $20; WBF_BREAKAFTER = $40; // Zeichengruppen const WhitespaceChars: set of Char = [#9, #32]; LinebreakChars: set of Char = [#10, #13]; DelimiterChars: set of Char = [#9, #32, #13, '.', '-']; function EditWordBreakProc(lpch: LPTSTR; ichCurrent: Integer; cch: Integer; code: Integer): Integer; stdcall; begin case code of WB_CLASSIFY: if lpch[ichCurrent] in WhitespaceChars then Result := WBF_ISWHITE or WB_CLASS_WHITESPACE else if lpch[ichCurrent] in LinebreakChars then Result := WBF_BREAKLINE or WB_CLASS_DELIMITER else if lpch[ichCurrent] in DelimiterChars then Result := WBF_BREAKAFTER or WB_CLASS_DELIMITER else Result := WB_CLASS_NORMALCHAR; WB_ISDELIMITER: if (lpch[ichCurrent] in DelimiterChars) then Result := 1 else Result := 0; WB_LEFT, WB_MOVEWORDLEFT: begin Dec(ichCurrent); while (ichCurrent >= 0) and (lpch[ichCurrent] in DelimiterChars) do Dec(ichCurrent); while (ichCurrent >= 0) and not (lpch[ichCurrent] in DelimiterChars) do Dec(ichCurrent); Result := ichCurrent + 1; end; WB_LEFTBREAK: begin Dec(ichCurrent); while (ichCurrent >= 0) and not (lpch[ichCurrent] in DelimiterChars) do Dec(ichCurrent); if ichCurrent < 0 then ichCurrent := 0; Result := ichCurrent; end; WB_RIGHT, WB_MOVEWORDRIGHT: begin while (ichCurrent < cch) and not (lpch[ichCurrent] in DelimiterChars) do Inc(ichCurrent); while (ichCurrent < cch) and (lpch[ichCurrent] in DelimiterChars) do Inc(ichCurrent); Result := ichCurrent; end; WB_RIGHTBREAK: begin Inc(ichCurrent); while (ichCurrent < cch) and not (lpch[ichCurrent] in DelimiterChars) do Inc(ichCurrent); Result := ichCurrent; end; end; end; procedure TForm2.FormCreate(Sender: TObject); begin // Eigene Zeilenumbruchfunktion aktivieren SendMessage(RichEdit1.Handle, EM_SETWORDBREAKPROC, 0, Integer(@EditWordBreakProc)); end; |
Re: Frage zu RichEdit
Zitat:
|
Re: Frage zu RichEdit
Zitat:
@Niko, tausend dank für dein "geschenkt". Ich werde mal versuchen das reinzubekommen. Das mit dem Edit ist egal. Die box ist ReadOnly. LG |
Re: RichEdit und Zeilenumbruch
Rückmeldung: GEIL, klappt super. Nochmal tausend dank. Das hät ich in der zeit nicht hinbekommen. Eventuell nach 3 Tagen googln.
Nochmal danke... Gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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 by Thomas Breitkreuz