AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Painting in the code editor

Ein Thema von stahli · begonnen am 31. Mai 2020 · letzter Beitrag vom 29. Aug 2020
Antwort Antwort
Benutzerbild von stahli
stahli

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

Painting in the code editor

  Alt 31. Mai 2020, 23:51
Ich möchte bestimmte Texte im Codeeditor farbig hinterlegen.

Ein früherer Ansatz über IOTAHighlighter (https://www.delphipraxis.net/204355-...hlighting.html) schägt offenbar fehl (ist auch so im Netz als Problem zu finden).


Einen anderen Ansatz beschreibt David von Parnassus (woher auch die neuen Bookmarks stammen).

-> https://parnassus.co/mysteries-of-id...editor-part-1/

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.

-> https://parnassus.co/mysteries-ide-p...editor-part-2/


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:
Note: FCoreIDEHandle is the module handle of coreide*.bpl, loaded into the current process. Finding this is left as an exercise for the reader, and there are variety of ways. This method may get you started.
-> https://stackoverflow.com/questions/...unction-within

FCoreIDEHandle ist nicht bekannt. In den Hinweisen ist das bereits erläutert und man muss irgendwie die IDECore.dll laden und dort zur Laufzeit suchen.
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...
Miniaturansicht angehängter Grafiken
31-05-_2020_23-04-14.png  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Painting in the code editor

  Alt 31. Mai 2020, 23:58
Ich möchte bestimmte Texte im Codeeditor farbig hinterlegen.
Du könntest dir mal meine Session der CodeRage 2019 dazu ansehen: Decorating the Editor View
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Painting in the code editor

  Alt 1. Jun 2020, 00:19
Oh, das sieht ja genial aus!

Ich versuche mal, mich damit zu beschäftigen...

Vielen Dank!
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Painting in the code editor

  Alt 1. Jun 2020, 22:24
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: https://youtu.be/GpYPVsxopNI

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!
Miniaturansicht angehängter Grafiken
01-06-_2020_22-05-23.jpg  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#5

AW: Painting in the code editor

  Alt 2. Jun 2020, 11:03
Das sieht sehr interessant aus.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Painting in the code editor

  Alt 12. Aug 2020, 22:16
mein aktueller Stand (kurzes Video): https://youtu.be/b_n7glxa-nw

(Ist noch nicht ganz fertig und wird Teil meines UnitOptimizers.)
Miniaturansicht angehängter Grafiken
12-08-_2020_22-13-50.jpg  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Painting in the code editor

  Alt 28. Aug 2020, 20:41
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?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#8

AW: Painting in the code editor

  Alt 28. Aug 2020, 20:45
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?
Editor Fenster Handle und Invalidate geht nicht?
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.

Geändert von venice2 (28. Aug 2020 um 20:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Painting in the code editor

  Alt 28. Aug 2020, 22:04
Oh, peinlich, das war gar nicht das Hauptproblem.

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?
Angehängte Dateien
Dateityp: zip entfernen.zip (2,38 MB, 1x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Painting in the code editor

  Alt 29. Aug 2020, 16:28
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 19:47 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