![]() |
AW: Open Tools API - benutzte Unit laden
Hallo zusammen,
hat jemand noch einen Tipp, wie man die Reihenfolge der Unit-Tabs in der IDE abfragen kann? Ich ermittle alle offenen Units über die nachfolgende Funktion. Das funktioniert auch grundsätzlich. Das Problem ist, dass die aktuelle Unit immer zuerst gescannt wird. Bei einem Wechsel der offenen Unit wird die Reihenfolge der dargestellten Units unerwünscht geändert. Ich hätte gern immer die gleiche Reihenfolge wie die Tabs der IDE.
Delphi-Quellcode:
procedure GetCodeFromOpenUnits(SearchDataUnitList: ISearchDataUnitList);
const BufferSize = 254; // Number of chars for Buffer... var Editor : IOTAEditor; EditView : IOTAEditView; M, I, J : Integer; module : IOTAModule; sourceEditor : IOTASourceEditor; OTAModuleServices: IOTAModuleServices; Reader : IOTAEditReader; Position : Integer; Buffer : AnsiString; ReadedChars : Integer; SourceCode : AnsiString; SearchDataUnit : ISearchDataUnit; begin EditView := nil; EditPos.Line := 0; EditPos.Col := 0; SearchDataUnitList.Clear; BorlandIDEServices.GetService(IOTAModuleServices, OTAModuleServices); for M := 0 to OTAModuleServices.ModuleCount - 1 do begin module := OTAModuleServices.Modules[M]; for I := 0 to module.ModuleFileCount - 1 do begin Editor := module.ModuleFileEditors[I]; if Supports(Editor, IOTASourceEditor, sourceEditor) then begin for J := 0 to sourceEditor.EditViewCount - 1 do begin EditView := sourceEditor.EditViews[J]; RegisterViewPaintNotifier(EditView); if Assigned(EditView) then begin SourceCode := ''; Reader := EditView.Buffer.CreateReader; if Assigned(Reader) then begin Position := 0; SetLength(Buffer, BufferSize); repeat ReadedChars := Reader.GetText(Position, PAnsiChar(Buffer), BufferSize); Inc(Position, ReadedChars); SourceCode := SourceCode + Copy(Buffer, 1, ReadedChars); until ReadedChars < BufferSize; end; SearchDataUnit := TSearchDataUnit.Create; SearchDataUnit.UnitFileName := module.FileName; SearchDataUnit.Code.Text := String(SourceCode); SearchDataUnitList.Add(SearchDataUnit); end; end; end; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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