Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Open Tools API - benutzte Unit laden

  Alt 29. Jul 2018, 23:08
Eine Unit kann mehrfach geöffnet sein. Dann gibt es auch mehrere EditViews.

Also, du fängst an mit IOTAModuleServices und holst dir über OpenModule das IOTAModule (geht auch, wenn schon offen). Dann iterierst du über ModuleFileEditors und prüfst ob der jeweilige IOTAEditor auch IOTASourceEditor unterstützt. IOTASourceEditor liefert dir dann die EditViews.

An den Sourcecode kommst du aber auch ohne den EditView über IOTASourceEditor.CreateReader. Mit IOTASourceEditor.Show kannst du einen EditView erzeugen. Der ist dann aber auch sichtbar.

Delphi-Quellcode:
var
  Editor: IOTAEditor;
  EditView: IOTAEditView;
  I, J: Integer;
  module: IOTAModule;
  sourceEditor: IOTASourceEditor;
  OTAModuleServices: IOTAModuleServices;
begin
  BorlandIDEServices.GetService(IOTAModuleServices, OTAModuleServices);
  module := OTAModuleServices.OpenModule(AFileName);
  for I := 0 to module.ModuleFileCount - 1 do begin
    Editor := module.ModuleFileEditors[I];
    if Supports(Editor, IOTASourceEditor, sourceEditor) then begin
      if sourceEditor.EditViewCount = 0 then begin
        sourceEditor.Show; // damit ein EditView existiert
      end;
      for J := 0 to sourceEditor.EditViewCount - 1 do begin
        EditView := sourceEditor.EditView[J];
        // ...
      end;
    end;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat