AGB  ·  Datenschutz  ·  Impressum  







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

RichEdit Texteinzug

Ein Thema von Dunkelbunt27 · begonnen am 2. Okt 2010 · letzter Beitrag vom 5. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

RichEdit Texteinzug

  Alt 2. Okt 2010, 22:08
Hallo liebe Delphi Praxis,
ich arbeite an einem kleinen Textbearbeitungsprogramm und habe ein paar wichtige Fragen.
Ich hoffe irgendjemand weiß eine Antwort.
(Bitte antwortet verständlich und möglichst mit Quelltextschnipseln

1) Texteinzug setzen
um bei einem 'Dokument' nicht links am Rand anzufangen habe ich folgenden Quelltext:
Delphi-Quellcode:
with Editor do begin
    Paragraph.FirstIndent := i;

    Paragraph.Tab[0] := 150;
    Paragraph.Tab[1] := 250;
    Paragraph.Tab[2] := 320;
    Paragraph.Tab[3] := 450;
    Paragraph.Tab[4] := 550;
  end;
end;
Hierbei ist Editor mein RichEdit1.
Das ganze funktioniert in sofern, dass ich nach 150pxls Platz anfange zu schreiben, was auch so sein soll.
Ich habe es in die RicheEdit OnClick geschoben, da mir nichts besseres eingefallen ist. Wo wär es besser aufgehoben?

Wie kann ich festlegen, dass ich erst nach 2 Zeilen Platz für z.B. Ein Kopfzeile anfange zu schreiben?
(Und wie kann man eine Kopfzeile definieren um darin zu schreiben?)

2) Wenn ich die Tab-Taste im gestarteten Programm drücke soll der Texteinzug weiterspringen, wie man das gewöhnt ist, also um die 4 Leerzeichen Platz gelassen werden.
Da die Tab Taste jedoch eine Steuerfunktion hat, schaltet sie statt einen Tab zu machen zwischen den Komponeten der Unit durch.
Wie kann ich das umgehen, bzw. Die Taste zwingen in der RichEdit zu bleiben und nich andere Buttons anzusteuern?

Ich freue mich auf die Antworten,
Liebe Grüße Dunkelbunt
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#2

AW: RichEdit Texteinzug

  Alt 2. Okt 2010, 22:34
Nicht push

Geändert von Dunkelbunt27 ( 2. Okt 2010 um 22:57 Uhr)
  Mit Zitat antworten Zitat
Bernerbaer
(Gast)

n/a Beiträge
 
#3

AW: RichEdit Texteinzug

  Alt 2. Okt 2010, 22:41
Mit dem pushen innerhalb eines Tages machst du dich hier nicht besonders beliebt!

Zeilen einfügen am Begin: richedit1.lines.insert(0,'');

tab: property wanttabs auf true setzen

Kopf- und Fusszeile: RIchedit unterstützt in Delphi keine Kopf- und Fusszeilen, also entweder selber malen oder auf ein externes Control ausweichen.

Geändert von Bernerbaer ( 2. Okt 2010 um 22:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: RichEdit Texteinzug

  Alt 2. Okt 2010, 22:45
nach 26 Minuten schon pushen ... was rauchst du denn gerade ... stell mal auf auf was ruhigeres um
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#5

AW: RichEdit Texteinzug

  Alt 2. Okt 2010, 23:04
'Tschuldigung!

Danke für die Antwort, das mit Wanttabs ist klasse.
Jetz nochmal die Frage, wo ist die gesamte Texteinzugsprozedur am besten aufgehoben?
OnClick ist eher unpassend...

Edit1:
Ich habe bei der RichEdit folgende Property entdeckt:
Border Width. Wenn man den Wert auf etwa 50 festlegt ist der Abstand des Textes zum Rand größer.
Dadurch hat man etwa den selben effekt...
Nachteil ist das der Platz, also die Border (Grenze) unbeschreibbar ist.

Geändert von Dunkelbunt27 ( 2. Okt 2010 um 23:14 Uhr)
  Mit Zitat antworten Zitat
Bernerbaer
(Gast)

n/a Beiträge
 
#6

AW: RichEdit Texteinzug

  Alt 2. Okt 2010, 23:18
Wo du die Texteinzugsprozedur einfügst hängt von deiner Anwendung ab.

Es gibt verschiedene Möglichkeiten:
- im Formcreate
- in einem Menü oder Button, wenn es der Benutzer zur Laufzeit festlegen soll

Zu dem Rand:

Nein, das ist nicht der gleiche Effekt! Ein Einzug gilt für einen Paragraph, und kann somit für unterschiedliche Absätze unterschiedlich gesetzt werden. Wenn also ein Blatt mit einem fixen Rand gesetzt werden soll verwende ich jeweils folgende Prozedur:
Delphi-Quellcode:
procedure TForm1.SetMargin(RE: TRichEdit; L,R,T,B : Integer);
// Linken, Rechten, Oberen und Unteren Rand setzen
var Rect :TRect;
begin
  SendMessage(RE.Handle,EM_GETRECT,0,LongInt(@Rect));
  Rect.Left := Rect.Left + L;
  Rect.Right := Rect.Right - R;
  Rect.Top := Rect.Top + T;
  Rect.Bottom := Rect.Bottom - B;
  SendMessage(RE.Handle,EM_SETRECT,0,LongInt(@Rect));
end;
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#7

AW: RichEdit Texteinzug

  Alt 2. Okt 2010, 23:29
Delphi erkennt die SetMargin nicht.
Muss ich irgendetwas bestimmtes einbinden oder beachten?
  Mit Zitat antworten Zitat
Bernerbaer
(Gast)

n/a Beiträge
 
#8

AW: RichEdit Texteinzug

  Alt 2. Okt 2010, 23:45
Delphi erkennt die SetMargin nicht.
Muss ich irgendetwas bestimmtes einbinden oder beachten?
füge unter private den Prozedurkopf ein, damit Delphi die Prozedur kennt:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    // hier einfügen
    procedure SetMargin(RE: TRichEdit; L,R,T,B : Integer);
die Prozedur fügst du dann irgendwo nach implementation ein

Delphi-Quellcode:
implementation

{$R *.dfm}

procedure TForm1.SetMargin(RE: TRichEdit; L,R,T,B : Integer);
// Linken, Rechten, Oberen und Unteren Rand setzen
var Rect :TRect;
begin
  SendMessage(RE.Handle,EM_GETRECT,0,LongInt(@Rect));
  Rect.Left := Rect.Left + L;
  Rect.Right := Rect.Right - R;
  Rect.Top := Rect.Top + T;
  Rect.Bottom := Rect.Bottom - B;
  SendMessage(RE.Handle,EM_SETRECT,0,LongInt(@Rect));
end;
und die Prozedur rufst du dann im Formcreate auf:
setMargin(richedit1,30,50,100,20);
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#9

AW: RichEdit Texteinzug

  Alt 3. Okt 2010, 09:39
Danke für die Erklärung!
Ist eine große Hilfe.

Ich melde mich im Edit wieder. =)

Edit1:

Hier tut sich mir eine weiter Frage auf:
1) Wie stell ich es an, dass bei Programmstart der Cursor (also das Pipe Zeichen) direkt auf der ersten möglichen Zeile des RichEdit landet, und nicht meine Combobox für die Schriftart markiert ist?
2) Gibt es eine möglichkeit für folgendes:
man markiert Text hält die Maus drüber und an der Stelle des Curor (Mouse.CursorPos(X,Y)) öffnet sich ein Menü mit Buttons.
Es soll keine neue Form sein und möglichst erst nach 1sec draufhalten erscheinen.
(Zusätzlich wäre es noch toll wenn das Menü eingeblendet wird und sich dann wieder ausblendet)

Ich hoffe jemand kann die Frage beantworten.

Vielen Dank,
Dunkelbunt

Geändert von Dunkelbunt27 ( 3. Okt 2010 um 10:24 Uhr)
  Mit Zitat antworten Zitat
Chillkröte

Registriert seit: 20. Aug 2008
34 Beiträge
 
Delphi 2010 Architect
 
#10

AW: RichEdit Texteinzug

  Alt 4. Okt 2010, 15:25
zu 1) SetCursorPos
ich glaub das ist es was du möchtest...

zu 2) keine ahnung ob das möglich ist, glaube aber nicht

an deiner stelle würde ich einfach nochmal neu posten anstatt dies im edit zu machen
so bekommt man das wenigstens mit, wenn du was neues fragst
  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:44 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