Benutzung von TSynAutoComplete?

Rund um die LCL und andere Komponenten
Antworten
Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Benutzung von TSynAutoComplete?

Beitrag von Teekeks »

Hallo!
Ich baue mir gerade für meine Script-Sprache (hier wurde nur die erste Version davon vorgestellt, eine deutlich umfangreichere Version kommt aber noch) eine IDE und würde jetzt gerne eine Auto-Vervollständigung mit einbauen.
Das geht mit TSynAutoComplete und so irgendwie habe ich das auch hin bekommen.
Ich hätte das aber gerne so wie in Lazarus von der Schönheit her, aber ich komme mit dieser Komponente überhaupt nicht klar.

Im Netz gibt es keine Anleitung dafür wie man das Teil benutzt und im Lazarus-Code finde ich die richtige stelle trotz heftigen Suchens nicht.

Kann mir da irgendeiner weiterhelfen?
Eine kurze Anleitung/Ein Link oder auch nur die richtige stelle im Lazarus-Code?
Es muss doch schon irgend wer was damit gemacht haben.

Gruß Teekeks

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Benutzung von TSynAutoComplete?

Beitrag von knight »

Hast du schon mal mit der rechten Maustaste auf die Komponente (in der Komponentenpalette) geklickt?

knight

martin_frb
Beiträge: 588
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Benutzung von TSynAutoComplete?

Beitrag von martin_frb »

Sicher, irgendwer, irgendwann hat damit schon mal was gemacht....
Ne fertige Anleitung ist mir leider auch nicht bekannt.

Lazarus benutzt das zwar, hat aber ne menge Extras implementiert => wie z.b custom-draw, deshalb sind die Einträge farbig.

Den Code in SynEdit findest du über die rechte Maus (Post von knight)

Den Lazarus extra Code in IDE/SourceEditor.pp (SVN Version), Zeile 109:
TSourceEditCompletion=class(TSynCompletion)

Achso, SourceEditor ist GPL, nicht LGPL.
Außerdem: In Lazarus wird ctrl-space von der IDE (auch in SourceEditor.pp) gehandelt. TSynAutoComplete wird also von außen gestartet (ansonsten kann das glaube ich auch selbst auf eine eingestellte Taste warten, um sich selbst zu starte (glaube ich)).
Wenn dann einmal gestartet, handelt es Tasten allerdings immer selbst.

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Benutzung von TSynAutoComplete?

Beitrag von Teekeks »

Aha!
Durch herum Experimentieren habe ich folgendes herausgefunden.

Folgender Text:

Code: Alles auswählen

TForm1 = class(TForm)
    SynEdit1: TSynEdit;
    procedure FormCreate(Sender: TObject);
  private
    a:TSynAutoComplete;
 
  end; 
 
{...}
procedure TForm1.FormCreate(Sender: TObject);
begin
  a:=TSynAutoComplete.Create(self);
  a.AddEditor(SynEdit1);
  a.AutoCompleteList.Text:='b'+
    #10'=['+
    #10'=|'+
    #10'=]';
end;
bewirkt das wenn man [Shift]+[Leertaste] drückt und vorher ein 'b' in SynEdit1 eingetippt hat, wird dieses b durch folgendes ersetzt:
[
|
]
wobei | für die Caret-Position steht.

Das ist zwar nicht das was ich gedacht hatte (ich dachte das wäre so ein Fenster, welches hochkommt wenn man bei Lazarus z.B. "Synedit1." eintippt).
Das was ich ursprünglich suchte ist die Komponente "TSynCompletion" (die deutlich einfachere zu bedienen ist :) )

Viele grüße,
Teekeks

Antworten