• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

Delphi Syntax-Highlighting yapımı

Üyelik Tarihi
7 Ocak 2015
Konular
4,091
Mesajlar
4,274
MFC Puanı
40
delphide kendi kod renklendirmenizi oluşturmak istemezmisiniz..aşağıdaki kaynak kodları inceleyerek kendi renk sisteminizi oluşturabilirsiniz.ister editor yapın ister başka bişi tamamen size kalmış

ekran görüntüsü
http://www.delphifr.com/gdi/c/53319.cs.jpg

unit U_Color;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Btn_Colorier: TButton;
procedure Btn_ColorierClick(Sender: TObject);
private
{ Dйclarations privйes }
public
{ Dйclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure HightLight_Syntax(ARE : TRichEdit);
//{$REGION ’Sub-functions’}
// Sous fonction seulement visible а l’intйrieur de HighLight_Syntax et qui a accиs а ARE
procedure HighLight_Others(AStart, AEnd : String; AColor : TColor);
var
iNext, iPos, iPos_End : Integer;
begin
iNext := 0;
iPos := ARE.FindText(AStart, iNext, Length(ARE.Text), [stMatchCase]);
while iPos <> -1 do // FindText renvoit -1 si il n’a pas trouvй AStart dans le RichEdit
begin
iNext := iPos + Length(AStart); // On rйtrйcit le texte а parcourir pour ne pas boucler sur toujours le mкme mot
ARE.SelStart := iPos; // On initialise la position de dйpart du RichEdit
iPos_End := ARE.FindText(AEnd, iNext, Length(ARE.Text), [stMatchCase]); // On cherche la position du deuxiиme caractиre qui doit arrкter la coloration
if iPos_End = -1 then
if AStart = ’’’’ then
iPos_End := ARE.FindText(#13, iNext, Length(ARE.Text), [stMatchCase]) // Quand il s’agit d’une ouverture de chaine (’), on termine la coloration а la fin de la ligne
else
iPos_End := Length(ARE.Text); // Par dйfaut, s’il manque le caractиre de fin, on termine la coloration а la fin du texte

ARE.SelLength := (iPos_End - iPos) + Length(AEnd); // On dйfinit jusqu’а oщ doit кtre colorй le texte
ARE.SelAttributes.Color := AColor; // Et on colore
if AStart = ’’’’ then
iPos := ARE.FindText(’’’’, iNext + iPos_End, Length(ARE.Text), [stMatchCase]) // Quand il s’agit d’une ouverture de chaine, la position de la chaine suivante doit commencer aprиs la fermeture de la derniиre chaine
else
iPos := ARE.FindText(AStart, iNext, Length(ARE.Text), [stMatchCase]);
end;
end;
//{$ENDREGION}

var
SL_Key_Word : TStringList;
i, iPos, iNext, iPos_Symb_Start, iPos_Symb_End, iTest : Integer;
const
C_Path = ’KeyWords.txt’;
begin
ARE.SelectAll;
ARE.SelAttributes.Color := clBlack;
SL_Key_Word := TStringList.Create;
try
SL_Key_Word.LoadFromFile(C_Path);
i := 0;
while i < SL_Key_Word.Count do
begin
iNext := 0;
iPos := ARE.FindText(SL_Key_Word, iNext, Length(ARE.Text), [stWholeWord]); // On ne recherche que les mots ENTIERS qui correspondent а un mot clef
while iPos <> -1 do
begin
iPos_Symb_Start := ARE.FindText(’_’, iPos - 1, 1, [stMatchCase]); // Pour йviter que les mots prйcйdйs de "_" ne soient colorйs aussi (FindText ne gиre pas зa)
if iPos = 0 then
iTest := 0 // Si la position est йgale а 0, c’est qu’il n’y a obligatoirement aucun "_" avant. Pour йviter que iPos - iPos_Symb_Start = 1.
else
iTest := iPos - iPos_Symb_Start;

iPos_Symb_End := ARE.FindText(’_’, iPos, Length(SL_Key_Word) + 1, [stMatchCase]); // Pour йviter que les mots suivis de "_" ne soient colorйs aussi
if (iTest <> 1) and (((Length(SL_Key_Word) + iPos) - iPos_Symb_End) + 1 <> 1) then // Si le mot n’est pas entourй de "_"
begin
iNext := iPos + Length(SL_Key_Word); // La prochaine recherche se fait а partir de la fin du dernier mot clef trouvй
ARE.SelStart := iPos;
ARE.SelLength := Length(SL_Key_Word);
ARE.SelAttributes.Color := clNavy;
end
else
iNext := iPos + Length(SL_Key_Word) - 1; // Ici ce n’est pas un mot clef

iPos := ARE.FindText(SL_Key_Word, iNext, Length(ARE.Text), [stWholeWord]); // Recherche du prochain mot clef
end;
inc(i);
end;

HighLight_Others(’(*’, ’*)’, clGreen);
HighLight_Others(’//’, #13, clGreen); // #13 reprйsente le saut de ligne
HighLight_Others(’{’, ’}’, clGreen);
HighLight_Others(’{$’, ’}’, clTeal);
HighLight_Others(’’’’, ’’’’, clBlue);
finally
SL_Key_Word.Free;
end;
end;

procedure TForm1.Btn_ColorierClick(Sender: TObject);
begin
HightLight_Syntax(RichEdit1);
end;

end.




Proje Download
https://rapidshare.com/files/2884466...ing_Delphi.rar
 
Üst