Главная страница
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.041 c
3-1084135839
Execute
2004-05-10 00:50
2004.05.30
ПРоблема с поучениям ID


14-1083981482
mfender
2004-05-08 05:58
2004.05.30
Представьте себе...


14-1084258208
Тимохов
2004-05-11 10:50
2004.05.30
Впечатления о memory maneger е.


14-1084425781
Мазут Береговой
2004-05-13 09:23
2004.05.30
Ужасные новости для тех, кто собирается долго жить!


8-1079200504
Step[B.M.]
2004-03-13 20:55
2004.05.30
Кто работает с компоненами WaveAudio.