Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1146320331
h8394E
2006-04-29 18:18
2006.08.20
Типы контролов


5-1137932033
hawkins
2006-01-22 15:13
2006.08.20
ZipTV триальная версия


2-1154009086
Ega23
2006-07-27 18:04
2006.08.20
Визуализация длительной загрузки


15-1153420548
Мефисто
2006-07-20 22:35
2006.08.20
Скульптуры с детских площадок (взято с ЖЖ) :)


2-1154136447
Батя
2006-07-29 05:27
2006.08.20
E-mail





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский