AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Machbarkeit: Splitted Editor à la Word
Thema durchsuchen
Ansicht
Themen-Optionen

Machbarkeit: Splitted Editor à la Word

Ein Thema von s.h.a.r.k · begonnen am 12. Mai 2011 · letzter Beitrag vom 13. Mai 2011
 
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Machbarkeit: Splitted Editor à la Word

  Alt 12. Mai 2011, 08:01
Wäre Delphi etwas populärer, dann gäbe es sicherlich etwas vergleichbares wie dieses, was so manchen sicherlich im ersten Moment abschrecken aber im zweiten umso mehr faszinieren wird (na gut - sagen wir im zwanzigsten Moment ) - ich würde *fast* alles geben, den Vi als Editor in die Delphi-IDE integrieren zu können

In Sachen Flexibilität und Anpassbarkeit ist die Delphi-IDE leider von Haus aus recht mager bestückt. Die ToolsAPI bietet zwar schon einige Sachen, aber das Non plus ultra ist das auch nicht.
Zumindest aber in Sachen Shortcuts kannst Du Dir damit selber helfen - und das ist gar nicht so schwer.
Ich füge mal eine Unit von mir ein, die Dir das mit den Shortcuts anhand eines einfachen Beispiels demonstriert. Vielleicht ist das ein Einstieg.

Delphi-Quellcode:
Unit uKeyBindings2;

Interface

Uses Classes,
   Windows,
   ToolsAPI,
   Menus;

Type
   TKeyBindings = Class(TNotifierObject, IUnknown, IOTANotifier, IOTAKeyboardBinding)

      //IOTAKeyboardBinding
      Procedure BindKeyboard(Const BindingServices: IOTAKeyBindingServices);
      Function GetBindingType: TBindingType;
      Function GetDisplayName: String;
      Function GetName: String;

      //Testroutine für Taste F2
      Procedure Do_F2(Const Context: IOTAKeyContext; KeyCode: TShortCut; Var BindingResult: TKeyBindingResult);
   public
      Procedure Destroyed;
   End;

Procedure Register;

Implementation

Const
   InvalidIndex = -1;

Var
   BindingIndex: Integer;

Procedure Register;
Begin
   BindingIndex := (BorlandIDEServices As IOTAKeyBoardServices).AddKeyboardBinding(TKeyBindings.Create);
End;

//--------------------------------------------------------------------------------------------------------------------

{ TKeyBindings }

Procedure TKeyBindings.Do_F2(Const Context: IOTAKeyContext; KeyCode: TShortCut; Var BindingResult: TKeyBindingResult);
//Fügt Trennlinie in aktuelle Zeile ein
Var
   oEditorServices: IOTAEditorServices;
   oEditView: IOTAEditView;
Begin

   BindingResult := krHandled;

   oEditorServices := BorlandIDEServices As IOTAEditorServices;
   oEditView := oEditorServices.TopView; //Aktueller Buffer

   If Assigned(oEditView) Then Begin

      //An den Anfang springen, einen Zeilenumbruch einfügen, und wieder zurück an den Anfang springen
      oEditView.Buffer.EditPosition.Move(-1, 1);
      oEditView.Buffer.EditPosition.InsertText('//-------------------------------------------');
   End;
End;

//--------------------------------------------------------------------------------------------------------------------

Procedure TKeyBindings.BindKeyboard(Const BindingServices: IOTAKeyBindingServices);
//Registriert alles KeyBindings
Begin
   BindingServices.AddKeyBinding([ShortCut(Ord(VK_F2), [])], Do_F2, Nil);
End;

//--------------------------------------------------------------------------------------------------------------------

Function TKeyBindings.GetBindingType: TBindingType;
Begin
   Result := btPartial;
End;

//--------------------------------------------------------------------------------------------------------------------

Function TKeyBindings.GetDisplayName: String;
Begin
   Result := 'SOFF_KeyBindings';
End;

//--------------------------------------------------------------------------------------------------------------------

Function TKeyBindings.GetName: String;
Begin
   Result := 'SOFF_KeyBindings';
End;

//--------------------------------------------------------------------------------------------------------------------

Procedure TKeyBindings.Destroyed;
Begin
   If BindingIndex > InvalidIndex Then
      (BorlandIDEServices As IOTAKeyBoardServices).RemoveKeyboardBinding(BindingIndex);

   BindingIndex := InvalidIndex;
End;

//--------------------------------------------------------------------------------------------------------------------

Initialization
   BindingIndex := InvalidIndex;

End.
Gruß
s-off

Geändert von s-off (12. Mai 2011 um 08:49 Uhr)
  Mit Zitat antworten Zitat
 


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 15:49 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