Text via Komponente in Editor einfügen

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 7273
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Text via Komponente in Editor einfügen

Beitrag von Mathias »

Ich bin unterdessen so weit gekommen, das bei Project ein Menu-Eintrag erscheint und wen man diesen anklickt, wird das Writeln ausgeführt.
Mein Ziel wäre es, das dieser Text in SynEdit von der Lazarus-IDE an der aktuellen Cursor Position eingefügt wird.

Einer eine Idee wie dies geht.

Code: Alles auswählen

unit Action1;

{$mode ObjFPC}{$H+}

interface

uses
Classes, SysUtils,
Forms, Controls, StdCtrls, Dialogs, ExtCtrls,
Serial,
LazLoggerBase,
LazarusPackageIntf,
ProjectIntf, CompOptsIntf, LazIDEIntf, IDEOptionsIntf, IDEOptEditorIntf, MenuIntf;

procedure Register;

implementation

procedure ShowOptionsDialog(Sender: TObject);
begin
  WriteLn('Ich will in die IDE');
end;

procedure Macro_Key_Register;
begin
  RegisterIdeMenuCommand(mnuProject, 'Text in IDE', 'Text in IDE', nil, @ShowOptionsDialog);
end;

procedure Register;
begin
  RegisterUnit('action1', @Macro_Key_Register);
end;

end.      
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1764
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Text via Komponente in Editor einfügen

Beitrag von fliegermichl »

In Delphi gibt es eine Editorfunktion "Datei als Block einlesen". Diese kann man mit Ctrl-K + R aktivieren.
In Lazarus konnte ich so eine Funktion nicht finden. Schade eigentlich.


Benutzeravatar
theo
Beiträge: 11291
Registriert: Mo 11. Sep 2006, 19:01

Re: Text via Komponente in Editor einfügen

Beitrag von theo »

fliegermichl hat geschrieben: Di 21. Apr 2026, 09:51 In Delphi gibt es eine Editorfunktion "Datei als Block einlesen". Diese kann man mit Ctrl-K + R aktivieren.
Und was tut die?
Das Gleiche wie "Quelltext" -> "Insert File Contents at Cursor.." ?

Mathias
Beiträge: 7273
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text via Komponente in Editor einfügen

Beitrag von Mathias »

theo hat geschrieben: Di 21. Apr 2026, 10:25 https://wiki.freepascal.org/Extending_t ... rce_Editor
Danke dies hatte ich gesucht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1764
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Text via Komponente in Editor einfügen

Beitrag von fliegermichl »

theo hat geschrieben: Di 21. Apr 2026, 13:56
fliegermichl hat geschrieben: Di 21. Apr 2026, 09:51 In Delphi gibt es eine Editorfunktion "Datei als Block einlesen". Diese kann man mit Ctrl-K + R aktivieren.
Und was tut die?
Das Gleiche wie "Quelltext" -> "Insert File Contents at Cursor.." ?
Ja genau. Ich hatte es bei den Tastaturbefehlen nicht gefunden.
Gibt es auch das Gegenstück in Lazarus? Schreibe den markierten Block in eine externe Datei?

Benutzeravatar
theo
Beiträge: 11291
Registriert: Mo 11. Sep 2006, 19:01

Re: Text via Komponente in Editor einfügen

Beitrag von theo »

fliegermichl hat geschrieben: Di 21. Apr 2026, 14:12 Gibt es auch das Gegenstück in Lazarus? Schreibe den markierten Block in eine externe Datei?
Wäre mir nicht bekannt.
Das könnte deshalb so sein, weil noch niemand dieses Feature vermisst hat... :lol:

Mathias
Beiträge: 7273
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text via Komponente in Editor einfügen

Beitrag von Mathias »

Gibt es auch das Gegenstück in Lazarus? Schreibe den markierten Block in eine externe Datei?
Es gib doch die beiden Funktion Add und Explode With Block, also kommt man an den markierten Text ran.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 7273
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text via Komponente in Editor einfügen

Beitrag von Mathias »

Ich veröffentliche hier mein kleines Plugin, welche man sehr einfach auf eigene Bedürfnisse anpassen kann.

Über das Menu Werkzeuge öffnet sich ein kleiner Dialog mit Buttons.
Wen man einen Button drückt, wird ein Text direkt an der Cursor Position im Editor eingefügt.
Dateianhänge
2026-04-22_17-37.png
2026-04-22_17-37.png (10 KiB) 873 mal betrachtet
Macro_Plugin.tar.gz
(1.61 KiB) 21-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 11291
Registriert: Mo 11. Sep 2006, 19:01

Re: Text via Komponente in Editor einfügen

Beitrag von theo »

Hat das einen Vorteil gegenüber CTRL+J ?

Mathias
Beiträge: 7273
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Text via Komponente in Editor einfügen

Beitrag von Mathias »

theo hat geschrieben: Mi 22. Apr 2026, 17:53 Hat das einen Vorteil gegenüber CTRL+J ?
Ja weil es ein direkten Weg dafür ist:

Code: Alles auswählen

  CreateButton(1, 1, '{$IFDEF read_enum}');
  CreateButton(2, 1, '{$ENDIF read_enum}');
  CreateButton(4, 1, '{$DEFINE read_enum}');
  CreateButton(5, 1, '{$UNDEF read_enum}');

  CreateButton(1, 2, '{$IFDEF read_struct}');
  CreateButton(2, 2, '{$ENDIF read_struct}');
  CreateButton(4, 2, '{$DEFINE read_struct}');
  CreateButton(5, 2, '{$UNDEF read_struct}');

  CreateButton(1, 3, '{$IFDEF read_function}');
  CreateButton(2, 3, '{$ENDIF read_function}');
  CreateButton(4, 3, '{$DEFINE read_function}');
  CreateButton(5, 3, '{$UNDEF read_function}');

  CreateButton(1, 4, '{$IFDEF read_implementation}');
  CreateButton(2, 4, '{$ENDIF read_implementation}');
  CreateButton(4, 4, '{$DEFINE read_implementation}');
  CreateButton(5, 4, '{$UNDEF read_implementation}');       
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten