Events für Vor – und Nach Einfügen aus der Zwischenablage für TAdvMemo nachrüsten

Die AdvMemo – Komponenten von TMS Components sind äußerst leistungsfähig, mit weitaus mehr Funktionen ausgestattet als die Standard – Memo – Komponenten. Was Ihnen aber dennoch fehlt sind Events, die ausgelöst werden vor und nach dem Einfügen von Text aus der Zwischenablage. Dies kann aber ganz nützlich sein, besonders, wenn man wissen möchte, ob sich am Text etwas geändert hat, beispielsweise, wenn man einen Speicher-Button entsprechend aktivieren möchte. Glücklicherweise ist das Nachrüsten aber ganz einfach.

Neue abgeleitete Memo – Komponente

Folgende Unit erstellt einen Nachfolger von TdbAdvMemo und erweitert diese um die zwei Events OnVorEinfuegen und OnNachEinfuegen. Sie können auch andere Namen verwenden. Ich verwende aber gerne deutsche Namen, da man dann fast sicher ausschließen kann mit irgendwas in Konflikt zu geraten.

Das Beispiel verwendet TdbAdvMemo, wenn Sie das db weglassen, können Sie auch eine Erweiterung für die Nicht – DB – Komponente vornehmen. Und das Ganze geht natürlich auch mit der Standardmemo – Komponente von Delphi, dann leiten Sie eben von TMemo ab.

Legen Sie sich einfach ein neues Delphi – Package und fügen Sie dann eine neue Unit hinzu mit folgenden Code:

unit advdbmemoex;

interface

uses
ClipBrd, Windows, Messages, SysUtils, Classes, Controls, StdCtrls,advmemo,dbadvmemo;

type
TStringEvent = procedure(Sender: TObject; var s: String) of object;
TdbAdvMemoEx = class(TdbAdvMemo)
private
FOnVorEinfuegen: TStringEvent;
FOnNachEinfuegen: TNotifyEvent;
procedure WMPaste(var Message: TMessage); message WM_PASTE;
protected
public
published
property OnVorEinfuegen: TStringEvent read FOnVorEinfuegen write FOnVorEinfuegen;
property OnNachEinfuegen: TNotifyEvent read FOnNachEinfuegen write FOnNachEinfuegen;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents(‚MyComponents‘, [TdbAdvMemoEx]);
end;

procedure TdbAdvMemoEx.WMPaste(var Message: TMessage);
var
strClipText: String;
begin
// Prüfen, ob OnVorEinfuegen Event ist zugeordnet und ob die
//Zwischenablage Standardtext enthält
if Assigned(FOnVorEinfuegen) and Clipboard.HasFormat(CF_TEXT) then
begin
// Text aus Zwischenablage in Variable speichern
strClipText := ClipBoard.AsText;
// VorEinfuegen Event auslöseb
FOnVorEinfuegen(self, strClpText);

// Zwischenablage leeren und diese mit dem neuen Text ersetzen
Clipboard.Clear;
Clipboard.AsText := strClpText;
end;

Anschließend speichern, kompilieren und installieren, ab sofort finden Sie dann in Ihrer Delphi Palette neue erweiterte Memo – Komponente.

Ganz nach diesen Prinzip ist es natürlich auch möglich noch weitere Eigenschaften hinzuzufügen – Viel Spaß beim Programmieren.

Werbung & Infos:

WebSite X5WebSite X5 Winter Angebot mit 35% Rabatt

Professionelle Homepages / Online-Shops ohne Programmierung erstellen mit WebSite X5 und dabei aktuell 35% sparen:

WebSite X5 Evo jetzt bereits für 69,97 statt 99,95€

WebSite X5 Pro jetzt bereits für 139,97 Euro statt 199,95€

WebSite X5 Agency für 244,94 statt 349,95€


HP Black Friday


Verwandte Themen: