AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

RichEdit Texteinzug

Ein Thema von Dunkelbunt27 · begonnen am 2. Okt 2010 · letzter Beitrag vom 5. Okt 2010
Antwort Antwort
Bernerbaer
(Gast)

n/a Beiträge
 
#1

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
 
#2

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
 
#3

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
 
#4

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
 
#5

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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: RichEdit Texteinzug

  Alt 4. Okt 2010, 15:36
Ich glaub, statt SetCursorPos sucht er eher SetFocus oder ActiveControl. Alternativ Tab-Reihenfolge ändern.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chillkröte

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

AW: RichEdit Texteinzug

  Alt 4. Okt 2010, 15:41
achso ja hast recht
beim nochmaligen lesen wirds klar
konnte mit dem pipe zeichen grad nichts anfangen^^
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:57 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