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
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Machbarkeit: Splitted Editor à la Word

  Alt 12. Mai 2011, 03:27
Hallo zusammen,

die Delphi-IDE ist an sich schon recht okay, aber an manchen stellen könnte es durchaus noch besser und flexibler werden. Zum einen fehlt mir im Moment die Funktion Shortcuts selbst definieren zu können, die dann auch noch global funktionieren -- ja, ich weiß es gibt entsprechende Experten, aber meist kollidieren manche Shortcuts. Und zum anderen will ich auch noch eine Funktion, die der angeheftete Mockup besser beschreiben kann, als ich hier mit Worten

Es geht darum, ob es möglich ist via entsprechenden APIs den Delphi-Editor zu klonen und dazu noch einen Splitter einzubauen. Die Tabs sollen unabhängig voneinander funktionieren, sodass ich nicht auf beiden Seiten die gleiche Datei einsehen muss, ebenso unabhängig sollten die Scrollbars funktionieren. Wenn man eine neue Datei öffnet, so sollte diese in beiden Tabs vorhanden sein, d.h. die Tabs sollten komplett synchron sein, aber nur im "Main-Editor" aktiviert werden.

Nun steht eben die Frage im Raum, ob sowas überhaupt machbar ist? Denn ich selbst habe leider noch keinerlei Erfahrung mit den Delphi-IDE-APIs.

Einzig und allein die Erweiterung von Castalia kenne ich, die so halbwegs das macht, was ich haben will.
Miniaturansicht angehängter Grafiken
mockup.jpg  
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
s-off

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

AW: Machbarkeit: Splitted Editor à la Word

  Alt 12. Mai 2011, 09: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 09:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Machbarkeit: Splitted Editor à la Word

  Alt 13. Mai 2011, 11:36
@Armin
Da war doch mal was...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: Machbarkeit: Splitted Editor à la Word

  Alt 13. Mai 2011, 15:41
Habe die Funktion auch schon gefunden, zugegebenermaßen aber erst danach. Klar, das Problem, welches ich habe, löst diese Funktion schon, aber sie entspricht nicht ganz dem, was ich so haben will

(man darf ja noch anspruchsvoll sein, oder? )
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Machbarkeit: Splitted Editor à la Word

  Alt 13. Mai 2011, 17:28
[OT]Kleine Randnotiz: Das Partizip Perfekt von to split ist split, nicht splitted.[/OT]
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz