Forum Replies Created
-
AuthorPosts
-
FeLDMaRShaLParticipant'Support' wrote:
Посмотрите, мне кажется эта тема похожа…
Оказывается я плохо искал по форуму. Спасибо за ссылку!
Да тема мне близка, воспользовался вашим советом в той теме, но обнаружил баг
Пытаюсь изменить цвет фона вот так (сразу после кода создания вкладки):
Code:SkinData := TsCommonData(cf.RichViewEdit1.Perform(SM_ALPHACMD, MakeWParam(0, sMessages.AC_GETSKINDATA), 0));
if SkinData <> nil then
SkinData.SkinSection := 'MYRICH';где cf – динамически созданная вкладка у TsPageControla, RichViewEdit1 – компонент у которого надо цвет фона поменять.
Ну так вот, если данная вкладка не активная то SkinData, будет равен nil, соответственно цвет фона не изменится (как показывают опыты она должна быть не только активна, но еще и визуально отображаться, т.е. если мы RichViewEdit1 создадим с Visible=false, то SkinData также будет равна nil).
Как быть в этом случае?
P.S. прикладываю пример(более упрощенный чем прошлый раз) + exe файл, в котором одна кнопка перед созданием 5 вкладок делает их активными(и код срабатывает нормально), а в теле процедуры второй кнопки строчка изменяющая активную вкладку закомментирована, и фон не меняется из за этого.
FeLDMaRShaLParticipantАп
FeLDMaRShaLParticipantАп
FeLDMaRShaLParticipantВопрос актуален. В принципе я понимаю почему компонент ведет себя именно так (по сути он изменяет цвет фона на тот, который установлен у него, правда мне тогда не понятно почему у скина Nautilus в этом случае фон не меняется на черный). Может мне нужно где то в исходниках компонента убрать какоенибуть свойство?
FeLDMaRShaLParticipantВопрос актуален. Может мне какой то другой необходимо использовать метод чтобы загрузить картинку в кнопку?
FeLDMaRShaLParticipantКак временный вариант изменяю цвет фона вот так:
Code:RichViewEdit.Color := clWhiteНо делаю это каждый раз после создания новой вкладки(в той программе которую я представил как демку).
Т.е. поясню подробнее в чем проблема. Почему то AC при компиляции проекта (наверно в момент скинезауии) меняют у компонента TRichViewEdit свойство Color. И мне приходится его вручную изменять снова на clWhite.
P.S. это свойство может измениться только если компонент сейчас видимый. Если он не видим (Visible=False) то свойство остается без изменения.
FeLDMaRShaLParticipant'Torbins' wrote:Выдрать из скина любой графический элемент не сложно. И на сайте в разделе демок и на форуме выкладывались примеры.
На тот момент я вас не понял, я думал вы мне предлагаете вручную поправить все скины.
'Support' wrote:Возможно, этот пример пригодится : http://www.alphaskins.com/sfiles/demos/extractimage.zip
Да, это именно то, что мне было нужно!
Но проблемма, почемуто у меня не получается воспризвести данный пример применительно к моей задаче (сделать кнопку, которая будет выглядить точно также как кнопка свернуть)
Пытаюсь вот так, где я ошибся:
Code:procedure TForm1.MyPaint();
var
ImageHeight: integer;
begin
ImageIndex := sSkinManager1.GetMaskIndex(sSkinManager1.ConstData.IndexGlobalInfo, s_GlobalInfo, sComboBox1.Text);
if ImageIndex > -1 then begin
DrawSkinGlyph(sSkinProvider1.TitleButtons.Items[0].Glyph, Point(0, 0), 0 , 1, sSkinManager1.ma[ImageIndex] , MakeCacheInfo(sSkinProvider1.TitleButtons.Items[0].Glyph));
DrawSkinGlyph(sSkinProvider1.TitleButtons.Items[0].Glyph, Point(0, 0), 1 , 1, sSkinManager1.ma[ImageIndex] , MakeCacheInfo(sSkinProvider1.TitleButtons.Items[0].Glyph));
DrawSkinGlyph(sSkinProvider1.TitleButtons.Items[0].Glyph, Point(0, 0), 2 , 1, sSkinManager1.ma[ImageIndex] , MakeCacheInfo(sSkinProvider1.TitleButtons.Items[0].Glyph));
end;
end;FeLDMaRShaLParticipantУвидел новый билд скиновых компонентов, где в истории изменения указаны исправления по моим вопросам в компоненте RichViewEdit. Может для устранения моей последней проблемы нужно всего лишь обновить версию скин компонентов?
FeLDMaRShaLParticipantОгромное спасибо за помощь. Но я опять со своими помидорами.
Есть скины которые правильно отображают мой компонент, а есть которые не совсем так как я хочу. Но таких скинов не так уж и много, поэтому было принято решение немного исправить существующие Ваши скины. Но проблемы в том что я не могу найти нужную секцию которую надо править у скинов.
К топику прикладываю пример (такой же как прошлый раз), на котором есть кнопка смены скина (в проекте применяются скины FalloutStyle.asz и Nautilus.asz).
Оба скина имеют Черную секцию “Edit” но у второго скина основная часть компонента остается белой, а у первого она меняется на черный цвет.
Не могли бы Вы мне подсказать где и что мне поменять у скина FalloutStyle.asz, чтобы область редактирования у компонента RichViewEdit была такой же как и у скина Nautilus.asz.
FeLDMaRShaLParticipantЕще одинбаг всплал. Теперь я справо от компонента RichViewEdit расположил родной скиновый компонент TsScrollBar (как временное решение пытался через него произвести отображение полосы прокрутки).
Но вот в чем загвоздка, как только я заставляю компонент изменять свойство Position, как сама полоса теряет отрисовку скина, и до тех пор пока я не наведу (просто наведу) хотябы 1 раз мышку на этот компонент.
P.S. для того чтобы воспроизвести данный баг, необходимо сначала создать вкладку (кнопка Add Page), потом подвести мышку на компонент и покрутить колесиком верх/вниз.
P.S. мышка не должна случайно попасть ан компонент скролбара, иначе баг прекращяется.
P.S. использую Windows7.
FeLDMaRShaLParticipantПопробовал еще вариант (все в этом же событи скин провайдера)
Code:SkinSection := sScrollBar1.SkinData.SkinSection;Визуально скролбар нужного компонента немного изменился, но не скинизировался, а просто стал квадратным и еще более не красивый чем стандартный(хоть и немного от него стал отличаться), я тут подумал, может я не ту секцию какунибуть указываю.
FeLDMaRShaLParticipantПопробовал использовать событие:
Code:procedure TForm1.sSkinProvider1SkinItem(Item: TComponent;
var CanBeAdded: Boolean; var SkinSection: string);
begin
if Item.Name = 'qwert' then
begin
SkinSection := 'MYEDIT';
CanBeAdded := True;
end;
end;Но после долгих и упорных размышлений, пришел к выводу что изменять все скины это будет проблематично, так как это будет не решением проблемы, а лишь скрытие от глаз (+ при каждом новом обновлении данную операцию придется проделывать заново). Остается надежда на администраторов/модераторов, у которых получится воспроизвести вышеупомянутый баг (на Windows7), и в ближайших релизах можно будет увидеть правильно работающий компонент.
FeLDMaRShaLParticipantНемного не понял. Создать секцию вот так как на скриншоте:
И второй вопрос, каким образом на стороннем компоненте можно прописать использовать именно эту секцию за место стандартной?
Если не сложно, то можно ли по пальцам расписать как это сделать, или дать ссылку на мануал по этому дело(я ни на сайте ни на форуме ненашел ничего подобного, или возможно не так искал)
P.S. можно показать на примере sRichView – компонент входящий в состав AC (я так понимаю принцип будет схожий)
FeLDMaRShaLParticipantЕсли не затруднит, то можно ли поподробнее с этим вариантом, а то я не совсем Вас понял.
FeLDMaRShaLParticipantКстати, если кого не затруднит, может ктонибуть скажет как пользоваться AlphaSkinsEditorom. Мне нужно чтобы у компонента sRishView фон стал белым(прозрачным).
Открываю например скин Terminal4bit, захожу в пункт Sections, выбираю пункт EditControls, далее выбираю пункт Edit, там изменяю свойство Color на белый цвет, а он мне меняет все компоненты. Как сделать так, чтобы был изменен только фон у компонента SRichView? (это будет запасной вариант, если с тем что я озвучил в предыдущем посте не получится)
FeLDMaRShaLParticipant'Mike' wrote:Если имеется возможность использовать отредактированный скин, то сделайте новую секцию на основе стандартной Edit и в ней измените фон на белый. Если нужен Glowing и т.п. – добавьте новую секцию во все разделы, где присутствует Edit.
Хм, т.е. Вы предлагаете после каждого обновления AC, скачивать новые скины, и каждый скин (в программе пользователю доступны все скины) каждый раз править? В принципе это вариант, но как-то он мне не сильно устраивает, хоть возможно и подойдет.
А можно ли какнибуть сделать так, чтобы у компонента TsSkinManager, у свойства ThirdPaty добавить еще один пункт в “Type of skin”, назвать его например MyGrid, который будет точно такой же как Grid, за исключением того, что он не будет закрашивать фон?
Или есть ли возможность гденибуть подправить и изменить стандартный тип Grid?
FeLDMaRShaLParticipantДома поэкспериментирую, вечером отпишусь о результатах.
FeLDMaRShaLParticipantДействительно, один и тотже ехе файл ведет себя по разному. У меня тоже (на виртуальной машине) на Windows XP sp3 данный баг не задетектился. Но стабильно детектится на Windows7.
С учетом Вашего опыта, а также вышесказанного следует возможный вывод что только на Windows7 наблюдается это бедствие.
FeLDMaRShaLParticipantПопробовал (раньше о ней не знал, не доводилось пользоваться), довольно удобное свойство. Но у меня не получилось сделать кнопку минимизации, которая будет выглядит как родная кнопка минимизации в заскинованном виде. Если есть какиенибуть идеи, как можно это реализовать буду очень признателен если их озвучат.
Но самое главное, что при определенных скинах данная кнопка не рисуется, т.е. ее визуально не видно, причем таких скинов довольно много (например, Terminal4bit)
FeLDMaRShaLParticipantХинт скрыть – довольно просто.
Из моего примера можно сделать например вот так: в конце метода OnGetHint мы можем дописать пару строчек. Например вот таких
Code:MyHint := HintText
HintText := ''Где MyHint – какая то глобальная переменная. И сразу после этих строк вызвать Ваш хинт, который будет содержать этот самый MyHint в качестве хинта.
Следовательно вопрос, какой командой можно вызвать Ваш хинт, зная текст хинта, а также координаты местоположения мышки. (Из этих координат необходимо чтоб Ваш хинт брал начало).
-
AuthorPosts