Du kannst dafür mit dem ToolsAPI ein Keyboard-Binding erstellen. Dann hast Du Zugriff auf den Editor, siehe Programmgerüst (enthält nur das nötigste, ungetestet):
Delphi-Quellcode:
interface
uses ToolsAPI;
procedure Register
implementation
type
TMeineKeyBoardKlasse = class(TNotifierObject, IOTAKeyboardBinding)
public
function GetBindingType: TBindingType;
function GetDisplayName: string;
function GetName: string;
procedure BindKeyboard(const BindingServices:
IOTAKeyBindingServices);
procedure KeyLastUpdated(const Context: IOTAKeyContext;
KeyCode: TShortcut;
var BindingResult: TKeyBindingResult);
end;
procedure Register;
begin
(BorlandIDEServices as IOTAKeyboardServices).
AddKeyboardBinding(TMeineKeyBoardKlasse.Create);
end;
function TMeineKeyBoardKlasse.GetBindingType: TBindingType;
begin
(* Nur teilweise Keyboard umbelegen *)
Result := btPartial;
end;
function TMeineKeyBoardKlasse.GetDisplayName: string;
begin
(* Anzeige in den Optionen *)
Result := 'Meine Tastaturbelegung';
end;
function TMeineKeyBoardKlasse.GetName: string;
begin
Result := 'mein.keyboard'; // muss einmalig sein
end;
procedure TMeineKeyBoardKlasse.BindKeyboard(
const BindingServices: IOTAKeyBindingServices);
begin
(* Taste mit Adresse der Funktion hinzufügen *)
BindingServices.AddKeyBinding([TextToShortCut('Ctrl+Shift+F5')], KeyLastUpdated, nil);
end;
procedure TMeineKeyBoardKlasse.KeyLastUpDated(const Context: IOTAKeyContext;
KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
var
iEditPos: IOTAEditPosition;
begin
BindingResult := krHandled;
(* Hurrah, das eigenliche Ziel ist erreicht! *)
iEditPos:= Context.EditBuffer.EditPosition;
iEditPos.InsertText(FormatDateTime('dd.mm.yyyy - hh:nn', now));
end;