Главная страница
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.054 c
14-1084264874
slaga
2004-05-11 12:41
2004.05.30
] Я вот хочу начать изучать COM технологию, хотел спросить может


1-1084785347
Alek_1
2004-05-17 13:15
2004.05.30
Динамический масив


3-1083926709
Саша
2004-05-07 14:45
2004.05.30
Поиск записи в таблице


14-1084134741
Sanek_metaller
2004-05-10 00:32
2004.05.30
Сфера


14-1084469473
хз
2004-05-13 21:31
2004.05.30
UI дизайн