Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Вниз

Адрес процедуры - метод класса ?   Найти похожие ветки 

 
Кот Бегемот   (2003-01-15 16:13) [0]

Приветик :) Объясните популярно plz почему нельзя назначить обработчиком метод какого-то класса ???
Пример:
T_fomMain = class(TForm)
public
{ Public declarations }
procedure AddItemToList(sr:TSearchRec);
end;
...
FThreadFind.OnFinded := AddItemToList;
...

procedure TThreadFileFind.DoFinded();
begin
if Assigned(FOnFinded)
then FOnFinded(FSR);
end;{}

Получаю ошибку компилятора:
Incompatible types: regular procedure and method pointer


 
Skier   (2003-01-15 16:17) [1]

>Кот Бегемот
Как объявлена OnFinded ?


 
gsu   (2003-01-15 16:18) [2]

не тот тип, для обр-ка, вроде можно только AddItemToList(Sender: TObject)


 
Кот Бегемот   (2003-01-15 16:26) [3]

sorry, забыл добавить:
TListSRProc = procedure(sr:TSearchRec);

TThreadFileFind = class(TThread)
private
FOnFinded: TListSRProc;
public
property OnFinded: TListSRProc write FOnFinded;
end;


 
Skier   (2003-01-15 16:29) [4]

>Кот Бегемот
1) TListSRProc = procedure(sr:TSearchRec) of object;
2) procedure AddItemToList(Sender: TObject; sr:TSearchRec);


 
Digitman   (2003-01-15 16:34) [5]

> TListSRProc = procedure( Sender: TObject;sr:TSearchRec) of object;


 
Кот Бегемот   (2003-01-15 16:38) [6]

2Skier © (15.01.03 16:29)
Большое спасибо - не доглядел :( - или забыл :)))


 
Skier   (2003-01-15 16:39) [7]

>Digitman
Ага. Точно. Моя оплошность...


 
Skier   (2003-01-15 16:44) [8]

>Digitman
Нет, Маэстро и всё-таки Вы меня смутили мой пост (15.01.03 16:29) - правильный.
Извиняюсь перед всеми за неприличные колебания... :)


 
gsu   (2003-01-15 16:46) [9]

>> Skier ©
А мя не похвалили, хлюп


 
Digitman   (2003-01-15 16:56) [10]


> Skier


Эт почему же ? Декларация procedure T_fomMain.AddItemToList() должна в точности соответствовать декларации поля TThreadFileFind.FOnFinded, и, соответственно, типу TListSRProc


 
Skier   (2003-01-15 17:03) [11]

>Digitman

Признаю свою вину, меру, степень, глубину...:)

Окончательно :
1)
а) TListSRProc = procedure(Sender: TObject; sr:TSearchRec) of object;
б) procedure AddItemToList(Sender: TObject; sr:TSearchRec);
2)
а) TListSRProc = procedure(sr:TSearchRec) of object;
б) procedure AddItemToList(sr:TSearchRec);


 
Digitman   (2003-01-15 17:05) [12]

но если

TListSRProc = procedure(Sender: TObject;sr:TSearchRec) of object;

тогда уж и

procedure TThreadFileFind.DoFinded();
begin
if Assigned(FOnFinded)
then FOnFinded( self, FSR);
end;{}


 
Skier   (2003-01-15 17:07) [13]

>Digitman
Конечно


 
Digitman   (2003-01-15 17:09) [14]

и тогда уж не DoFinded(), а Do Found()
для пущей "крутизны" кода)))


 
Skier   (2003-01-15 17:12) [15]

>Digitman
Да. Велик и могуч английский язык. :))


 
Кот Бегемот   (2003-01-15 17:18) [16]

2Digitman © (15.01.03 17:09)
Спасибо преогромаднейшеее :))) - серьезно
еще один недосмотр p.p. find = found

Остановился на этом варианте:
TListSRProc = procedure(sr:TSearchRec) of object;
procedure AddItemToList(sr:TSearchRec);

Sender: TObject - как-то не особо нужен

F1 > Procedural types
type
TMethod = procedure of object;
TNotifyEvent = procedure(Sender: TObject) of object;



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

Форум: "Основная";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-72194
Yury
2003-01-14 08:45
2003.01.23
Всплывающее меню


1-72177
MyNameIsVova
2003-01-13 17:12
2003.01.23
Ресурсное меню. Изменение сочетаний горячих клавиш (API).


1-72285
Юра
2003-01-15 11:52
2003.01.23
Создавать формы сразу или динамически?


1-72383
Mentos
2003-01-13 13:31
2003.01.23
линк между RTF-файлом и Дельфийской формой


3-72123
Дима2003
2002-12-31 09:41
2003.01.23
Отчёт в MS Access





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский