Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.56 MB
Время: 0.027 c
3-1151188021
wardoc
2006-06-25 02:27
2006.09.03
транзакции в распределенной БД


2-1155202342
ArtemESC
2006-08-10 13:32
2006.09.03
PopupMenu


1-1152178849
oxffff
2006-07-06 13:40
2006.09.03
Вопрос по custom variant


15-1155099866
KygECHuK
2006-08-09 09:04
2006.09.03
UPX


15-1155286578
Furyz
2006-08-11 12:56
2006.09.03
PHP MP3 DB FREE ENGINE FOR MYSQL




   Наверх