Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 16.11.10 21:07 
Hallo zusammen!

Ich habe eine Möglichkeit entdeckt, das Caret in einem Memo oder RichEdit zu verbergen:
www.delphipraxis.net...-feld-entfernen.html

Wie kann man trotzdem noch Text markieren? Ich meine so wie in .chm-Hilfedateien!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 20.11.10 01:36 
Hallo,

im RichEdit könnte das von den Schweitzern helfen:
...im RichEdit die Hintergrundfarbe einzelner Zeichen ändern?

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.11.10 18:13 
user profile iconLannes hat folgendes geschrieben Zum zitierten Posting springen:
im RichEdit könnte das von den Schweitzern helfen:
...im RichEdit die Hintergrundfarbe einzelner Zeichen ändern?
Vielen Dank, aber das Problem ist, dass bei RichEdit's überhaupt kein Text selektiert werden kann (es wird tatsächlich gar nicht selektiert!), ausser durch Doppelklick -> ganzer Block und durch Klicken am linken Rand -> ganze Zeile. Das - unsichtbare - Caret wird zwar positioniert, aber es wird nichts selektiert.

Der Code im Link funktioniert hier leider nicht!

Bei Memos kann ganz normal selektiert werden!

//Edit:
Ich müsste den Text irgendwie manuell selektieren, mit MouseDown als SelStart, dann MouseMove, und MouseUp als SelLenght. Ja, so etwas eben in eine Formel giessen... :gruebel:

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!


Zuletzt bearbeitet von galagher am Sa 20.11.10 18:27, insgesamt 1-mal bearbeitet
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 20.11.10 18:27 
Hallo,

Hier findest du eine andere Methode, das Caret zu verstecken. Das Markieren von Text funktioniert jedoch trotzdem.
delphi.about.com/cs/...03/a/bltip0703_5.htm

Edit: Zusätzlich noch CreateCaret(Memo1.handle, 0, 0, 0); im OnMouseDown setzen
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.11.10 18:46 
user profile icontoms hat folgendes geschrieben Zum zitierten Posting springen:
Hier findest du eine andere Methode, das Caret zu verstecken. Das Markieren von Text funktioniert jedoch trotzdem.
delphi.about.com/cs/...03/a/bltip0703_5.htm

Edit: Zusätzlich noch CreateCaret(Memo1.handle, 0, 0, 0); im OnMouseDown setzen
Danke, klappt aber nicht wirklich! Das Caret bleibt sichtbar.

Ok, das Problem rührt wahrscheinlich daher, dass das Caret, wenn man die Maus bewegt, immer an die aktuelle Position gesetzt wird. Das ermöglicht es, das Wort, über dem die Maus liegt, zu erkennen. Das sichtbare Caret stört dabei nur. Siehe hier: www.delphi-forum.de/...ght=caret+++richedit

Im Momemt rufe uch ständig HideCaret auf. Das funktioniert zwar, ist aber nicht besonders schöner Code. Wenn ich nichts anderes finde, belasse ich es eben so.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 20.11.10 18:50 
Kannst auch mal das probieren:

www.delphipraxis.net/1062808-post2.html
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.11.10 18:53 
user profile icontoms hat folgendes geschrieben Zum zitierten Posting springen:
Kannst auch mal das probieren:

www.delphipraxis.net/1062808-post2.html
Da kommt nur die Meldung "Ungültige Angabe: Thema
Wenn du einem normalen, gültigen Link im Forum gefolgt bist, wende dich bitte an den Webmaster."

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 20.11.10 18:58 
Probier's nochmals...
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.11.10 19:14 
user profile icontoms hat folgendes geschrieben Zum zitierten Posting springen:
Probier's nochmals...
Ok, danke, klappt jetzt. Nur, ich benutze kein normales TRichEdit, sondern ein TRxRichEdit, das kann auch Grafiken darstellen. Ich werde mir den Code jedenfalls vornehmen, vielleicht lässt sich was machen! Danke!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Sa 20.11.10 19:17 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
user profile icontoms hat folgendes geschrieben Zum zitierten Posting springen:
Probier's nochmals...
Ok, danke, klappt jetzt. Nur, ich benutze kein normales TRichEdit, sondern ein TRxRichEdit


Sollte keine Rolle spielen. Einfach TRichEdit durch TRxRichEdit ersetzen.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.11.10 19:41 
user profile icontoms hat folgendes geschrieben Zum zitierten Posting springen:
Sollte keine Rolle spielen. Einfach TRichEdit durch TRxRichEdit ersetzen.
Stimmt, es läuft. Allerdings bewirkt die Einstellung ShowCaret := False nichts, egal, ob im OI oder im Code. Das Caret bleibt sichtbar.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 20.11.10 23:01 
Hallo!
Ich habe daraus eine Komponente TRichEditPlus gemacht, erweitert um die Methode MouseUp, da beim Klicken mit der rechten Maustaste trotz ShowCaret := False das Caret kurz aufblinkte.

@user profile icontoms:
Dazu habe ich zwei Fragen:
1. Warum hast du uses Windows; im Abschnitt implementation stehen und nicht im interface?
2. Macht es einen Unterschied, ob man in der Prozedur HideTheCaret die Anweisungen CreateCaret, HideCaret oder DestroyCaret verwendet? Wenn ja, welchen?

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
{
  Von TRichEdit abgeleitete Komponente, mit der man das Caret ausblenden
  kann. Der Code stammt im Wesentlichen von toms aus dem Delphi-Forum und
  wurde um die Methode MouseUp (galagher) erweitert.

  Nov. 2010
}



unit RichEditPlus;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, ComCtrls, Messages, RxRichEd;

type
  TRichEditPlus = class(TRichEdit)
  procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
  private
    FShowCaret: Boolean;
    procedure SetShowCaret(const Value: boolean);
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LButtonDown;
    procedure WMKeyDown(var Message: TWMKeyDown); message WM_KeyDown;
    procedure HideTheCaret;
  protected
  public
    constructor Create(AOwner: TComponent); override;
  published
    property ShowCaret: Boolean read FShowCaret write SetShowCaret;
  end;

procedure Register;

implementation

uses Windows;

procedure Register;
begin
  RegisterComponents('Samples', [TRichEditPlus]);
end;

{ TRichEditPlus }

procedure TRichEditPlus.HideTheCaret;
begin
  if not FShowCaret then
    CreateCaret(Handle, 000);
end;

constructor TRichEditPlus.Create(AOwner: TComponent);
begin
  inherited;
  FShowCaret := False;
end;

procedure TRichEditPlus.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  inherited;
  if Assigned(Parent) then
    HideTheCaret;
end;

procedure TRichEditPlus.SetShowCaret(const Value: boolean);
begin
  FShowCaret := Value;
end;

procedure TRichEditPlus.WMKeyDown(var Message: TWMKeyDown);
begin
  inherited;
  if Assigned(Parent) then
    HideTheCaret;
end;

procedure TRichEditPlus.WMLButtonDown(var Message: TWMLButtonDown);
begin
  inherited;
  if Assigned(Parent) then
    HideTheCaret;
end;

procedure TRichEditPlus.WMPaint(var Message: TWMPaint);
begin
  inherited;
  if Assigned(Parent) then
    HideTheCaret;
end;

end.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!