Commit 1ad2e8ca authored by Jucelino Fonseca's avatar Jucelino Fonseca

Ajustes e testes no SynFacilCompletion

parent 224b6f5f
......@@ -109,6 +109,8 @@ type
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
fAlias,
fKeywords : TStrings;
fExecuting: Boolean;
fMetaModel: acMetaModel;
fMetaModelPersistenceMap: acMetaModelPersistenceMapSQL;
......@@ -143,8 +145,11 @@ type
function FindParcialNodeClass(piClassTicketPai : acClassTicket; piFiltrar: boolean):acClassTicket;
//procedure ExecutarSybCompletion(piSynCompletion : TSynCompletion);
procedure LoadListCompletion(piLinha:string;piAceitaAtributo : boolean;piLista : TStrings);
procedure LoadAliasCompletion(piLinha:string);
// procedure PreparaSynCompletion;
function RetirarPalavraChaveOLQ(piSynEdit :TSynEdit):string;
function RetirarPalavraChaveOLQ(piSynEdit :TSynEdit):string;
function IsKeyword(piItem : string): boolean;
protected
procedure CreateParams(var Params : TCreateParams); override;
function Connect : acPersistenceSession;
......@@ -451,11 +456,31 @@ begin
end;
procedure TExplorerV2.SynEditOQLKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var lmostrar : boolean;
begin
if not ( (Shift = [ssCtrl]) and (Key = 86) ) then
begin
fhlt1.KeyUp(Sender, Key, Shift);
end;
lmostrar := true;
// Ctrl + Espao
if ( (Shift = [ssCtrl]) and (Key = 86) )
then
begin
lmostrar := false;
end;
//Espao
if key = 32 then
begin
lmostrar := false;
end;
//backspace
if key = 8 then
begin
lmostrar := false;
end;
if lmostrar then
begin
fhlt1.KeyUp(Sender, Key, Shift);
end;
end;
......@@ -801,6 +826,29 @@ begin
end;
end;
procedure TExplorerV2.LoadAliasCompletion(piLinhas: string);
var ls_texto,
ls_espaco : string;
li_Pos : integer;
begin
ls_espaco := ' ';
li_Pos := Pos(__FROM,uppercase(piLinhas));
if li_Pos > 0 then
begin
ls_texto :=trim(Copy(result,li_Pos + Length(__FROM),Length(piLinhas)));
li_Pos := Pos(ls_espaco,trim(ls_texto));
while li_Pos > 0 do
begin
result :=trim(Copy(ls_texto,li_Pos + 1,Length(ls_texto)));
li_Pos := Pos(ls_espaco,result);
end;
end;
end;
{
procedure TExplorerV2.PreparaSynCompletion;
var lAceitaAtributo : boolean;
......@@ -888,6 +936,17 @@ begin
end;
function TExplorerV2.IsKeyword(piItem: string): boolean;
var li_index : integer;
begin
result := false;
li_index := fKeywords.IndexOf(piItem);
if li_index >= 0 then
begin
result := true;
end;
end;
procedure TExplorerV2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
......@@ -907,6 +966,7 @@ var lMetaModelGenOpt: TMetaModelGenerationOptions;
lSelectSec,
lFromSec,
lWhereSec: TFaSynBlock;
li : integer;
begin
lMetaModelGenOpt.CheckDBAttributeNameLength := true;
lMetaModelGenOpt.CheckDBTableNameLength := true;
......@@ -916,6 +976,16 @@ begin
FMetaModelPersistenceMap := fUtil.MetaModelPersistenceMap;
MetaModel := fUtil.MetaModel;
fKeywords := TStringList.Create;
fKeywords.Add(__SELECT);
fKeywords.Add(__FROM);
fKeywords.Add(__WHERE);
fKeywords.Add('ORDER');
fKeywords.Add('BY');
fKeywords.Add('JOIN');
fAlias := TStringList.Create;
fhlt1 := TSynFacilComplet.Create(self); //my highlighter
//Here the syntax is defined
// ...
......@@ -926,12 +996,11 @@ begin
fhlt1.SelectOnEnter:= true;
fhlt1.DefTokIdentif('[$A-Za-z_]', '[A-Za-z0-9_]*');
fhlt1.KeywordAttribute.Foreground:=clBlue;
fhlt1.AddKeyword('SELECT');
fhlt1.AddKeyword('FROM');
fhlt1.AddKeyword('WHERE');
fhlt1.AddKeyword('ORDER');
fhlt1.AddKeyword('BY');
fhlt1.AddKeyword('JOIN');
for li := 0 to fKeywords.Count - 1 do
begin
fhlt1.AddKeyword(fKeywords.Strings[li]);
end;
lSelectSec := fhlt1.AddSection(__SELECT);
lFromSec := fhlt1.AddSection(__FROM);
......@@ -988,41 +1057,50 @@ end;
procedure TExplorerV2.FormDestroy(Sender: TObject);
begin
fUtil.Free;
fhlt1.UnSelectEditor;
fhlt1.Free;
fKeywords.Free;
fAlias.Free;
end;
procedure TExplorerV2.opEveLoadItems(opEve: TFaOpenEvent;
curEnv: TFaCursorEnviron; out Cancel: boolean);
var lLista : TStrings;
ls_Texto,
lLinha : string;
lAceitaAtributo : boolean;
li : integer;
begin
opEve.ClearAvails;
lAceitaAtributo := false;
if opEve = fopEvenWhereAposPonto then
ls_Texto := SynEditOQL.GetWordAtRowCol(SynEditOQL.CaretXY);
if not IsKeyword(ls_Texto) then
begin
lAceitaAtributo := true;
end
else if opEve = fopEvenSelectAposPonto then
begin
if XMLQuery.Checked then
begin
lAceitaAtributo := true;
end;
end;
if opEve = fopEvenWhereAposPonto then
begin
lAceitaAtributo := true;
end
else if opEve = fopEvenSelectAposPonto then
begin
if XMLQuery.Checked then
begin
lAceitaAtributo := true;
end;
end;
lLista := TStringList.Create;
try
lLinha := RetirarPalavraChaveOLQ(SynEditOQL);
LoadListCompletion(lLinha,lAceitaAtributo,lLista);
for li := 0 to lLista.Count - 1 do
begin
opEve.AddAvail(lLista.Strings[li]);
end
finally
lLista.Free;
lLista := TStringList.Create;
try
lLinha := RetirarPalavraChaveOLQ(SynEditOQL);
LoadListCompletion(lLinha,lAceitaAtributo,lLista);
for li := 0 to lLista.Count - 1 do
begin
opEve.AddAvail(lLista.Strings[li]);
end
finally
lLista.Free;
end;
end;
Cancel := true;
Cancel := true;
end;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment