Wie entferne ich die Auswahlleiste vollständig aus einem TRichEdit-Steuerelement?

9

Auf der linken Seite jeder Zeile in einem TRichEdit -Steuerelement befindet sich ein unsichtbarer Bereich, in dem der Cursor in einen nach rechts weisenden Pfeil umgewandelt wird. Wenn Sie darauf klicken, wird die gesamte Zeile ausgewählt. Es ist leicht zu sehen, wenn die Textausrichtung des TRichEdit Center oder Rechts ist. Ich glaube, dass dieser Bereich eine Auswahlleiste genannt wird.

Ein solcher Balken existiert nicht in%% control.

Meine Frage:

Wie entferne ich diese Auswahlleiste, so dass das Verhalten des Cursors dasselbe wäre wie in TMemo ?

Ich verwende Delphi 7 und es gibt keine TMemo Eigenschaften, um dieses Verhalten zu kontrollieren.

Es gibt einen Wert TRichEdit , den Sie mit der Nachricht ECO_SELECTIONBAR verwenden können, aber es fügt nur einen kleinen Teil der Auswahlleiste hinzu oder entfernt sie (nur nützlich, wenn Sie eine Auswahlleiste zu einem EM_SETOPTIONS hinzufügen möchten eine Linke Ausrichtung).

    
jedivader 09.06.2013, 19:43
quelle

3 Antworten

1

Vielen Dank für Ihre Antworten.

Da es anscheinend keinen "richtigen" Weg gibt, um dies zu tun, habe ich folgende Lösung entwickelt:

%Vor%

Es ist überhaupt nicht elegant, aber es macht den Job erledigt.

Beachten Sie, dass dieser Code keine Doppelklick-Auswahl für die vollständige Zeile zulässt und keine Dreifachklick-Volltextauswahl unterstützt. Dazu müssen Sie wahrscheinlich zum Beispiel eine Interceptor-Klasse verwenden.

    
jedivader 12.06.2013 15:19
quelle
0

Verwenden Sie SetWindowLong() , um den Fensterstil ES_SELECTIONBAR aus dem RichEdit zu entfernen, zB:

%Vor%

Alternativ können Sie eine neue Komponente von TRichEdit ableiten oder eine Interceptor-Klasse verwenden, um die virtuelle Methode CreateParams() zu überschreiben, um den Stil zu entfernen:

%Vor%     
Remy Lebeau 10.06.2013 01:07
quelle
0

Es gibt keine dokumentierte Möglichkeit, dieses Verhalten für das Rich-Edit-Steuerelement zu deaktivieren. Es gibt keine Stile, Nachrichten oder Funktionen, die eine Möglichkeit bieten, dieses Verhalten zu deaktivieren.

Der% ES_SELECTIONBAR Stil, den Sie erwähnt haben, ermöglicht es, einen kleinen Rand hinzuzufügen, wenn der Text linksbündig ist. Der Delphi-Wrapper für das Rich-Edit-Steuerelement enthält nicht den ES_SELECTIONBAR -Stil, also ist es nicht so, als ob Sie ihn entfernen könnten, da er nie an erster Stelle steht.

Bei zentriertem und rechtsbündigem Text ist der Auswahlbereich immer vorhanden, unabhängig davon, ob der ES_SELECTIONBAR -Stil vorhanden ist oder nicht. Tatsächlich scheint der Stil ES_SELECTIONBAR überhaupt keinen Einfluss auf das Verhalten des Steuerelements für zentrierten und rechts ausgerichteten Text zu haben.

Ich erwarte, dass Sie, wenn Sie die Implementierung dieser Auswahlzone rückentwickeln, das Verhalten entfernen könnten, indem Sie die Fensterprozedur des Rich-Edit-Steuerelements ändern.

    
David Heffernan 10.06.2013 08:05
quelle

Tags und Links