Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];
ВнизПодсветка в richedite Найти похожие ветки
← →
DJ_UZer © (2008-03-14 22:21) [0]Извенте, не подскажите, как сделать в ричедите, можно сделать синтаксическую подсветку?
← →
Johnmen © (2008-03-15 01:31) [1]Что такое "синтаксическая" подсветка?
И чем она отличается от обычной?
← →
DJ_UZer © (2008-03-15 01:36) [2]ну что бы какой то определенный текст каким то образом выделялся, например текст который находиться в []. Вот мне то и надо реализовать что бы как то выделялся текст находящийся в квадратных скобках.. (жирным или определенным цветом) ..
← →
Johnmen © (2008-03-15 01:38) [3]см. SelStart, SelLength, SelAttributes
← →
DJ_UZer © (2008-03-15 01:54) [4]Я смотрел, а как связать, и при этом чтобы при вводе?
← →
No_Dead © (2008-03-15 02:05) [5]> [4] DJ_UZer © (15.03.08 01:54)
> Я смотрел, а как связать, и при этом чтобы при вводе?
function TForm1.CheckList(InString: string): boolean;
const TheList: array[1㐁] of string = ("begin", "or", "end","end.",
"end;", "then", "var", "for", "do", "if", "to", "string", "while");
var X: integer;
begin
Result := false;
X := 1;
InString := StringReplace(InString, " ", "",[rfReplaceAll]);
InString := StringReplace(InString, #$A, "",[rfReplaceAll]);
InString := StringReplace(InString, #$D, "",[rfReplaceAll]);
while X < High(TheList) + 1 do
if TheList[X] = lowercase(InString) then
begin
Result := true;
X := High(TheList) + 1;
end
else inc(X);
end;
function SearchFor(WorkSpace, Search: string; Start: integer): integer;
var Temp: string;
begin
Temp := copy(WorkSpace, Start, length(WorkSpace));
Result := pos(Search, Temp);
end;
procedure TForm1.HighLight;
var WStart, WEnd, WEnd2: integer;
WorkSpace, SWord: string;
begin
WStart := 1;
WEnd := 1;
with RichEdit1 do
begin
WorkSpace := Text + " " + #$D#$A;
while WEnd > 0 do
begin
WEnd := SearchFor(WorkSpace, " ", WStart);
WEnd2 := SearchFor(WorkSpace, #$A, WStart);
if WEnd2 < WEnd then WEnd := WEnd2;
SWord := copy(WorkSpace, WStart, WEnd — 1);
if (SWord <> " ") and (SWord <>"") then
if CheckList(SWord) then
begin
SelStart := WStart — 1;
SelLength := length(SWord);
SelAttributes.Style := [fsBOLD];
SelStart := WStart + length(SWord) + 1;
SelAttributes.Style := [];
end;
WStart := WStart + WEnd;
end;
SelStart := length(Text);
SetFocus;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
HighLight;
end;
end;
procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var WEnd, WStart, BCount: integer;
Mark: string;
begin
if (ssCtrl in Shift) and (Key = ord("V")) then Button2Click(Self);
if (Key = VK_Return) or (Key = VK_Back) or (Key = VK_Space) then
begin
if RichEdit1.SelStart > 1 then
begin
WStart := 0;
WEnd := RichEdit1.SelStart;
BCount := WEnd — 1;
while BCount <> 0 do
begin
Mark := copy(RichEdit1.Text, BCount, 1);
if (Mark = " ") or (Mark = #$A) then
begin
WStart := BCount;
BCount := 1;
end;
dec(BCount);
end;
RichEdit1.SelStart := WEnd — (WEnd — WStart);
RichEdit1.SelLength := WEnd — WStart;
if CheckList(RichEdit1.SelText) then
RichEdit1.SelAttributes.Style := [fsBold]
else RichEdit1.SelAttributes.Style := [];
RichEdit1.SelStart := WEnd;
RichEdit1.SelAttributes.Style := [];
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RichEdit1.PasteFromClipboard;
HighLight;
end;
end.
вот что-то в этом роде. Все о чем говорил Johnmen, здесь реализованна некоторая часть (из какого-то faq © чей не знаю:(), а остальное самому думать и не лениться!!!
%>
← →
Германн © (2008-03-15 02:24) [6]
> DJ_UZer © (14.03.08 22:21)
>
> Извенте, не подскажите, как сделать в ричедите, можно сделать
> синтаксическую подсветку?
>
"если собираешься делать какой-нить редактор с расцветкой в зависимости от синтаксиса, советую не мучаться с ричедитом, а использовать SynEdit-компонент"
(с) Яндекс
http://www.torry.net/quicksearchd.php?String=SynEdit&Title=Yes
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c