Текущий архив: 2006.09.03;
Скачать: CL | DM;
Вниз
MainMenu в любой позиции формы Найти похожие ветки
← →
Igor_thief (2006-07-18 13:09) [0]Как зделать так, чтобы главное меню было расположено не в самом верху формы, а в любой позиции формы?
Была идея бросить на форму тулбар и установить значение свойства меню равным нужному нам меню меню, но тул бар в качестве основных пунктов меню создает кнопки, что не есть хорошо для меня.
← →
Loginov Dmitry © (2006-07-18 15:04) [1]> тул бар в качестве основных пунктов меню создает кнопки,
> что не есть хорошо для меня
А что в этом плохого?
← →
Чапаев © (2006-07-18 15:34) [2]
> А что в этом плохого?
То, что меню будет "плоским", одноуровневым?
← →
Igor_thief (2006-07-18 15:34) [3]
> А что в этом плохого?
А то, что я не могу придать этому всему нужный вид. К канве тулбара я то могу достучаться, но вот как перерисовать те кнопки, которые тулбар создает автоматом я не знаю. Вот что в этом плохого!
Может вы знаете?
← →
Jeer © (2006-07-18 16:05) [4]Можно заняться, например, основной функциональностью - вероятно, это гораздо полезнее, чем "рюшечки"
← →
Loginov Dmitry © (2006-07-18 16:05) [5]> То, что меню будет "плоским", одноуровневым?
С чего бы это?
← →
Лапыч © (2006-07-18 16:12) [6]Может быть положить на панель метку, при наведении курсора соответствующим образом менять ее вид, а по клику вызывать всплывающее меню в позиции под меткой? Сердито, зато дешево.
← →
Igor_thief (2006-07-18 16:17) [7]
> Можно заняться, например, основной функциональностью - вероятно,
> это гораздо полезнее, чем "рюшечки"
Расмешил! Неужели ты думаешь, что я сначала отрабатываю интерфейс, а потом работаю над функциональностью? Мог бы просто промолчать, вместо того чтобы говорить глупости! ;)
Вся функциональность уже готова. Осталось только оформить интерфейс как надо. А надо чтобы главное меню было не там где всегда, а другом, конкретном месте. Дело в том, что интерфейс делается со скинами! Вот из-за этого и надо поизвращаться с меню. Уж больно неохота делать новый компонет.
Я попробывал юзать Toolbar2000. Классно спавляется с поставленной задачей, но отсутсвует даже банальный OnPaint!
← →
Igor_thief (2006-07-18 16:19) [8]
> Может быть положить на панель метку, при наведении курсора
> соответствующим образом менять ее вид, а по клику вызывать
> всплывающее меню в позиции под меткой? Сердито, зато дешево.
>
Была похожая идея, но при помощи меток и попапменю практически нериально сделать идентичный функционал с MainMenu. Дело в том, что когда попаменю уже показано, то все остальные события не обрабатываются (например наезд мышкой на другой лабел). Таймер даже не предлогать!
← →
Loginov Dmitry © (2006-07-18 16:23) [9]Может это:
procedure TForm1.ToolBar1CustomDrawButton(Sender: TToolBar;
Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
var
Rct: TRect;
begin
TToolBar(Sender).Canvas.Brush.Color := RGB(Random(255),Random(255),Random(255));
Rct := Button.ClientRect;
Rct.TopLeft := TToolBar(Sender).ScreenToClient(Button.ClientToScreen(Rct.TopLeft));
Rct.BottomRight := TToolBar(Sender).ScreenToClient(Button.ClientToScreen(Rct.BottomRight));
TToolBar(Sender).Canvas.FillRect(Rct);
end;
← →
Cardinal © (2006-07-18 16:26) [10]Я бы положил на свой тулбар speedbutton, flat = true. При соответствующей height она будет смотреться как менюшка. А по нажатию показывать popupmenu в нужной позиции.
← →
Jeer © (2006-07-18 16:36) [11]Igor_thief (18.07.06 16:17) [7]
Очень часто правильно спроектированный интерфейс подсказывает особенности нужной функциональность.
Впрочем, как понял, тебе нужны "рюшечки".
Игры продолжаются.
← →
Igor_thief (2006-07-18 16:47) [12]>>Впрочем, как понял, тебе нужны "рюшечки".
>>Игры продолжаются.
Правильно понял!procedure TForm1.ToolBar1CustomDrawButton(Sender: TToolBar;
Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
var
Rct: TRect;
begin
TToolBar(Sender).Canvas.Brush.Color := RGB(Random(255),Random(255),Random(255));
Rct := Button.ClientRect;
Rct.TopLeft := TToolBar(Sender).ScreenToClient(Button.ClientToScreen(Rct.TopLeft));
Rct.BottomRight := TToolBar(Sender).ScreenToClient(Button.ClientToScreen(Rct.BottomRight));
TToolBar(Sender).Canvas.FillRect(Rct);
end;
Код работает! Я тоже что-то подобное делал. Вся проблема заключается в том, что надо сменить вид главного пункта меню (тот из которого выпадает меню), во время выпада меню и чтобы вид оставался таким же до сворачивания или перехода на другой "главный" пункт меню. Смотрим скриншот:http://www.igor-thief.pisem.net/1.jpg
Второе: когда происходит переход с одного главного пункта меню на другой, то автоматически выделяется первый подчененный пункт, несмотря даже на то, что он дисаблед! Ну это же не подход, согласитесь? Разве меню должно так работать?
← →
Loginov Dmitry © (2006-07-18 16:50) [13]> Я бы положил на свой тулбар speedbutton, flat = true. При
> соответствующей height она будет смотреться как менюшка.
> А по нажатию показывать popupmenu в нужной позиции.
Зачем мудрить, не пойму. ToolBar поддерживает вывод пунктов меню. Плавающее меню видели? Это обычный ToolBar.
← →
Loginov Dmitry © (2006-07-18 16:50) [14]> Это обычный ToolBar.
На ControlBar"e
← →
Igor_thief (2006-07-18 16:51) [15]Да,
procedure TForm1.ToolBar1CustomDrawButton(Sender: TToolBar;
Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
var
Rct: TRect;
begin
TToolBar(Sender).Canvas.Brush.Color := RGB(Random(255),Random(255),Random(255));
Rct := Button.ClientRect;
Rct.TopLeft := TToolBar(Sender).ScreenToClient(Button.ClientToScreen(Rct.TopLeft));
Rct.BottomRight := TToolBar(Sender).ScreenToClient(Button.ClientToScreen(Rct.BottomRight));
TToolBar(Sender).Canvas.FillRect(Rct);
end;
Выделенные жирным строки являются лишними. Достаточно сделать так:begin
TToolBar(Sender).Canvas.Brush.Color := RGB(Random(255),Random(255),Random(255));
TToolBar(Sender).Canvas.FillRect(Button.BoundsRect);
end;
← →
Igor_thief (2006-07-18 16:55) [16]Зачем мудрить, не пойму. ToolBar поддерживает вывод пунктов меню. Плавающее меню видели? Это обычный ToolBar.
Поясняю! Мне надо сделать так, чтобы меню было выведено в нужном месте и имело спец. вид, ибо приложение делается с поддрежкой скинов. В конце поста будет ссылка на приблезительный вид окна. Место для меню там явно видно!
На ControlBar"e
Через 2 минуты покажу что мы получаем когда используем КонтролБар.
Скин: http://www.igor-thief.pisem.net/full_interface.png
← →
Loginov Dmitry © (2006-07-18 16:56) [17]Каждую задачу всегда можно решить разными способами, и не всегда самый удачный способ является очевидным.
← →
Loginov Dmitry © (2006-07-18 16:58) [18]> Loginov Dmitry © (18.07.06 16:56) [17]
Это к [15]
← →
имя (2006-07-18 17:10) [19]Удалено модератором
← →
Igor_thief (2006-07-18 17:18) [20]Удалено модератором
Примечание: Оффтоп...
← →
Игорь Шевченко © (2006-07-18 17:26) [21]
> Ведь преятнее работать с приложеним у которого красивый
> внешний вид, чем с приложеним сделаным в дико-сьандартных-
> серых тонах!
Не мучай пользователя. С приложением надо работать, а не любоваться на него. Для этого существуют музеи и прочие выставки.
← →
Котик Б (2006-07-18 17:37) [22]>Красота требует жертв
- Красота требует жертв - сказал палач и отрубил Марии-Антуанетте голову...
PS: Бедный юзверь и не догадывается, какие усилия нужно приложить, чтобы засунуть главное меню в ...
← →
Igor_thief (2006-07-18 17:41) [23]Не мучай пользователя. С приложением надо работать, а не любоваться на него. Для этого существуют музеи и прочие выставки.
Ну я уже раз сказал, что с красивым приложением работать гораздо приятнее чем с некрасивым. Обсуждению не подлежит!
← →
Loginov Dmitry © (2006-07-18 17:43) [24]>[12] Второе: когда происходит переход с одного главного пункта
> меню на другой, то автоматически выделяется первый подчененный
> пункт, несмотря даже на то, что он дисаблед! Ну это же не
> подход, согласитесь? Разве меню должно так работать?
Ну здесь разработчики TToolBar явно накасячили. Не хочешь создавать компонент - копайся в глубинах VCL, глядишь - найдешь, где бага.
← →
Igor_thief (2006-07-18 17:44) [25]Удалено модератором
← →
Igor_thief (2006-07-18 17:46) [26]Ну здесь разработчики TToolBar явно накасячили. Не хочешь создавать компонент - копайся в глубинах VCL, глядишь - найдешь, где бага.
Этим сейчас и занимаюсь.
Паралельно ищу варианты по-проще :)
← →
Igor_thief (2006-07-18 18:07) [27]http://www.igor-thief.pisem.net/2.jpg - Это резульат, который мне удается получить когда я любой компонент "засовую" в КонтролБар. Если бы удалось убрать окантовку вокруг панели и полоску, за которую можно тягать, то было бы неплохо!
Хотя это не решит проблемы! Мне ведь надо засунуть туда именно МэинМену, а не что-то другое. Ой чувсвую что придется сегодня конкретно разбираться с исходниками Toolbar2000. :(
← →
Leonid Troyanovsky © (2006-07-18 20:05) [28]Удалено модератором
← →
Игорь Шевченко © (2006-07-18 22:43) [29]
> Ну я уже раз сказал, что с красивым приложением работать
> гораздо приятнее чем с некрасивым. Обсуждению не подлежит!
>
Ну раз сказал, то парься...
Ты пойми одно - нагромождая код ради "красивостей" ты неизбежно вносишь ошибки, оно сильно надо ?
← →
Ketmar © (2006-07-18 23:29) [30]ага. а потом имеем программы, в которых на 50 кил функционала и на три метра скинов. причём -- скины у всех программ разные. все битмаповые. все ресурсов хотят. ни один ни на что нормальное не похож.
по моим наблюдениям, после такого пользователю очень хочется встретить автора где-то в тёмном переулке. и позвать ещё десток-другой таких же удовлетворённых "креатиффом" бедняг.
← →
Igor_thief (2006-07-19 10:12) [31]Ты пойми одно - нагромождая код ради "красивостей" ты неизбежно вносишь ошибки, оно сильно надо ?
Ну, выбрав слово "неизбежно", вы конечно переборщили!
Ketmar, Ketmar.
ага. а потом имеем программы, в которых на 50 кил функционала и на три метра скинов. причём -- скины у всех программ разные. все битмаповые. все ресурсов хотят. ни один ни на что нормальное не похож.
Ну почемуб если что-то плохоеб то его надо приподносить ну прям как аксиому?
Не волнуйся ты так! Программа как со скинами, так и без них не будет весить 3 метра. И даже 2 не будет.
по моим наблюдениям, после такого пользователю очень хочется встретить автора где-то в тёмном переулке. и позвать ещё десток-другой таких же удовлетворённых "креатиффом" бедняг.
Я не хочу никого обидить, но складывается впечатление, что такой пользователь очень много времени проводит за игранием шутеров, и поэтому у него сложилась тенденция думать, что если ему что-то в чем-то не нравится то надо в объязательном порядке кого-то найти и разстрелять. Неужели нельзя подумать в другом направлении? Неужели нельзя сесть и поискать в инете аналог программы, который может понравиться больше? Ну и наконецб мы же на форуме программистов и не в разделе потрепаться, так что если кому-то что-то не нравится в чужой реализации, то всегда можно написать свою! Да и незабывай, что если человек программист, то это не значит что он не может хорошенько дать отпор в том же темном переулке так, что еще сам еле ноги унесешь (если унесешь).
Ну и для сравнения. Тот же Майкрософт изменил внешний вид Офиса, чем сделал его более удобным в использовании (кстатииб функционал от скинов не пострадал совсем). Но первый вариант внешнего вида был дико серый (кто знает - тот знает), следовательно, разработчки просто поменяли гамму и подумали, - "А может и эта гамма кому-то не понравится!" и добавили пользователю возможность выбирать!
← →
Игорь Шевченко © (2006-07-19 10:26) [32]Igor_thief (19.07.06 10:12) [31]
> Тот же Майкрософт изменил внешний вид Офиса, чем сделал
> его более удобным в использовании (кстатииб функционал от
> скинов не пострадал совсем).
А что за скины в офисе ?
> Ну, выбрав слово "неизбежно", вы конечно переборщили!
Любая лишняя строка кода - источник ошибок.
← →
Igor_thief (2006-07-19 10:36) [33]А что за скины в офисе ?
MS Office 2007. Это не совсем скины. Просто классно переделаный внешний вид.
Любая лишняя строка кода - источник ошибок.
Ой, да перестаньте! :))
← →
Игорь Шевченко © (2006-07-19 10:37) [34]Igor_thief (19.07.06 10:36) [33]
> Ой, да перестаньте! :))
Не веришь мне - почитай умные книжки, Брукса или Фаулера.
← →
Igor_thief (2006-07-19 12:17) [35]http://officeblogs.net/UI/ThreeThemes.jpg
← →
REA (2006-07-19 16:13) [36]Ну тогда тебе меню совсем не надо - в новом офисе его нет :)
← →
Ketmar © (2006-07-19 16:31) [37]>Igor_thief (19.07.06 10:12) [31]
какой поток сознания... а главное -- как не в тему весь. %-)
← →
Мальвина (2006-07-19 17:32) [38]
> Igor_thief (19.07.06 12:17) [35]
> http://officeblogs.net/UI/ThreeThemes.jpg
Ухтышка какая прелесть :) - у меня в Опере тоже подобная тема была... полчаса...
← →
antonn © (2006-07-19 17:37) [39]Igor_thief
да ладно распаляться, здесь многие не любят нестандартный интерфейс. Может от того, что вкуса нет (просто не могут качественно подобрать цвета и пропорции, представить законченый образ ГУИ и прочее, проще всех убеждать, что стандартный интерфейс лучше). А может от того, что не пользовались заскинованным приложением (ну не нужно было), и по привычке считают, что лучше тот, которым все время пользовались. А может от того, что книжек умных начитались, в которых "дефолтный" интерфейс рассматривался для "сложных" приложений (типа CAD, а не плеер, например), и под впечатлением предлагают все "одефолтить". Или книжки были старые... Или просто узкий кругозор, и не знают, что программы бывают разные...
← →
Котик Б (2006-07-19 17:43) [40]
> antonn © (19.07.06 17:37) [39]
> Igor_thief
> да ладно распаляться, здесь многие не любят нестандартный
> интерфейс. Может от того, что вкуса нет (просто не могут
>
Свои предположения оставьте при себе...
Страницы: 1 2 вся ветка
Текущий архив: 2006.09.03;
Скачать: CL | DM;
Память: 0.56 MB
Время: 0.027 c