| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > popupmenu |
| Автор: Proxin 26.5.2010, 21:41 | ||
| проблема такая. нужно поменять отрисовку пунктов - с этим разобрался. но их много (около десятка), а на каждый создавать ondrawitem и onmeasureitem - долго и, кажется, неразумно. есть ли способ задать новый способ отрисовки сразу для всех пунктов меню? upd. нашёл изврат
но интересует цивилизованный способ. |
| Автор: DarkProg 27.5.2010, 08:24 |
| Можно задать всем пунктам некоторую общую функцию которая и будет отрисовывать: задавать надо на том этапе где это нужно Ну что-то типа такого сли у вас всё через N1, N2 и т.д. for i:=1 to 10 do begin (findconponent('N'+inttostr(i)) as TpopupmenuItem).OnDrawItem:=N1DrawItem; (findconponent('N'+inttostr(i)) as TpopupmenuItem).OnMeasureItem:=N1MeasureItem; end; Имя функций которые присваиваю обычно задаю следующим образом: сначала создаю функцию для одного объекта, потом у этого объекта убираю связь, а имя что-то типа PopupMenuDrawItems и это имя ставлю как у самой присваиваемой функции, так и выше где она объявлена. P.S. код писал "на коленке", прям в браузере так что возможны ошибки. Я надеюсь понятно написал, если нет спрашивайте. |
| Автор: Proxin 27.5.2010, 09:50 |
| это прекрасно знаю. но как сделать цивилизованный способ отрисовки без div-ов и прочего? |