J'ai ce code, pour initialiser Scintilla avec xml lexer:DScintilla, le pliage du code ne fonctionne pas pour moi
procedure TfrmWeMain.DScintilla1MarginClick(ASender: TObject; AModifiers,
APosition, AMargin: Integer);
var line_number:integer;
begin
line_number:= (ASender as TDScintilla).SendEditor(SCI_LINEFROMPOSITION, APosition, 0);
case AMargin of
1:
begin
(ASender as TDScintilla).SendEditor(SCI_TOGGLEFOLD, line_number, 0);
end
end;
end;
procedure TfrmWeMain.addDocument(filename:string);
var frmEditor:tFrameEditor;
ts:TTabSheet;
procedure setColors(lang:integer;fore:integer;const back:tcolor=clWindow;
const bold:boolean=false; const italic:boolean=false;
const underline:boolean=false; const font:string='Courier New';
const size:integer=10);
begin
frmEditor.sci.StyleSetBack(lang,colortorgb(back));
frmEditor.sci.StyleSetFore(lang,colortorgb(fore));
frmEditor.sci.StyleSetFont(lang,font);
frmEditor.sci.StyleSetBold(lang,bold);
frmEditor.sci.StyleSetItalic(lang,italic);
frmEditor.sci.StyleSetUnderline(lang,underline);
frmEditor.sci.StyleSetSize(lang,size);
end;
procedure setFolding;
begin
frmEditor.sci.SetMarginTypeN(1,0);
frmEditor.sci.SetMarginTypeN(1,SC_MARGIN_SYMBOL);
frmEditor.sci.SetMarginMaskN(1,SC_MASK_FOLDERS);
frmEditor.sci.SetMarginWidthN(0,40);
frmEditor.sci.SetMarginWidthN(1,20);
frmEditor.sci.SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDER, SC_MARK_PLUS);
frmEditor.sci.SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPEN, SC_MARK_MINUS);
frmEditor.sci.SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEREND, SC_MARK_EMPTY);
frmEditor.sci.SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_EMPTY);
frmEditor.sci.SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPENMID, SC_MARK_EMPTY);
frmEditor.sci.SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERSUB, SC_MARK_EMPTY);
frmEditor.sci.SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERTAIL, SC_MARK_EMPTY);
frmEditor.sci.SendEditor(SCI_SETFOLDFLAGS, 16, 0); // 16 Draw line below if not expanded
frmEditor.sci.OnMarginClick:=DScintilla1MarginClick;
frmeditor.sci.StartStyling(0,0);
end;
begin
///...
frmEditor.sci.SetLexer(SCLEX_XML);
frmEditor.sci.SetCodePage(CP_UTF8);
setColors(SCE_H_DEFAULT,clBlack);
setColors(SCE_H_TAG,clPurple,clWindow,true);
setColors(SCE_H_TAGUNKNOWN,clRed);
setColors(SCE_H_ATTRIBUTE,clNavy);
setColors(SCE_H_ATTRIBUTEUNKNOWN,clRed);
setColors(SCE_H_NUMBER,clBlue);
setColors(SCE_H_DOUBLESTRING,clBlue);
setColors(SCE_H_SINGLESTRING,clBlue);
setColors(SCE_H_OTHER,clBlack);
setColors(SCE_H_COMMENT,clTeal);
setColors(SCE_H_ENTITY,clPurple);
setColors(SCE_H_TAGEND,clPurple);
setColors(SCE_H_CDATA,clTeal);
setFolding;
///...
end;
Voir la partie setFolding du code, il est que lorsque le pliage devrait entrer en mouvement, mais ne le fait pas. Je ne peux pas voir les marqueurs de plis, ni le pliage lui-même fonctionne.
J'ai besoin de savoir ce que je manque ici, ou ce que je fais mal. Les extraits de code en Delphi, C++, C# ou pseudocode sont les bienvenus
merci, je vais essayer cet après-midi et revenir avec les résultats – beerwin
ELABOREE de la boîte, merci beaucoup – beerwin
Vous êtes les bienvenus, heureux de vous aider:) – TLama