Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
StarUML Evológica Plugin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
evologica
StarUML Evológica Plugin
Commits
30df7598
Commit
30df7598
authored
Nov 13, 2020
by
Jucelino Fonseca
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ajustes e Testes
parent
b385ee3f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
276 additions
and
138 deletions
+276
-138
ituExplorerV2.dfm
EvoUMLPlugin/src/ituExplorerV2.dfm
+1
-0
ituExplorerV2.pas
EvoUMLPlugin/src/ituExplorerV2.pas
+275
-138
No files found.
EvoUMLPlugin/src/ituExplorerV2.dfm
View file @
30df7598
...
@@ -12210,6 +12210,7 @@ object ExplorerV2: TExplorerV2
...
@@ -12210,6 +12210,7 @@ object ExplorerV2: TExplorerV2
MouseLinkColor.Foreground = clBlue
MouseLinkColor.Foreground = clBlue
LineHighlightColor.Background = clNone
LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone
LineHighlightColor.Foreground = clNone
OnCommandProcessed = SynEditOQLCommandProcessed
inline SynLeftGutterPartList1: TSynGutterPartList
inline SynLeftGutterPartList1: TSynGutterPartList
object SynGutterMarks1: TSynGutterMarks
object SynGutterMarks1: TSynGutterMarks
Width = 30
Width = 30
...
...
EvoUMLPlugin/src/ituExplorerV2.pas
View file @
30df7598
...
@@ -11,6 +11,7 @@ uses
...
@@ -11,6 +11,7 @@ uses
const
const
__OID
=
'OID'
;
__WHERE
=
'WHERE'
;
__WHERE
=
'WHERE'
;
__SELECT
=
'SELECT'
;
__SELECT
=
'SELECT'
;
__FROM
=
'FROM'
;
__FROM
=
'FROM'
;
...
@@ -25,8 +26,9 @@ const
...
@@ -25,8 +26,9 @@ const
__PARENTESES_FECHADO
=
')'
;
__PARENTESES_FECHADO
=
')'
;
__EXISTS
=
'EXISTS'
;
__EXISTS
=
'EXISTS'
;
__IN
=
'IN'
;
__IN
=
'IN'
;
__ASTERICO
=
'*'
;
__PONTO
=
'.'
;
__PONTO
=
'.'
;
__ASTERICO
=
'*'
;
{
__E_COMERCIAL = '&';
__E_COMERCIAL = '&';
__PERCENTUAL = '%';
__PERCENTUAL = '%';
__IGUAL = '=';
__IGUAL = '=';
...
@@ -35,8 +37,8 @@ const
...
@@ -35,8 +37,8 @@ const
__PONTENCIA = '^';
__PONTENCIA = '^';
__SINAL_MAIOR = '>';
__SINAL_MAIOR = '>';
__SINAL_MENOR = '<';
__SINAL_MENOR = '<';
__SINAL_MENOS
=
'-'
;
__SINAL_MENOS = '-';
}
__OID
=
'OID'
;
type
type
TDLLDialog
=
class
(
TForm
)
TDLLDialog
=
class
(
TForm
)
...
@@ -115,6 +117,8 @@ type
...
@@ -115,6 +117,8 @@ type
procedure
FormShow
(
Sender
:
TObject
);
procedure
FormShow
(
Sender
:
TObject
);
procedure
actResultsPanelExecute
(
Sender
:
TObject
);
procedure
actResultsPanelExecute
(
Sender
:
TObject
);
procedure
rbSequencialClick
(
Sender
:
TObject
);
procedure
rbSequencialClick
(
Sender
:
TObject
);
procedure
SynEditOQLCommandProcessed
(
Sender
:
TObject
;
var
Command
:
TSynEditorCommand
;
var
AChar
:
TUTF8Char
;
Data
:
pointer
);
procedure
SynEditOQLKeyUp
(
Sender
:
TObject
;
var
Key
:
Word
;
Shift
:
TShiftState
);
procedure
SynEditOQLKeyUp
(
Sender
:
TObject
;
var
Key
:
Word
;
Shift
:
TShiftState
);
procedure
SynEditOQLUTF8KeyPress
(
Sender
:
TObject
;
var
UTF8Key
:
TUTF8Char
);
procedure
SynEditOQLUTF8KeyPress
(
Sender
:
TObject
;
var
UTF8Key
:
TUTF8Char
);
procedure
tvModelExplorerGetSelectedIndex
(
Sender
:
TObject
;
Node
:
TTreeNode
);
procedure
tvModelExplorerGetSelectedIndex
(
Sender
:
TObject
;
Node
:
TTreeNode
);
...
@@ -180,10 +184,14 @@ type
...
@@ -180,10 +184,14 @@ type
function
GetClassTicketByNameRelation
(
piNameObjeto
:
string
;
out
piNameAntObjeto
:
string
)
:
acClassTicket
;
function
GetClassTicketByNameRelation
(
piNameObjeto
:
string
;
out
piNameAntObjeto
:
string
)
:
acClassTicket
;
function
GetClassTicketByNameANDAlias
(
piNameObjeto
:
string
)
:
acClassTicket
;
function
GetClassTicketByNameANDAlias
(
piNameObjeto
:
string
)
:
acClassTicket
;
//
//
function
GetTextoAfterWord
(
piSynEdit
:
TSynEdit
):
string
;
function
GetTextoBeforeWord
(
piSynEdit
:
TSynEdit
):
string
;
function
GetWordsBetweenPoint
(
piSynEdit
:
TSynEdit
):
string
;
function
GetTextBetweenLines
(
piSynEdit
:
TSynEdit
;
out
piWord
:
string
;
out
piCareWordXY
:
TPoint
):
string
;
function
RetirarPalavraChaveOLQ
(
piSynEdit
:
TSynEdit
;
opEve
:
TFaOpenEvent
):
string
;
function
RetirarPalavraChaveOLQ
(
piSynEdit
:
TSynEdit
;
opEve
:
TFaOpenEvent
):
string
;
function
IsKeyword
(
piItem
:
string
):
boolean
;
function
IsKeyword
(
piItem
:
string
):
boolean
;
function
GetTextBetweenWord
(
piSynEdit
:
TSynEdit
;
piWordPos
:
TPoint
;
piWord
:
string
)
:
string
;
function
GetTextBetweenWord
(
piSynEdit
:
TSynEdit
;
piWordPos
:
TPoint
;
piWord
:
string
)
:
string
;
function
IsExepressaoValida
(
piOpEve
:
TFaOpenEvent
;
piTexto
:
string
;
piTemPalavraAntes
:
Boolean
=
false
):
boolean
;
protected
protected
procedure
CreateParams
(
var
Params
:
TCreateParams
);
override
;
procedure
CreateParams
(
var
Params
:
TCreateParams
);
override
;
function
Connect
:
acPersistenceSession
;
function
Connect
:
acPersistenceSession
;
...
@@ -489,12 +497,18 @@ procedure TExplorerV2.rbSequencialClick(Sender: TObject);
...
@@ -489,12 +497,18 @@ procedure TExplorerV2.rbSequencialClick(Sender: TObject);
begin
begin
end
;
end
;
procedure
TExplorerV2
.
SynEditOQLCommandProcessed
(
Sender
:
TObject
;
var
Command
:
TSynEditorCommand
;
var
AChar
:
TUTF8Char
;
Data
:
pointer
);
begin
fhlt1
.
CloseCompletionWindow
;
end
;
procedure
TExplorerV2
.
SynEditOQLKeyUp
(
Sender
:
TObject
;
var
Key
:
Word
;
procedure
TExplorerV2
.
SynEditOQLKeyUp
(
Sender
:
TObject
;
var
Key
:
Word
;
Shift
:
TShiftState
);
Shift
:
TShiftState
);
var
lmostrar
:
boolean
;
var
lmostrar
:
boolean
;
begin
begin
lmostrar
:=
true
;
lmostrar
:=
true
;
// Ctrl + Espao
// Ctrl + Espao
if
(
(
Shift
=
[
ssCtrl
])
and
(
Key
=
86
)
)
if
(
(
Shift
=
[
ssCtrl
])
and
(
Key
=
86
)
)
then
then
...
@@ -1183,6 +1197,155 @@ begin
...
@@ -1183,6 +1197,155 @@ begin
end
;
end
;
end
;
end
;
function
TExplorerV2
.
GetTextoAfterWord
(
piSynEdit
:
TSynEdit
):
string
;
var
lWord
:
string
;
p1
,
p2
,
PointAtual
:
TPoint
;
begin
p1
:=
piSynEdit
.
PrevWordPos
;
lWord
:=
piSynEdit
.
GetWordAtRowCol
(
p1
);
p1
.
X
:=
p1
.
X
+
Length
(
lWord
);
PointAtual
:=
piSynEdit
.
CaretXY
;
P2
:=
PointAtual
;
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
if
(
trim
(
result
)
=
''
)
and
(
p1
.
Y
<>
p2
.
Y
)
then
begin
p1
.
X
:=
0
;
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
while
(
trim
(
result
)
=
''
)
and
(
p1
.
Y
>
0
)
do
begin
p2
.
Y
:=
p1
.
Y
;
p1
.
Y
:=
p1
.
Y
-
1
;
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
end
;
if
trim
(
result
)
<>
''
then
begin
piSynEdit
.
CaretX
:=
Length
(
result
);
piSynEdit
.
CaretY
:=
p1
.
Y
;
p1
:=
piSynEdit
.
PrevWordPos
;
lWord
:=
piSynEdit
.
GetWordAtRowCol
(
p1
);
p1
.
X
:=
p1
.
X
+
Length
(
lWord
);
p2
:=
piSynEdit
.
CaretXY
;
p2
.
X
:=
Length
(
result
);
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
piSynEdit
.
CaretXY
:=
PointAtual
;;
end
;
end
end
;
function
TExplorerV2
.
GetTextoBeforeWord
(
piSynEdit
:
TSynEdit
):
string
;
var
p1
,
p2
:
TPoint
;
begin
p1
:=
piSynEdit
.
CaretXY
;
p2
:=
piSynEdit
.
NextWordPos
;
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
end
;
function
TExplorerV2
.
GetWordsBetweenPoint
(
piSynEdit
:
TSynEdit
):
string
;
var
lWord
,
lWordAux
,
ls_caractere
,
ls_texto
:
string
;
li_CareWordX
,
li_LenWord
,
li_PosInicio
,
li_LenFim
:
integer
;
p1
,
p2
:
TPoint
;
begin
ls_texto
:=
GetTextBetweenLines
(
piSynEdit
,
lWord
,
p1
);
p2
:=
p1
;
result
:=
lWord
;
li_PosInicio
:=
p1
.
X
;
li_LenFim
:=
Length
(
lWord
);
while
(
li_PosInicio
>
0
)
and
(
lWord
<>
''
)
do
begin
p1
.
X
:=
li_PosInicio
-
1
;
ls_caractere
:=
trim
(
Copy
(
ls_texto
,
p1
.
X
,
1
));
if
ls_caractere
=
__PONTO
then
begin
lWord
:=
trim
(
piSynEdit
.
GetWordAtRowCol
(
p1
));
li_LenWord
:=
Length
(
lWord
);
li_LenFim
:=
li_LenFim
+
li_LenWord
+
1
;
p1
.
X
:=
p1
.
X
-
li_LenWord
;
end
else
if
ls_caractere
=
''
then
begin
break
;
end
else
begin
lWordAux
:=
trim
(
piSynEdit
.
GetWordAtRowCol
(
p1
));
if
(
lWordAux
)<>
lWord
then
begin
break
;
end
;
end
;
li_PosInicio
:=
p1
.
X
;
end
;
result
:=
trim
(
Copy
(
ls_texto
,
li_PosInicio
,
li_LenFim
));
if
Pos
(
__PONTO
,
result
)
=
1
then
begin
result
:=
trim
(
Copy
(
result
,
2
,
li_LenFim
));
end
;
end
;
function
TExplorerV2
.
GetTextBetweenLines
(
piSynEdit
:
TSynEdit
;
out
piWord
:
string
;
out
piCareWordXY
:
TPoint
):
string
;
var
p1
,
p2
,
PointAtual
:
TPoint
;
lLen
:
integer
;
begin
p1
:=
piSynEdit
.
PrevWordPos
;
piCareWordXY
:=
p1
;
p2
:=
piSynEdit
.
CaretXY
;
PointAtual
:=
P2
;
if
p1
.
Y
<>
p2
.
Y
then
begin
piWord
:=
trim
(
piSynEdit
.
GetWordAtRowCol
(
p1
));
p1
.
X
:=
0
;
if
((
p2
.
Y
-
p1
.
Y
)
>
0
)
AND
(
piWord
=
''
)
then
begin
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
while
(
trim
(
result
)
=
''
)
and
(
p1
.
Y
>
0
)
do
begin
p2
.
Y
:=
p1
.
Y
;
p1
.
Y
:=
p1
.
Y
-
1
;
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
end
;
lLen
:=
Length
(
result
);
piSynEdit
.
CaretX
:=
lLen
;
piSynEdit
.
CaretY
:=
p1
.
Y
;
piCareWordXY
:=
piSynEdit
.
PrevWordPos
;
piWord
:=
trim
(
piSynEdit
.
GetWordAtRowCol
(
piCareWordXY
));
piSynEdit
.
CaretXY
:=
PointAtual
;
end
else
begin
result
:=
piSynEdit
.
TextBetweenPoints
[
p1
,
p2
];
piCareWordXY
.
X
:=
piCareWordXY
.
X
-
Length
(
piWord
);
end
;
result
:=
StringReplace
(
result
,#
13
,
''
,[
rfReplaceAll
]);
result
:=
StringReplace
(
result
,#
10
,
''
,[
rfReplaceAll
]);
end
else
begin
result
:=
piSynEdit
.
LineText
;
piWord
:=
trim
(
piSynEdit
.
GetWordAtRowCol
(
p1
));
end
;
end
;
{
{
procedure TExplorerV2.PreparaSynCompletion;
procedure TExplorerV2.PreparaSynCompletion;
var lAceitaAtributo : boolean;
var lAceitaAtributo : boolean;
...
@@ -1232,149 +1395,73 @@ begin
...
@@ -1232,149 +1395,73 @@ begin
end; }
end; }
function
TExplorerV2
.
RetirarPalavraChaveOLQ
(
piSynEdit
:
TSynEdit
;
opEve
:
TFaOpenEvent
):
string
;
function
TExplorerV2
.
RetirarPalavraChaveOLQ
(
piSynEdit
:
TSynEdit
;
opEve
:
TFaOpenEvent
):
string
;
var
lWord
,
var
lTextAfterWord
,
lText
,
lTextNextPoint
:
string
;
ls_espaco
,
lTemPalavra
:
Boolean
;
ls_aux
:
string
;
li_Pos
:
integer
;
p2
,
p1
,
zeroPoint
:
TPoint
;
begin
begin
result
:=
''
;
p2
:=
piSynEdit
.
PrevWordPos
;
lTextAfterWord
:=
GetTextoAfterWord
(
piSynEdit
);
lWord
:=
trim
(
piSynEdit
.
GetWordAtRowCol
(
p2
));
result
:=
GetWordsBetweenPoint
(
piSynEdit
);
lText
:=
GetTextBetweenWord
(
piSynEdit
,
p2
,
lWord
);
lTextNextPoint
:=
GetTextoBeforeWord
(
piSynEdit
);
if
not
IsKeyword
(
lWord
)
then
begin
if
not
IsKeyword
(
result
)
then
if
(
opEve
=
fopEvenSelectCompleto
)
or
begin
(
opEve
=
fopEvenFromCompleto
)
or
lTemPalavra
:=
trim
(
result
)
<>
''
;
(
opEve
=
fopEvenWhereCompleto
)
if
(
result
<>
''
)
and
(
lTextAfterWord
<>
''
)
then
then
begin
begin
if
trim
(
lTextAfterWord
)
<>
''
then
if
trim
(
lText
)
<>
''
then
begin
begin
if
SameText
(
__PONTO
,
lTextAfterWord
)
then
result
:=
lText
;
end
;
if
(
opEve
=
fopEvenSelectCompleto
)
or
(
opEve
=
fopEvenFromCompleto
)
then
begin
if
ContemPalavra
(
__VIRGULA
,
lText
)
then
begin
begin
result
:=
''
;
result
:=
result
+
lTextAfterWord
end
;
end
end
else
else
if
(
opEve
=
fopEvenWhereCompleto
)
then
begin
if
ContemPalavra
(
__ASTERICO
,
lText
)
or
ContemPalavra
(
__E_COMERCIAL
,
lText
)
or
ContemPalavra
(
__PERCENTUAL
,
lText
)
or
ContemPalavra
(
__IGUAL
,
lText
)
or
ContemPalavra
(
__SINAL_MAIS
,
lText
)
or
ContemPalavra
(
__DIVISOR
,
lText
)
or
ContemPalavra
(
__PONTENCIA
,
lText
)
or
ContemPalavra
(
__PARENTESES_ABERTO
,
lText
)
or
ContemPalavra
(
__SINAL_MAIOR
,
lText
)
or
ContemPalavra
(
__SINAL_MENOR
,
lText
)
or
ContemPalavra
(
__SINAL_MENOS
,
lText
)
then
begin
begin
result
:=
''
;
result
:=
lTextAfterWord
;
end
;
if
IsExepressaoValida
(
OpEve
,
trim
(
lTextAfterWord
),
lTemPalavra
)
then
end
;
begin
end
result
:=
''
;
else
end
;
begin
end
;
if
(
trim
(
lWord
)
=
trim
(
lText
))
or
end
ContemPalavra
(
__PONTO
,
lText
)
else
if
trim
(
lTextAfterWord
)
=
''
then
then
begin
begin
result
:=
result
+
lTextAfterWord
;
result
:=
lText
;
end
;
end
;
end
end
else
if
(
lTextAfterWord
<>
''
)
then
end
begin
else
result
:=
lTextAfterWord
;
begin
end
;
end
if
(
lWord
=
lText
)
then
else
begin
begin
result
:=
lWord
;
lTemPalavra
:=
false
;
end
if
(
trim
(
lTextAfterWord
)
=
''
)
or
(
trim
(
lTextNextPoint
)
=
''
)
then
else
if
ContemPalavra
(
__ASTERICO
,
lText
)
then
begin
begin
result
:=
lText
;
result
:=
''
;
end
;
if
not
IsExepressaoValida
(
opEve
,
trim
(
lTextAfterWord
),
lTemPalavra
)
then
end
;
begin
result
:=
lTextAfterWord
;
end
;
if
not
IsExepressaoValida
(
opEve
,
trim
(
lTextNextPoint
),
lTemPalavra
)
then
begin
result
:=
lTextNextPoint
;
end
;
if
result
<>
''
then
if
not
IsExepressaoValida
(
opEve
,
trim
(
lTextAfterWord
),
lTemPalavra
)
then
begin
p1
:=
piSynEdit
.
CaretXY
;
zeroPoint
.
X
:=
0
;
zeroPoint
.
y
:=
piSynEdit
.
CaretY
;
ls_aux
:=
piSynEdit
.
TextBetweenPoints
[
zeroPoint
,
p1
];
ls_espaco
:=
' '
;
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
;
result
:=
ls_aux
;
{
li_Pos := Pos(result,ls_aux) ;
if li_Pos > 0 then
begin
ls_espaco := ' ';
ls_aux := trim(Copy(ls_aux,0,li_Pos));
li_Pos := Pos(ls_espaco,trim(ls_aux));
while li_Pos > 0 do
begin
begin
ls_aux := trim(Copy(ls_aux,li_Pos + 1,Length(ls_aux)));
result
:=
lTextAfterWord
;
li_Pos := Pos(ls_espaco,ls_aux);
end
;
end
;
result := ls_aux + result;
end }
end
{ p1 := piSynEdit.CaretXY ;
zeroPoint.X := 0;
zeroPoint.y := piSynEdit.CaretY;
ls_aux := piSynEdit.TextBetweenPoints[zeroPoint,p1];
ls_aux := Copy(ls_aux, Length(ls_aux), Length(ls_aux));
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]);
ls_espaco := ' ';
li_Pos := Pos(__FROM,uppercase(result));
if li_Pos > 0 then
begin
result:=trim(Copy(result,li_Pos + Length(__FROM),Length(result)));
end;
li_Pos := Pos(__SELECT,uppercase(result));
if
not
IsExepressaoValida
(
opEve
,
trim
(
lTextNextPoint
),
lTemPalavra
)
then
if li_Pos > 0 the
n
begi
n
begin
result
:=
lTextNextPoint
;
result:=trim(Copy(result,li_Pos + Length(__SELECT),Length(result)))
;
end
;
end;
end
;
li_Pos := Pos(__WHERE,uppercase(result));
end
;
if li_Pos > 0 then
begin
result:=trim(Copy(result,li_Pos + Length(__WHERE),Length(result)));
end;
li_Pos := Pos(ls_espaco,trim(result));
while li_Pos > 0 do
begin
result := trim(Copy(result,li_Pos + 1,Length(result)));
li_Pos := Pos(ls_espaco,result);
end;
if ls_aux = ' ' then
begin
result := result + ls_aux;
// showMessage(Result)
end;
}
end
;
end
;
...
@@ -1427,6 +1514,56 @@ begin
...
@@ -1427,6 +1514,56 @@ begin
result := piSynEdit.TextBetweenPoints[p1, piSynEdit.CaretXY]; }
result := piSynEdit.TextBetweenPoints[p1, piSynEdit.CaretXY]; }
end
;
end
;
function
TExplorerV2
.
IsExepressaoValida
(
piOpEve
:
TFaOpenEvent
;
piTexto
:
string
;
piTemPalavraAntes
:
Boolean
=
false
):
boolean
;
var
ls_expressao
:
string
;
li_Pos
,
li_Len
:
integer
;
ls_Caractere
:
string
;
begin
result
:=
true
;
ls_expressao
:=
''
;
li_Pos
:=
1
;
li_len
:=
Length
(
piTexto
);
if
(
piOpEve
=
fopEvenSelectCompleto
)
then
begin
ls_expressao
:=
'=,()*'
;
if
(
trim
(
piTexto
)
=
__ASTERICO
)
then
begin
li_Pos
:=
li_Len
+
1
;
result
:=
false
;
end
;
end
else
if
(
piOpEve
=
fopEvenFromCompleto
)
then
begin
ls_expressao
:=
'=,()'
;
end
else
if
(
piOpEve
=
fopEvenWhereCompleto
)
then
begin
if
piTemPalavraAntes
then
begin
ls_expressao
:=
'=<>(*-+/'
;
end
else
begin
ls_expressao
:=
'=,<>()*-+./[]{}'
;
end
;
end
;
while
li_Pos
<=
li_Len
do
begin
ls_Caractere
:=
trim
(
Copy
(
piTexto
,
li_Pos
,
1
));
if
ls_Caractere
<>
''
then
begin
if
Pos
(
ls_Caractere
,
ls_expressao
)
<=
0
then
begin
result
:=
false
;
break
;
end
;
end
;
li_Pos
:=
li_Pos
+
1
;
end
;
end
;
procedure
TExplorerV2
.
CreateParams
(
var
Params
:
TCreateParams
);
procedure
TExplorerV2
.
CreateParams
(
var
Params
:
TCreateParams
);
begin
begin
inherited
CreateParams
(
Params
);
inherited
CreateParams
(
Params
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment