Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Динамическая работа с компнентами   Найти похожие ветки 

 
finger   (2004-05-20 13:03) [0]

Проблема вот в чем у TSynEdit есть функция дл подсветки строк (например как ошибка в дельфи)
Если компонент лежит на форме, то такой код работает

procedure TForm1.TSynEdit1SpecialLineColors(Sender: TObject; Line: Integer;
 var Special: Boolean; var FG, BG: TColor);
begin
if (Line = StrToInt(Edit1.Text)) and (ErrState) then
begin
 FG := clWhite;
 BG := clMaroon;
end;
end;


НО у меня на форме лежит PageControl и synedit`ы создаются динамически
и эта функция никак не хочет работать, причем она исполняется, но в synedit`е ничего не подсвечивается (проверял, ставя точки останова)

procedure TForm1.btnErrorClick(Sender: TObject);
var
Spcl: Boolean;
BG,FG: TColor;
begin
Spcl:= False;
FG := clWhite;
BG := clMaroon;

ErrState:= not ErrState;
TSynEdit(PageControl1.ActivePage.Controls[0]).OnSpecialLineColors:=SynEditSpecialLineColors;
if ErrState then btnError.Caption := "Error (true)" else btnError.Caption := "Error (false)";
TSynEdit(PageControl1.ActivePage.Controls[0]).Repaint;
TSynEdit(PageControl1.ActivePage.Controls[0]).SetFocus;
end;

procedure TForm1.TSynEdit1SpecialLineColors(Sender: TObject; Line: Integer;
 var Special: Boolean; var FG, BG: TColor);
begin
if (Line = StrToInt(Edit1.Text)) and (ErrState) then
begin
 FG := clWhite;
 BG := clMaroon;
end;
end;


Пытался вызывать эту функцию (в том же btnErrorClick)
SynEditSpecialLineColors(TSynEdit(PageControl1.ActivePage.Controls[0]),StrToInt(Edit1.Text),Spcl,FG,BG);
и так SynEditSpecialLineColors(Self,StrToInt(Edit1.Text),Spcl,FG,BG);
ничего не работает.

Так же присваивал эту функцию на динамическом создании synedit`а - ничего не произошло

function TForm1.OpenFile(FileName: String): TSynEdit;
var
TabSheet:TTabSheet;
s: string;
begin
 TabSheet:=TTabSheet.Create(PageControl1);
 TabSheet.PageControl:= PageControl1;
 PageControl1.ActivePage:=TabSheet;
 Result.OnSpecialLineColors:=SynEditSpecialLineColors
 Result:=TSynEdit.Create(TabSheet);
 Result.Parent:=TabSheet;
 Result.Highlighter:= SynGeneralSyn1;
 Result.Align:=alClient;
 Result.Gutter.ShowLineNumbers:= true;
 Result.Gutter.LeftOffset:= 0;
 
   <...>
end;


Как заставить эту функцию работать? Заранее благодарен за помощь.


 
MU ©   (2004-05-20 13:09) [1]

var
TabSheet:TTabSheet;
s: string;
begin
TabSheet:=TTabSheet.Create(PageControl1);
TabSheet.PageControl:= PageControl1;
PageControl1.ActivePage:=TabSheet;
Result:=TSynEdit.Create(TabSheet);
Result.Parent:=TabSheet;
Result.Highlighter:= SynGeneralSyn1;
Result.Align:=alClient;
Result.Gutter.ShowLineNumbers:= true;
Result.Gutter.LeftOffset:= 0;
Result.OnSpecialLineColors:=SynEditSpecialLineColors;

  <...>
end;



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.043 c
1-1084722598
G_U_N
2004-05-16 19:49
2004.05.30
Объект


1-1084809106
SergeyM
2004-05-17 19:51
2004.05.30
Кодировка в буфере


14-1083938202
X9
2004-05-07 17:56
2004.05.30
Winternl.h


11-1074200421
Neep
2004-01-16 00:00
2004.05.30
Создание меню без MCK


7-1082984818
Talla2k
2004-04-26 17:06
2004.05.30
работа с портом(232) через DLL и COM .Почему???