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

Вниз

Toolbar. Flat. XP. Чернота.   Найти похожие ветки 

 
Grom PE ©   (2006-03-30 06:30) [0]

Вот решил посмотреть, как очередная моя программа на XP выглядит, запустил - тулбар черный весь.
Что за дела?
В другой моей программе с тулбаром все ок, свойства FixFlatXP не стоит.

В "больной" программе:
Если включаю FixFlatXP - Черноты нет, но кнопки становятся по-уродски широкими.
Если выключаю Flat - Черноты нет, но исчезают разделители, а в 98 некрасиво выглядит.

Сравнил свойства тулбаров в той и этой программе - один в один.

Единственное различие - это то, что в одной проге тулбар алигнится прямиком на форме, а во второй - на TabControl.

Помогите пожалуйста разобраться, а то застопорился на одном и все.


 
ecm ©   (2006-03-30 11:41) [1]

Попробуйте

Toolbar1.Style := Toolbar1.Style or WS_EX_CLIENTEDGE;


 
Grom PE ©   (2006-03-30 13:35) [2]

Большое спасибо!
Честное слово, чтобы я без вас делал! ;)


 
ECM ©   (2006-03-30 15:00) [3]

Сам когда-то задавал этот вопрос в этом форуме...в 2003 - ветка давно ушла в архив :)
Так этот вопрос до конца, по моему, и не прояснился ...
Вообще-то страннно присваивать WS_EX_... для Style - эти константы для ExStyle.
Это решение предложил тогда Bmouradov - ему и спасибо


 
Vladimir Kladov   (2006-03-30 17:08) [4]

WS_EX_CLIENTEDGE = $200
и TBSTYLE_WRAPABLE        = $0200;
Сообеветствует опции tboWrapable, можете попробовать.


 
ECM ©   (2006-03-30 17:29) [5]

я-я
:))


 
Grom PE ©   (2006-03-30 19:21) [6]

Хм.. Как я понимаю, FixFlatXP как раз и выставляет TBSTYLE_WRAPABLE.
Но почему он заодно и кнопки растягивает?


 
Grom PE ©   (2006-03-30 19:37) [7]

Вот еще странность - в коде FormCreate пишу
toolbar1.style:=toolbar1.style or tbstyle_wrapable;
Все ОК.
А если еще к этому я включу в опциях tboWrapable, то опять чернота!
Да и без кода - тоже чернота.
Что-то странное происходит, хорошо хоть есть решение.


 
Vladimir Kladov   (2006-03-31 19:28) [8]

опять какие-то глюки, как со скроллбаром. Надо смотреть, разбираться.


 
ECM ©   (2006-04-01 15:04) [9]

Посидел тут пару часов над этой проблемой. Тут ИМХО имеет место быть следующее - стили TBSTYLE_FLAT и TBSTYLE_TRANSPARENT нельзя задавать при создании окна (в текущей версии это есть). Они обязательно должны устанавливаться после создания окна при помощи SetWindowLong (SetStyle), но обязательно до отображения окна.
Косвенное подтверждение этому можно найти например здесь
http://www.rsdn.ru/Forum/Message/119707.htm
Ну и в MSDN есть намеки на возможную неадекватную отрисовку для TBSTYLE_FLAT и TBSTYLE_TRANSPARENT:

To prevent repainting problems, this style should be set before the toolbar control becomes visible.  

Хотя обнаружить там намеки на то что эти стили должны устанавливаться именно через SetWindowLong - мне не удалось :(
Надо бы посмотреть как этот стиль задается в VCL.
Но пока проблема полностью устраняется (ИМХО - насколько смог - протестировал ) если сделать сл. исправления в функции NewToolBar:

function NewToolbar( AParent: PControl; Align: TControlAlign; Options: TToolbarOptions;
                    Bitmap: HBitmap; const Buttons: array of PChar;
                    const BtnImgIdxArray: array of Integer ) : PControl;
var Flags: DWORD;
begin
...
 Result := _NewCommonControl( AParent, TOOLBARCLASSNAME,
        (ToolbarAligns[ Align ] or WS_CHILD or WS_VISIBLE or TBSTYLE_TOOLTIPS or Flags  and not (TBSTYLE_FLAT or TBSTYLE_TRANSPARENT)), {!ecm}
        tbo3DBorder in Options,  nil );
...
 Result.Perform( WM_SIZE, 0, 0 );
 Result.Style := Result.Style or Flags; {+ecm}
end;



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
1-1164205790
doncova1
2006-11-22 17:29
2007.01.14
нет полосы прокрутки


15-1166704781
Jeer
2006-12-21 15:39
2007.01.14
Users vs Mouse


15-1166631451
IMHO
2006-12-20 19:17
2007.01.14
"Война - войной, а обед - по расписанию"


2-1166698756
Gerda
2006-12-21 13:59
2007.01.14
Форма всегда на экране


15-1167024474
Slider007
2006-12-25 08:27
2007.01.14
С днем рождения ! 23 декабря





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