![]() |
Painting in the code editor
Liste der Anhänge anzeigen (Anzahl: 1)
Ich möchte bestimmte Texte im Codeeditor farbig hinterlegen.
Ein früherer Ansatz über IOTAHighlighter ( ![]() Einen anderen Ansatz beschreibt David von Parnassus (woher auch die neuen Bookmarks stammen). -> ![]() Ich habe das soweit nachgebaut und versucht, das Beispiel aus dem Screenshot zu erreichen. Es wird als Basisfall einfach "Hello Word" links oben in den Editor gemalt. Wenn das funktioniert, lässt sich das weiter ausbauen, was auch in einem zweiten Teil näher beschrieben wird. -> ![]() Aber ich komme mit Part 1 noch nicht ganz zurecht. Ich habe bereits alles umsetzen können bis auf EINEN Punkt:
Delphi-Quellcode:
FOriginalPaintLine := TCodeRedirect.GetActualAddr(GetProcAddress(FCoreIDEHandle, '@Editorcontrol@TCustomEditControl@PaintLine$qqrr16Ek@TPaintContextiii'));
// Patch the code editor’s PaintLine to use our method FPaintLineHook := TCodeRedirect.Create(@FOriginalPaintLine, @HookedIDEPaintLine); Zitat:
Delphi-Quellcode:
ist nicht bekannt. In den Hinweisen ist das bereits erläutert und man muss irgendwie die IDECore.dll laden und dort zur Laufzeit suchen.
FCoreIDEHandle
Ob der Controlname noch stimmt, weiß ich auch nicht. Ich hätte aber auf jeden Fall Interesse, den Weg noch weiter zu versuchen (ist schwierig als Autodidakt). Kann hier jemand helfen??? Oder hat jemand Grundkenntnisse bei der Verwendung einer DLL und Interesse an dem Thema? Wir könnten die unfertigen Units entsprechend teilen und weiter entwickeln... |
AW: Painting in the code editor
Zitat:
![]() |
AW: Painting in the code editor
Oh, das sieht ja genial aus!
Ich versuche mal, mich damit zu beschäftigen... Vielen Dank! |
AW: Painting in the code editor
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Uwe,
vielen Dank!!! Wie kommt man auf solche Lösungen??? Du bist ja echt genial. Ich habe schon mal einen ersten Zwischenstand erreicht, der die richtige Richtung aufzeigt: ![]() Ich muss da noch einiges klären und ausbauen, aber mit dem ersten Zwischenstand bin ich schon mal mehr als zufrieden. Hätte gar nicht mehr gedacht, dass ich doch noch eine Lösung finde. Also danke nochmal! :kiss: |
AW: Painting in the code editor
Das sieht sehr interessant aus. :thumb:
|
AW: Painting in the code editor
Liste der Anhänge anzeigen (Anzahl: 1)
mein aktueller Stand (kurzes Video):
![]() (Ist noch nicht ganz fertig und wird Teil meines UnitOptimizers.) |
AW: Painting in the code editor
Nach längerer Unterbrechung wegen anderer Verpflichtungen möchte ich hier an der Stelle weiter machen...
Mein aktuelles Problem: Ich möchte zu bestimmten Zeitpunkten eine Neuzeichnung des (oder der) aktuellen Editorfenster veranlassen. Das Zeichnen funktioniert, aber ich brauche manchmal eine komplette Aktualisierung. In den OTA und im Netz finde ich dazu nichts. Hat jemand einen Tipp? |
AW: Painting in the code editor
Zitat:
Sollte mich wundern. Wenn alle Editor Fenster dann halt das Handle der IDE komplett. Wenn du dich innerhalb des Fensters befindest bekommst du das Handle am schnellsten über ChildWindowFromPoint, WindowFromPoint FindWindow und oder Enumerieren kannst dir dann sparen. |
AW: Painting in the code editor
Liste der Anhänge anzeigen (Anzahl: 1)
Oh, peinlich, das war gar nicht das Hauptproblem. :oops:
Wenn ich im Editor arbeite wird (natürlich) alles neu gezeichnet - auch beim rückwärts löschen. Aber nicht beim Löschen über die ENTF-Taste (anbei ein kurzes Video). Gibt es eine einfache Möglichkeit, darauf zu reagieren, ohne noch einen zusätzlichen Module-Notifier einzurichten und es dann über ein Form-Invalidate zu versuchen? |
AW: Painting in the code editor
Ich prüfe jetzt einfach zyklisch den Text unter dem Cursor (weniger oft als die Cursorposition, damit die Last nicht so ansteigt).
So passt das jetzt schon sehr gut und kann auf kompliziertere Prüfungen und Überwachungen verzichten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 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