Форум: "Основная";
Текущий архив: 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