Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > буд-то бы живой тулбар :)


Автор: artemiy 7.11.2007, 15:52
На форме есть TPageControl, на TabSheet которого расположены несколько тулбаров. У PageСontrol'a все Anchors выставлены в true. Так вот при ресайзе формы один из тулбаров постепенно "сползает" влево...

Почему и как с этим бороться?

Автор: ivan219 7.11.2007, 17:25
Используй TabControl или на всех TabSheet ставь свои ToolBar

Автор: artemiy 7.11.2007, 17:46
Ставить тулбар на каждую страницу пробовал - не помогло... А вот использовать TabControl не получится, нужен именно PageControl

Автор: ivan219 8.11.2007, 14:19
Цитата(artemiy @  7.11.2007,  17:46 Найти цитируемый пост)
Ставить тулбар на каждую страницу пробовал - не помогло...

Интересно это почему smile покрайней мере с этой проблемой будет поконченно!!!

Автор: Alix 8.11.2007, 15:11
С этой проблемой не покончить даже если кинуть coolbar на форму, а не на pagecontrol. Меня заинтересовало то, что при удаленном XPMan все работает корректно и стал искать код, где используется GetComCtlVersion в ComCtrls. В итоге ошибка была найдена тут:
Код
function TCoolBar.GetCaptionSize(Band: TCoolBand): Integer;
...
      { The grip size in IE4 is 3 pixels narrower than IE3 }
      if GetComCtlVersion < ComCtlVersionIE4 then
        Inc(Result, GripSizeIE3)
      else
        Inc(Result, GripSizeIE4);

Исправить можно введя свою константу GripSizeIE5 (или 6?) со значением 6 (найдено экспериментальным путем, т.к. при GripSizeIE3 бары разьезжались, а при ***IE4 - сближались) и добавив еще одно условие.
Можешь кинуть в папку с программой пропатченый ComCtrls.pas и будет тебе счастье. 

PS: Я использовал D7.

Автор: ivan219 8.11.2007, 16:25
Хмм может тогда поробовать про абгрейдить Delphi smile 

Автор: artemiy 8.11.2007, 17:34
Спасибо, Alix!

Но видимо я где то туплю :( Я добавил 
Код

const GripSizeIE6: Integer = 6;

в ComCtrls.pas (так же пробовал const GripSizeIE5: Integer = 6;) и скинул этот файл в папку с проектом... Но ничего не происходит - тулбары как "ездили", так и "ездят"  smile  
Ты так же писал:
Цитата(Alix @  8.11.2007,  15:11 Найти цитируемый пост)
и добавив еще одно условие.

что за условие? может быть я как раз здесь туплю? smile

Автор: Alix 8.11.2007, 18:04
Цитата(artemiy @  8.11.2007,  17:34 Найти цитируемый пост)
что за условие? может быть я как раз здесь туплю? smile

наверное как-то так:
Код
      if GetComCtlVersion < ComCtlVersionIE4 then
        Inc(Result, GripSizeIE3)
      else if GetComCtlVersion = ComCtlVersionIE4 then
        Inc(Result, GripSizeIE4)
      else
        Inc(Result, GripSizeIE6);

Автор: artemiy 8.11.2007, 18:10
Alix,  smile 

Как говорится "Сэнкью вэри мач" smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)