Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
3-1079960574
Карелин Артем
2004-03-22 16:02
2004.04.18
Посоветуйте компонент для создания таблиц в памяти.


7-1075920853
Rim
2004-02-04 21:54
2004.04.18
Параметры панели задач


7-1077121572
Макын
2004-02-18 19:26
2004.04.18
Реестр


6-1075399727
SIVS
2004-01-29 21:08
2004.04.18
чат и передача данных в сети


11-1062595643
savva
2003-09-03 17:27
2004.04.18
Кладову - не могу скачать http://bonanzas.rinet.ru/RichPrint.zip