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

Вниз

Cannot override a statik method... что это?...   Найти похожие ветки 

 
TankMan ©   (2004-03-31 19:24) [0]

Речь про TMainMenu...я уже писал в другом сообщении о том же, но вот подумал что главная проблема не отражена в заголовке... сейчас исправил :)....
Вобщем у меня получилось переделать компонент так,чтобы можно было закрасить и саму полоску Главного меню и сами MenuItems, вобщем все нормально, кроме одного "НО" - нельзя сделать компонент :(... т.е. все получается нормально, но только если создавать меню программно, а вот Редактировать меню при разработке, не получается :(... я подумал, и решил, что единственным и необходимым является переопределение (override) процедуры insert, класса TMenuItem, но вот когда
я прописываю в потомке TMenuItem в разделе public
procedure Insert(index:integer;Item:TMenuItem);override;
он ругается на эту срочку словами: "Cannot override a statik method"... вот я и думаю, что можно с этим сделать?...

Может быть можно как-то по другому реализовать эту фишку?
Вобщем проблема состоит в том, что при присоединении TMenuItem к TMainMenu и к другим MenuItem-ам нужно определять свою процедуру на OnDrawItem... "дописав" процедуру insert можно было бы и решить эту проблему, но если нельзя ее переделать то может у кого возникнет другая мысль, как можно это реализовать?


 
Игорь Шевченко ©   (2004-03-31 19:30) [1]

Слово override убрать


 
Anatoly Podgoretsky ©   (2004-03-31 19:57) [2]

Это означает, что нельзя перекрыть статический метод.


 
TankMan ©   (2004-03-31 20:24) [3]

Если я уберу override, то этот insert, не вызывается вообще :(... а мне нужно чтобы он работал вместо стандартного TMenuItem.Insert...

>Anatoly Podgoretsky
Так можно как-то обойти эту проблему?


 
Юрий Зотов ©   (2004-03-31 21:01) [4]

> TankMan ©   (31.03.04 20:24) [3]

Хотите, дам самый лучший совет? Именно тот, который Вам сейчас и нужен?

Только что вышла книга на русском языке по разработке компонентов, купить ее можно через Internet (www.ozon.ru). Купите ее - не пожалеете.

Знаете, почему я вместо ответа на Ваш вопрос советую купить книгу? Вот почему.

Вы уже довольно давно мучаетесь с этим Вашим компонентом и не первый раз задаете вопросы - по мере возникновения проблем. Все эти вопросы я читал и поэтому ход разработки в целом ясен. Так вот - Вы даже не поверите, как много плюх УЖЕ сидит в Вашем компоненте. И объяснить это невозможно - Вы просто не поймете, а чтобы было понятно, придется писать здесь совсем не одну лекцию. Вы сами понимаете, что в online-форуме такое невозможно.

Только один пример, чтобы не быть голословным. Вот Вы пишете: "Редактировать меню при разработке, не получается :(... я подумал, и решил, что единственным и необходимым является переопределение (override) процедуры insert, класса TMenuItem".

Неправильно это, и совсем не так это делается. Нужно писать редактор компонента, который к САМОМУ компоненту не имеет никакого отношения. Можно и зарегистрировать готовый редактор, который уже встроен в IDE - но до него еще надо достучаться. Можно (хотя и не фонтан, но можно) обойтись и без этого редактора, но тогда потребуется аналогичный редактор для свойства Items, тоже к САМОМУ компоненту не имеющий никакого отношения. И нет других путей, и никакое замещение Insert Вам не поможет. Тем более, что заместить статический метод нельзя, а перекрывать его не следует - потому что возникнет та самая проблема, с которой Вы уже столкнулись. И если Вы спрашиваете, как ее обойти, значит у Вас проблемы с пониманием Delphi-модели ООП - а без этого никакого приличного компонента Вы все равно не напишете, уж поверьте старому компонентщику.

Поэтому - купите книжку и изучайте ее. Капитальнейшим образом. И, честное слово, через какую-нибудь пару-тройку недель Вы станете смеяться на своим же собственным кодом - потому что начнете понимать, а КАК же пишутся компоненты. И скажете авторам "спасибо" за книгу, а мне "спасибо" за этот постинг, каким бы он сейчас ни казался бы Вам несправедливым и обидным. Можете поверьте, что я сказал ПРАВДУ - а на нее обижаться, конечно, можно, но глупо.


 
Mike_Goblin ©   (2004-03-31 22:06) [5]

Посмотрите компонент TJvMainMenu из пакета JVCL
думаю, изучение его кода сильно обогатит вас идеями


 
TankMan ©   (2004-03-31 22:23) [6]

Да я и не обижаюсь... я вот тут подумал над вашими словами... например "...но тогда потребуется аналогичный редактор для свойства Items, тоже к САМОМУ компоненту не имеющий никакого отношения..." и понял что действительно надо бы почитать.... искал искал на озоне, но так и не нашел никакой книги посвященной именно "компоенентостроительству"...может я не там искал? Можно по конкретнее название написать?


 
Юрий Зотов ©   (2004-03-31 22:54) [7]

> TankMan ©   (31.03.04 22:23) [6]

Книгу см. здесь:
http://www.delphimaster.ru/books/1656145

А кое-что о ней - здесь:
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1080218768&n=3


 
TankMan ©   (2004-04-01 13:10) [8]

Вооо - заказал ее и еще несколько :)... спасибо за совет, точнее за рекомендацию... просто в наших местных магазинах можно найти только книги типа "Windows для чайников" и "Excel для чайников"... поэтому я и забросил эту идею черпать информацию из книг, но совсем забыл, что есть и интернет магазины! :)



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

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

Наверх




Память: 0.47 MB
Время: 0.032 c
11-1061102319
KreZ0n
2003-08-17 10:38
2004.04.18
KOL в LINUX


3-1079891555
neVIP
2004-03-21 20:52
2004.04.18
Эксклюзивный доступ к базе


3-1080134385
Ann
2004-03-24 16:19
2004.04.18
ReportBuilder


1-1080637863
гость с юга
2004-03-30 13:11
2004.04.18
как очистить DateTimePicker


4-1076152288
Kolyan
2004-02-07 14:11
2004.04.18
DispatchMessage & TranslateMessage





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