![]() |
INTAEditViewNotifier startet nicht!
Hallo,
ich habe einen IDENotifier < TIDENotifier01 = class(TInterfacedObject, IOTANotifier, IOTAIDENotifier) > umgebaut in einen EditViewNotifier < TEditViewNotifier01 = class(TInterfacedObject, IOTANotifier, INTAEditViewNotifier) > Und zwar nach diesem Codebeispiel (der untere Code mit dem grünen Häckchen): ![]() So weit so gut - nur dass dieser EditViewNotifier jetzt aber leider nicht mehr starten will. Ich habe versucht, das Package zu debuggen und im constructor einen Haltepunkt gesetzt, leider scheint er da jetzt aber überhaupt erst garnicht vorbeizukommen. Beim vorherigen IDENotifier gabs diesbezüglich keine Problem. Irgendjemand eine Idee, woran das liegen könnte? Thx |
AW: INTAEditViewNotifier startet nicht!
Wer ruft "dieses" register auf?
Niemand. Zumindestens die IDE führt doch bestimmt nur "register" auf, welche keine Parameter hat. |
AW: INTAEditViewNotifier startet nicht!
Thx, mit
Delphi-Quellcode:
läuft das Package jetzt wenigstens.
initialization
topMostEditView := (BorlandIDEServices as IOTAEditorServices).TopView; register(topMostEditView); finalization RemoveNotifier(topMostEditView); Allerdings scheint der Notifier nicht wirklich mit dem currentEditView verbunden zu sein, weil auch die callBack-Routinen (AfterSave, Modified etc.) nicht aufgerufen werden. Und beim DeInstallieren des Packages gibts dann auch leider immer eine Exception. ? (gibt's nicht irgendwo einen diesbezüglichen BeispielCode wo man sich das mal reinziehen kann? (habe vorhin schonmal kurz aber leider erfolglos danach gesucht)) |
AW: INTAEditViewNotifier startet nicht!
Liste der Anhänge anzeigen (Anzahl: 1)
Schau mal, ob Dir die Unit weiter hilft.
Aufrufen dann z.B. mit:
Delphi-Quellcode:
function Get_Selected_Text: String;
var EditorServices: IOTAEditorServices; EditView: IOTAEditView; EditBlock: IOTAEditBlock; begin Result := ''; EditorServices := BorlandIDEServices as IOTAEditorServices; EditView := EditorServices.TopView; RegisterViewPaintNotifier(EditView); if Assigned(EditView) then begin EditBlock := EditView.GetBlock; Result := EditBlock.Text; end; end; Ich weiß nicht, ob es Dein Problem löst, aber so läuft es bei mir zuverlässig. |
AW: INTAEditViewNotifier startet nicht!
Ja, danke, ich glaube, es ist eine Gute Idee, den EditViewNotifier in einer extra Unit zu deklarieren und ihn überhaupt erst dann zu registrieren, wenn auch ein 100% gültiges IOTAEditView als Parameter für die Register-Proc vorliegt. Werde ich morgen früh gleich mal in Angriff nehmen.
Bisher hatte ich das einfach mit alles in nur einer Unit etwas zu eng hochgezogen, mit entweder nur dem einen (IDENotifier) oder dem anderen (EditView)Notifier als Home für den Hauptcode. Für letzteres ist wahrscheinlich ein IDENotifier die doch normalere Wahl. Diese IOTA-Dingens sind noch ein bissel Neuland, von daher.. |
AW: INTAEditViewNotifier startet nicht!
Für mich ist das alles auch etwas unübersichtlich.
Ich habe mich da auch durch fremde Beispiele gewühlt und das dann Stück für Stück an meinen Bedarf angepasst. Ich brauche auch einen Code-Zugriff über mehrere Units parallel, was sicher eher unüblich ist. Übrigens können mehrere offene Edit-Views die gleiche Unit benutzen. Ggf. muss man das auch beachten. Kann natürlich sein, dass es auch für mich eine einfachere Lösung gibt. Aber ich bin erst mal froh, dass es überhaupt vernünftig läuft. Falls Du mal noch ein paar Anregungen in diesem Themenbereich brauchst, könntest Du mal hier stöbern: ![]() ![]() ![]() |
AW: INTAEditViewNotifier startet nicht!
Bei initialization ist "nur" dein Package (diese DLL) geladen,
Aber erst beim register (ohne Parameter) hatte die IDE vorher Zeit ein paar Dinge zu initialisieren. (und nun rate mal, warum alle Anderen ihren Code erst im register ausführen) |
AW: INTAEditViewNotifier startet nicht!
@stahli, besten Dank für die Links. Das wären ca. 29 Seiten IOTA-Diskussion als Alternativprogramm zum Corona-Lockdown. Da kann ja wohl kaum mehr Langeweile aufkommen! :)
@himitsu, diese zusätzliche Codezeile im initialization-Teil war doch alleine nur dem Umstand geschuldet, dass ich in der ersten und einzigen Package-unit gerade den IDENotifier durch einen EditViewNotifier ausgetauscht hatte, und dessen Register-Proc (ohne dessen Aufruf das Package erst garnicht startet) halt einen Parameter brauchte. Ein Versuch, den ich ja auch schnell wieder verworfen habe. War/ist halt jetzt noch so die totale IOTA-Experimentierphase! |
AW: INTAEditViewNotifier startet nicht!
Es ist egal was man nutzt,
als Einstiegspunkt wird (standardmäßig) immer dieses
Delphi-Quellcode:
verwendet.
register;
Was du darin dann machst, ist dir überlassen. Auch dein spezielles
Delphi-Quellcode:
darfst darin aufrufen ... du mußt nur über die OTA das passende/aktive Editfenster suchen/holen und an deinen Parameter übergeben.
register(...)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 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