Commit 01e2f5b7 authored by Jucelino Fonseca's avatar Jucelino Fonseca

ajustes

parent 90c1a185
...@@ -11751,11 +11751,6 @@ object ExplorerV2: TExplorerV2 ...@@ -11751,11 +11751,6 @@ object ExplorerV2: TExplorerV2
ParentColor = False ParentColor = False
ParentFont = False ParentFont = False
TabOrder = 0 TabOrder = 0
OnQuadClick = SynEditOQLQuadClick
OnDragDrop = memOQLQuery2DragDrop
OnDragOver = memOQLQuery2DragOver
OnKeyPress = SynEditOQLKeyPress
OnClickLink = SynEditOQLClickLink
BorderStyle = bsNone BorderStyle = bsNone
Gutter.Width = 42 Gutter.Width = 42
Gutter.MouseActions = <> Gutter.MouseActions = <>
...@@ -12213,8 +12208,8 @@ object ExplorerV2: TExplorerV2 ...@@ -12213,8 +12208,8 @@ object ExplorerV2: TExplorerV2
MouseLinkColor.Foreground = clBlue MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone LineHighlightColor.Foreground = clNone
OnChange = SynEditOQLChange
OnCommandProcessed = SynEditOQLCommandProcessed OnCommandProcessed = SynEditOQLCommandProcessed
OnProcessCommand = SynEditOQLProcessCommand
OnProcessUserCommand = SynEditOQLProcessUserCommand OnProcessUserCommand = SynEditOQLProcessUserCommand
inline SynLeftGutterPartList1: TSynGutterPartList inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks object SynGutterMarks1: TSynGutterMarks
...@@ -13973,22 +13968,6 @@ object ExplorerV2: TExplorerV2 ...@@ -13973,22 +13968,6 @@ object ExplorerV2: TExplorerV2
Left = 1400 Left = 1400
Top = 10 Top = 10
end end
object scpAtributoCompletion: TSynCompletion
OnExecute = scpAtributoCompletionExecute
Position = 0
LinesInWindow = 6
SelectedColor = clHighlight
CaseSensitive = False
Width = 262
AutoUseSingleIdent = True
ShortCut = 16416
EndOfTokenChr = '()[].'
ExecCommandID = ecSynCompletionExecute
Editor = SynEditOQL
ToggleReplaceWhole = False
Left = 744
Top = 208
end
object ilModel: TImageList object ilModel: TImageList
Left = 140 Left = 140
Top = 210 Top = 210
...@@ -14284,8 +14263,7 @@ object ExplorerV2: TExplorerV2 ...@@ -14284,8 +14263,7 @@ object ExplorerV2: TExplorerV2
0000000000000000000000000000 0000000000000000000000000000
} }
end end
object scpClasseCompletion: TSynCompletion object scpListCompletion: TSynCompletion
OnExecute = scpAtributoCompletionExecute
Position = 0 Position = 0
LinesInWindow = 6 LinesInWindow = 6
SelectedColor = clHighlight SelectedColor = clHighlight
...@@ -14294,7 +14272,6 @@ object ExplorerV2: TExplorerV2 ...@@ -14294,7 +14272,6 @@ object ExplorerV2: TExplorerV2
AutoUseSingleIdent = True AutoUseSingleIdent = True
ShortCut = 16416 ShortCut = 16416
EndOfTokenChr = '()[].' EndOfTokenChr = '()[].'
OnCodeCompletion = scpClasseCompletionCodeCompletion
ExecCommandID = ecSynCompletionExecute ExecCommandID = ecSynCompletionExecute
Editor = SynEditOQL Editor = SynEditOQL
ToggleReplaceWhole = False ToggleReplaceWhole = False
......
...@@ -9,6 +9,10 @@ uses ...@@ -9,6 +9,10 @@ uses
acuObjectExplorer, Menus, Buttons, SynEdit, SynHighlighterSQL, SynCompletion, acuObjectExplorer, Menus, Buttons, SynEdit, SynHighlighterSQL, SynCompletion,
acuModel, acuRepositorySQL, SynEditKeyCmds, SynHighlighterPython, Types; acuModel, acuRepositorySQL, SynEditKeyCmds, SynHighlighterPython, Types;
const
__WHERE = 'WHERE';
__SELECT = 'SELECT';
__FROM = 'FROM';
type type
TDLLDialog = class(TForm) TDLLDialog = class(TForm)
...@@ -41,8 +45,7 @@ type ...@@ -41,8 +45,7 @@ type
sbStatusBar: TStatusBar; sbStatusBar: TStatusBar;
spResultXML: TSplitter; spResultXML: TSplitter;
spResultObject: TSplitter; spResultObject: TSplitter;
scpAtributoCompletion: TSynCompletion; scpListCompletion: TSynCompletion;
scpClasseCompletion: TSynCompletion;
SynEditOQL: TSynEdit; SynEditOQL: TSynEdit;
SynEditSQL: TSynEdit; SynEditSQL: TSynEdit;
SynSQLSyn1: TSynSQLSyn; SynSQLSyn1: TSynSQLSyn;
...@@ -91,13 +94,14 @@ type ...@@ -91,13 +94,14 @@ type
procedure scpClasseCompletionCodeCompletion(var Value: string; procedure scpClasseCompletionCodeCompletion(var Value: string;
SourceValue: string; var SourceStart, SourceEnd: TPoint; SourceValue: string; var SourceStart, SourceEnd: TPoint;
KeyChar: TUTF8Char; Shift: TShiftState); KeyChar: TUTF8Char; Shift: TShiftState);
procedure scpClasseCompletionExecute(Sender: TObject);
procedure SynEditOQLChange(Sender: TObject); procedure SynEditOQLChange(Sender: TObject);
procedure SynEditOQLClickLink(Sender: TObject; Button: TMouseButton; procedure SynEditOQLClickLink(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure SynEditOQLCommandProcessed(Sender: TObject; procedure SynEditOQLCommandProcessed(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
procedure SynEditOQLKeyPress(Sender: TObject; var Key: char); procedure SynEditOQLKeyPress(Sender: TObject; var Key: char);
procedure SynEditOQLProcessCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
procedure SynEditOQLProcessUserCommand(Sender: TObject; procedure SynEditOQLProcessUserCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
procedure SynEditOQLQuadClick(Sender: TObject); procedure SynEditOQLQuadClick(Sender: TObject);
...@@ -139,13 +143,9 @@ type ...@@ -139,13 +143,9 @@ type
function BuscaParcialClasse(piCLasse: string; piFiltrar: boolean): boolean; function BuscaParcialClasse(piCLasse: string; piFiltrar: boolean): boolean;
function BuscarParcialChildClass(piClassTicket : acClassTicket; piFiltrar: boolean): boolean; function BuscarParcialChildClass(piClassTicket : acClassTicket; piFiltrar: boolean): boolean;
function FindParcialNodeClass(piClassTicketPai : acClassTicket; piFiltrar: boolean):acClassTicket; function FindParcialNodeClass(piClassTicketPai : acClassTicket; piFiltrar: boolean):acClassTicket;
function GetClassTicketRelation(piSynCompletion: TSynCompletion):acClassTicket;
procedure PreencherSynCompletionRelacionamentos(piClassTicket : acClassTicket;piSynCompletion : TSynCompletion);
procedure PreencherSynCompletionClasses(piSynCompletion : TSynCompletion);
procedure PreencherSynCompletionAtributos(piSynCompletion : TSynCompletion;piClassTicket : acClassTicket);
procedure ExecutarSybCompletion(piSynCompletion : TSynCompletion); procedure ExecutarSybCompletion(piSynCompletion : TSynCompletion);
procedure PreencherAposDigitarPonto(piSynCompletion : TSynCompletion;piClassTicketPai : acClassTicket = nil); procedure LoadListCompletion(piLinha:string;piAceitaAtributo : boolean;piLista : TStrings);
procedure AlimentarListaCompletion(piLinha:string;piAceitaAtributo : boolean;piLista : TStrings); procedure PreparaSynCompletion;
protected protected
procedure CreateParams(var Params : TCreateParams); override; procedure CreateParams(var Params : TCreateParams); override;
function Connect : acPersistenceSession; function Connect : acPersistenceSession;
...@@ -462,14 +462,9 @@ procedure TExplorerV2.scpClasseCompletionCodeCompletion(var Value: string; ...@@ -462,14 +462,9 @@ procedure TExplorerV2.scpClasseCompletionCodeCompletion(var Value: string;
SourceValue: string; var SourceStart, SourceEnd: TPoint; KeyChar: TUTF8Char; SourceValue: string; var SourceStart, SourceEnd: TPoint; KeyChar: TUTF8Char;
Shift: TShiftState); Shift: TShiftState);
begin begin
end; end;
procedure TExplorerV2.scpClasseCompletionExecute(Sender: TObject);
begin
end;
procedure TExplorerV2.SynEditOQLChange(Sender: TObject); procedure TExplorerV2.SynEditOQLChange(Sender: TObject);
begin begin
...@@ -485,12 +480,11 @@ end; ...@@ -485,12 +480,11 @@ end;
procedure TExplorerV2.SynEditOQLCommandProcessed(Sender: TObject; procedure TExplorerV2.SynEditOQLCommandProcessed(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
begin begin
if Achar = '.' then if AChar = '.' then
begin begin
PreencherAposDigitarPonto(scpAtributoCompletion); PreparaSynCompletion;
ExecutarSybCompletion(scpAtributoCompletion); ExecutarSybCompletion(scpListCompletion);
end; end;
end; end;
procedure TExplorerV2.SynEditOQLKeyPress(Sender: TObject; var Key: char); procedure TExplorerV2.SynEditOQLKeyPress(Sender: TObject; var Key: char);
...@@ -498,51 +492,17 @@ begin ...@@ -498,51 +492,17 @@ begin
end; end;
procedure TExplorerV2.SynEditOQLProcessUserCommand(Sender: TObject; procedure TExplorerV2.SynEditOQLProcessCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
var lClassTicket : acClassTicket;
ls_NameClass : string;
lbMostrarClasse : boolean;
ls_Aux : string;
li_Pos : integer;
p1,zeroPoint : TPoint;
begin begin
{ p1 := SynEdit1.NextTokenPos ;//logical = byte position end;
zeroPoint := SynEdit1.PrevWordPos;
//ShowMessage(SynEdit1.TextBetweenPoints[zeroPoint ,p1]);
if Assigned(p1) then
ShowMessage(SynEdit1.TextBetweenPoints[zeroPoint,p1]); }
lbMostrarClasse := true;
ls_NameClass := trim(SynEditOQL.GetWordAtRowCol(SynEditOQL.PrevWordPos));
if ls_NameClass <> '' then
begin
lClassTicket := self.MetaModel.GetClassTicketByName(ls_NameClass);
if Assigned(lClassTicket) then
begin
p1 := SynEditOQL.NextTokenPos ;//logical = byte position
zeroPoint := SynEditOQL.PrevWordPos;
ls_Aux := SynEditOQL.TextBetweenPoints[zeroPoint,p1];
li_Pos := Pos('.',ls_Aux);
if li_Pos > 0 then
begin
PreencherAposDigitarPonto(scpAtributoCompletion,lClassTicket);
lbMostrarClasse := false;
end;
end;
end;
if lbMostrarClasse then
begin
if not Assigned(scpClasseCompletion.Editor) then
begin
scpAtributoCompletion.Editor := nil;
scpClasseCompletion.Editor := SynEditOQL;
ExecutarSybCompletion(scpClasseCompletion);
end;
end;
procedure TExplorerV2.SynEditOQLProcessUserCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
begin
PreparaSynCompletion;
// ExecutarSybCompletion(scpListCompletion);
end; end;
...@@ -758,154 +718,18 @@ begin ...@@ -758,154 +718,18 @@ begin
end; end;
function TExplorerV2.GetClassTicketRelation(piSynCompletion: TSynCompletion): acClassTicket;
var p1,zeroPoint: TPoint;
ls_aux : string;
lPropertyName: string;
begin
//http://wiki.lazarus.freepascal.org/SynEdit#Logical.2FPhysical_caret_position
{p1 := SynEdit1.CaretXY ;
ls_aux := SynEdit1.LineText;
li_Pos := Pos('ng',ls_aux);
zeroPoint.X := li_pos;
zeroPoint.y := SynEdit1.CaretY;
ls_aux := trim(SynEdit1.TextBetweenPoints[zeroPoint,p1]);
lPropertyName := trim(SynEditOQL.GetWordAtRowCol(SynEditOQL.PrevWordPos)); }
result := GetClassTicket(ls_aux,lPropertyName);
end;
procedure TExplorerV2.PreencherSynCompletionRelacionamentos(piClassTicket : acClassTicket;
piSynCompletion: TSynCompletion);
var li : integer;
lRelationTicket : acRelationTicket;
ls_NameRelacionamento : string;
lClassTicketRelation : acClassTicket;
begin
piSynCompletion.ItemList.Clear;
if not Assigned(piClassTicket) then
begin
lClassTicketRelation := GetClassTicketRelation(piSynCompletion);
exit;
end
else
begin
lClassTicketRelation := piClassTicket;
end;
for li := 0 to pred(lClassTicketRelation.RelationTicketsIn.Count) do
begin
lRelationTicket := acRelationTicket(lClassTicketRelation.RelationTicketsIn.Objects[li]);
piSynCompletion.ItemList.Add(lRelationTicket.DestinationPropertyName);
end;
for li := 0 to pred(lClassTicketRelation.RelationTicketsOut.Count) do
begin
lRelationTicket := acRelationTicket(lClassTicketRelation.RelationTicketsOut.Objects[li]);
piSynCompletion.ItemList.Add(lRelationTicket.OriginPropertyName);
end;
end;
procedure TExplorerV2.PreencherSynCompletionClasses(piSynCompletion : TSynCompletion);
var lEnumerator : acEnumerator;
lClassTicket : acClassTicket;
begin
lEnumerator := self.MetaModel.ClassTickets.GetEnumerator;
try
piSynCompletion.ItemList.Clear;
while not lEnumerator.EOL do
begin
lClassTicket := acClassTicket(lEnumerator.Current);
piSynCompletion.ItemList.Add(lClassTicket.PersistentObjectClassName);
lEnumerator.MoveNext;
end;
finally
lEnumerator.Free;
end;
end;
procedure TExplorerV2.PreencherSynCompletionAtributos(piSynCompletion: TSynCompletion;piClassTicket : acClassTicket);
var li : integer;
lAttributeTicket : acAttributeTicket;
begin
if Assigned(piClassTicket) then
begin
piSynCompletion.ItemList.Clear;
for li := 0 to pred(piClassTicket.Attributes.Count) do
begin
lAttributeTicket := acAttributeTicket(piClassTicket.Attributes.Objects[li]);
if lAttributeTicket.Stereotype = acAttributeStereotype.pvPersistent then
begin
piSynCompletion.ItemList.Add(lAttributeTicket.AttributeName);
end;
end;
end;
end;
procedure TExplorerV2.ExecutarSybCompletion(piSynCompletion: TSynCompletion); procedure TExplorerV2.ExecutarSybCompletion(piSynCompletion: TSynCompletion);
var apoint,temppoint:tpoint; var apoint,temppoint:tpoint;
begin begin
//will compare the schema_tablename to a list of available schema names for the current database. //will compare the schema_tablename to a list of available schema names for the current database.
temppoint := SynEditOQL.CaretXY; temppoint := SynEditOQL.CaretXY;
temppoint.y := temppoint.y+1; temppoint.y := temppoint.y+1;
apoint := SynEditOQL.ClientToScreen(SynEditOQL.RowColumnToPixels(temppoint)); apoint := SynEditOQL.ClientToScreen(SynEditOQL.RowColumnToPixels(temppoint));
piSynCompletion.Execute('',apoint); piSynCompletion.Execute('',apoint);
end;
procedure TExplorerV2.PreencherAposDigitarPonto(piSynCompletion : TSynCompletion;piClassTicketPai : acClassTicket = nil);
var li,li_Pos : integer;
lAttributeTicket : acAttributeTicket;
lClassTicket : acClassTicket;
ls_Aux,
ls_NameClass : string;
p1,zeroPoint : TPoint;
begin
piSynCompletion.ItemList.Clear;
p1 := SynEditOQL.NextTokenPos ;//logical = byte position
zeroPoint := SynEditOQL.PrevWordPos;
ls_Aux := SynEditOQL.TextBetweenPoints[zeroPoint,p1];
li_Pos := Pos('..',ls_Aux);
if li_Pos > 0 then
begin
exit;
end;
if not Assigned(piClassTicketPai) then
begin
ls_NameClass := trim(SynEditOQL.GetWordAtRowCol(SynEditOQL.PrevWordPos));
if ls_NameClass <> '' then
begin
lClassTicket := self.MetaModel.GetClassTicketByName(ls_NameClass);
end;
end
else
begin
lClassTicket := piClassTicketPai;
end;
ls_Aux := LowerCase(SynEditOQL.LineText);
li_Pos := Pos('from',ls_Aux);
if li_Pos > 0 then
begin
PreencherSynCompletionRelacionamentos(lClassTicket,piSynCompletion)
end
else
begin
PreencherSynCompletionAtributos(piSynCompletion,lClassTicket);
end;
if not Assigned(piSynCompletion.Editor) then
begin
piSynCompletion.Editor := SynEditOQL;
scpClasseCompletion.Editor := nil;
end;
end; end;
procedure TExplorerV2.AlimentarListaCompletion(piLinha: string; piAceitaAtributo: boolean; piLista: TStrings); procedure TExplorerV2.LoadListCompletion(piLinha: string; piAceitaAtributo: boolean; piLista: TStrings);
var lClassTicketCurrent, var lClassTicketCurrent,
lClassTicketAux: acClassTicket; lClassTicketAux: acClassTicket;
...@@ -918,13 +742,17 @@ var lClassTicketCurrent, ...@@ -918,13 +742,17 @@ var lClassTicketCurrent,
lbAchei : boolean; lbAchei : boolean;
lAttributeTicket : acAttributeTicket; lAttributeTicket : acAttributeTicket;
begin begin
li_Pos := Pos ('.',piLinha);
piLista.Clear; piLista.Clear;
if li_Pos <= 0 then li_Pos := Pos ('..',piLinha);
if li_Pos > 0 then
begin
exit;
end;
li_Pos := Pos ('.',piLinha);
if li_Pos <= 0 then
begin begin
lEnumerator := self.MetaModel.ClassTickets.GetEnumerator; lEnumerator := self.MetaModel.ClassTickets.GetEnumerator;
try try
piLista.Clear;
while not lEnumerator.EOL do while not lEnumerator.EOL do
begin begin
lClassTicketCurrent := acClassTicket(lEnumerator.Current); lClassTicketCurrent := acClassTicket(lEnumerator.Current);
...@@ -966,20 +794,19 @@ begin ...@@ -966,20 +794,19 @@ begin
begin begin
for li := 0 to pred(lClassTicketCurrent.RelationTicketsOut.Count) do for li := 0 to pred(lClassTicketCurrent.RelationTicketsOut.Count) do
begin begin
if SameText(lRelationTicket.DestinationPropertyName, ls_Objeto) then lRelationTicket := acRelationTicket(lClassTicketCurrent.RelationTicketsOut.Objects[li]);
if SameText(lRelationTicket.OriginPropertyName, ls_Objeto) then
begin begin
lClassTicketAux := lRelationTicket.OriginClassTicket; lClassTicketAux := lRelationTicket.DestinationClassTicket;
break; break;
end; end;
end; end;
end; end;
lClassTicketCurrent := lClassTicketAux;
end; end;
end; end;
if Assigned(lClassTicketAux) then
begin
lClassTicketCurrent := lClassTicketAux;
end;
if Assigned(lClassTicketCurrent) then if Assigned(lClassTicketCurrent) then
begin begin
if piAceitaAtributo then if piAceitaAtributo then
...@@ -996,19 +823,68 @@ begin ...@@ -996,19 +823,68 @@ begin
for li := 0 to pred(lClassTicketCurrent.RelationTicketsIn.Count) do for li := 0 to pred(lClassTicketCurrent.RelationTicketsIn.Count) do
begin begin
lRelationTicket := acRelationTicket(lClassTicketCurrent.RelationTicketsIn.Objects[li]); lRelationTicket := acRelationTicket(lClassTicketCurrent.RelationTicketsIn.Objects[li]);
piLista.Add(lRelationTicket.DestinationPropertyName); if trim(lRelationTicket.DestinationPropertyName) <> '' then
piLista.Add(lRelationTicket.DestinationPropertyName);
end; end;
for li := 0 to pred(lClassTicketCurrent.RelationTicketsOut.Count) do for li := 0 to pred(lClassTicketCurrent.RelationTicketsOut.Count) do
begin begin
lRelationTicket := acRelationTicket(lClassTicketCurrent.RelationTicketsOut.Objects[li]); lRelationTicket := acRelationTicket(lClassTicketCurrent.RelationTicketsOut.Objects[li]);
piLista.Add(lRelationTicket.OriginPropertyName); if trim(lRelationTicket.OriginPropertyName) <> '' then
piLista.Add(lRelationTicket.OriginPropertyName);
end; end;
end; end;
end; end;
end; end;
procedure TExplorerV2.PreparaSynCompletion;
var lAceitaAtributo : boolean;
ls_espaco,
ls_Aux : string;
li_Pos : integer;
p1,zeroPoint : TPoint;
begin
scpListCompletion.ItemList.Clear;
p1 := SynEditOQL.CaretXY ;
zeroPoint.X := 0;
zeroPoint.y := SynEditOQL.CaretY;
ls_aux := trim(SynEditOQL.TextBetweenPoints[zeroPoint,p1]);
ls_espaco := ' ';
lAceitaAtributo := true;
li_Pos := Pos(__FROM,uppercase(ls_aux));
if li_Pos > 0 then
begin
ls_aux:=trim(Copy(ls_aux,li_Pos + Length(__FROM),Length(ls_aux)));
lAceitaAtributo:= false;
end;
li_Pos := Pos(__SELECT,uppercase(ls_aux));
if li_Pos > 0 then
begin
ls_aux:=trim(Copy(ls_aux,li_Pos + Length(__SELECT),Length(ls_aux)));
lAceitaAtributo:= false;;
end;
li_Pos := Pos(__WHERE,uppercase(ls_aux));
if li_Pos > 0 then
begin
ls_aux:=trim(Copy(ls_aux,li_Pos + Length(__WHERE),Length(ls_aux)));
lAceitaAtributo:= true;;
end;
li_Pos := Pos(ls_espaco,trim(ls_aux));
while li_Pos > 0 do
begin
ls_aux:=trim(Copy(ls_aux,li_Pos + 1,Length(ls_aux)));
li_Pos := Pos(ls_espaco,ls_aux);
end;
LoadListCompletion(ls_aux,lAceitaAtributo,scpListCompletion.ItemList);
end;
procedure TExplorerV2.CreateParams(var Params: TCreateParams); procedure TExplorerV2.CreateParams(var Params: TCreateParams);
begin begin
inherited CreateParams(Params); inherited CreateParams(Params);
...@@ -1032,8 +908,8 @@ begin ...@@ -1032,8 +908,8 @@ begin
fUtil.AlimentarMetamodel(lMetaModelGenOpt, nil); fUtil.AlimentarMetamodel(lMetaModelGenOpt, nil);
FMetaModelPersistenceMap := fUtil.MetaModelPersistenceMap; FMetaModelPersistenceMap := fUtil.MetaModelPersistenceMap;
MetaModel := fUtil.MetaModel; MetaModel := fUtil.MetaModel;
PreencherSynCompletionClasses(scpClasseCompletion); // PreencherSynCompletionClasses(scpListCompletion);
scpAtributoCompletion.Editor := nil;
end; 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