Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизПрограммная установка события у компонента.... Найти похожие ветки
← →
Lex_! © (2006-07-04 05:20) [0]Имеется код:
Function Twww_module.GenerateNewsContent:String;
var n:TStringList;
s_news:TAdoQuery;
ppNews:TPageProducer;
procedure ppNewsHTMLTag(Sender: TObject; Tag: TTag; const TagString: string; TagParams: TStrings; var ReplaceText: string);
begin
ReplaceText:=s_news.FieldByName(tagstring).AsString;
end;
begin
s_news:=TAdoQuery.Create(nil);
s_news.Connection:=c_sibom;
ppNews:=TPageProducer.Create(nil);
ppNews.HTMLDoc.LoadFromFile(settings.Values["path"]+"\"+settings.Values["tpath"]+"\"+settings.Values["theme"]+"\news.tpl");
ppNews.OnHTMLTag:=ppNewsHTMLTag; // [Pascal Error] Unit1.pas(160): E2009 Incompatible types: "method pointer and regular procedure"
s_news.SQL.Clear;
s_news.SQL.Add("SELECT ts, title, text");
s_news.SQL.Add("FROM dbo.news");
s_news.SQL.Add("ORDER BY ts DESC");
n:=TStringList.Create;
s_news.Open;
s_news.First;
while not s_news.Eof do
begin
n.Add(ppNews.Content);
s_news.Next
end;
s_news.Close;
result:=n.Text;
n.Free;
s_news.Free;
end;
← →
Lex_! © (2006-07-04 05:22) [1]ppNews.OnHTMLTag:=ppNewsHTMLTag - в этом месте выпадает ошибка, каким образом произвести установку обработчика?
← →
Leonid Troyanovsky © (2006-07-04 07:18) [2]
> Lex_! © (04.07.06 05:22) [1]
> ppNews.OnHTMLTag:=ppNewsHTMLTag - в этом месте выпадает
> ошибка, каким образом произвести установку обработчика?
Назначить метод, а не регулярную процедуру?
--
Regards, LVT.
← →
Lex_! © (2006-07-04 09:38) [3]Так вот каким образом это сделать?
← →
Reindeer Moss Eater © (2006-07-04 09:39) [4]реализовать метод.
назначить его.
← →
Lex_! © (2006-07-04 09:47) [5]Подробнее в этом месте можно?
не доходит до меня... каким образом реализовать метод ... вроде как метод это процедура с заданными параметрами ...
ЗЫ - сильно не пинать, с этой проблемой столкнулся впервые..
← →
Reindeer Moss Eater © (2006-07-04 09:51) [6]все уже сказано.
видать тебе не сильно надо.
← →
ЮЮ © (2006-07-04 09:54) [7]Function Twww_module.ppNewsHTMLTag(Sender: TObject; Tag: TTag; const TagString: string; TagParams: TStrings; var ReplaceText: string);
← →
Lex_! © (2006-07-04 09:57) [8]ppNews - внутрений объект, и если процедуру описать как внешнюю (вне этой процедуры где она сейчас описана) то не будет видно опять же локальный объект TAdoQuery ... а он должен быть именно локальным ...
Или я чего то не понимаю, или одно из двух ...
← →
Мефисто (2006-07-04 09:58) [9]Lex _! © (04.07.06 09:47) [5]
> каким образом реализовать метод
Метод некоего класса, например формы:
в public формы:
procedure ppNewsHTMLTag (Sender: TObject; Tag: TTag; const TagString: string; TagParams: TStrings; var ReplaceText: string);
Реализация метода:
procedure TForm1.ppNewsHTMLTag (Sender: TObject; Tag: TTag; const TagString: string; TagParams: TStrings; var ReplaceText: string);
begin
...
end;
Но в ветке основная, такие вопросы не задают :)
← →
Lex_! © (2006-07-04 10:04) [10]А куда мне такой вопрос задавать?.. в "Начинающим"? ...
Весь смысл почему процедура была локальная... потому что обращение к запросу идет (s_news) и если её описать вне этой процедуры то работать с этим запросом нельзя ... т.е. не определенная переменная получается...
← →
Lex_! © (2006-07-04 10:12) [11]
var n:TStringList;
s_news:TAdoQuery;
ppNews:TPageProducer;
вот это локальное .... то что подчеркнуто ...
а в процедуреReplaceText:=s_news.FieldByName(tagstring).AsString;
этот запрос используется для генерации контента... и если вынести эту процедуру за "Twww_module.GenerateNewsContent" то запроса видно не будет и не получится вообще что-то сгенерировать ... что-то я зашол в тупик.. глобальный запрос мне не нужен ...
← →
Lex_! © (2006-07-04 10:30) [12]т.е. локально это не сделать?...
Тогда и запрос выносить надо в глобальные ...
Тогда не известно как он себя поведет при одновременном выполнении двух функций .. (мне неизвестно покрайней мере.. может и адекватно .. что не факт .. )
← →
ЮЮ © (2006-07-04 10:49) [13]Тогда и запрос выносить надо в глобальные ...
А по чему не в приватные переменные Twww_module ?
← →
Lex_! © (2006-07-04 11:33) [14]Так все равно вне функции будет ...
Ладно, в принципе все понятно всем спасибо, будем копать дальше..
← →
Lex_! © (2006-07-04 12:08) [15]var
evhandler: TNotifyEvent;
TMethod(evhandler).Code := @Click;
TMethod(evhandler).Data := nil;
Button1.OnClick := evhandler;
Теоретически мне надо вот это было ...
Пойду пробовать ...
← →
ЮЮ © (2006-07-05 04:50) [16]
> Так все равно вне функции будет ...
А толку, что от будет в функции. После завершкния метода s_news будет уничтожен, а обработчик OnHTMLTag у ppNews останется. И какой DataSet он будет юзать??? AV гарантировано.
← →
Lex_! © (2006-07-05 05:13) [17]Потому и ЛОКАЛЬНО описывал ppNews, чтобы уничтожалось ВСЁ ... и ppNews и соответственно s_news ....
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c