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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.048 c
15-1155064788
ronyn
2006-08-08 23:19
2006.09.03
Доступ к файлу


15-1154854443
Kerk
2006-08-06 12:54
2006.09.03
Проблема с аськой


2-1155387231
learner
2006-08-12 16:53
2006.09.03
Помогите с геометрией начальной школы !


15-1154502103
Суслик
2006-08-02 11:01
2006.09.03
Удобный клиент для новостных групп (ищу)


15-1155287138
flad
2006-08-11 13:05
2006.09.03
Читать тексты(книги)на ДВД-проигрывателе?





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