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

Вниз

Glyph для GrushButton   Найти похожие ветки 

 
Trible   (2007-02-28 10:36) [0]

Пытаюсь назначить глиф для GrushButton, пишу в KOLForm.onShow:

procedure TMainForm.KOLFormShow(Sender: PObj);
var Glyph: PBitmap;
begin
Glyph := NewDIBBitMap(0, 0, pfCustom);
Glyph.LoadFromResourceName(hInstance, "REFRESH");
Glyph.HandleType := bmDDB;
RefreshBtn.All_GlyphBitmap:= Glyph;
Glyph.Free;
end;

Но при запуске ничего не происходит (глиф не назначается). Как правильно назначить глиф для GrushButton?

p.s. ресурс битмапа, который я пытаюсь назначить глифом - существует, Glyph.SaveToFile работает :)


 
Trible   (2007-02-28 10:40) [1]

Что самое интересное, в проекте на "чистом" KOL все работает:

program GrushTest;
uses
 windows, kol, KOLGRushControls;

var Form: PControl;
   Glyph: PBitmap;
   Button: PGRushControl;
{$R Graphics.res}

begin
   Form := NewForm(nil, "Demo Application");
   Glyph := NewDIBBitMap(0, 0, pfCustom);
   Glyph.LoadFromResourceName(hInstance, "REFRESH");
   Glyph.HandleType := bmDDB;
   Button := NewGRushButton(Form, "Text");
   Button.All_GlyphBitmap := Glyph;
   Glyph.Free;
   Run(Form);
end.

Проблема - сделать средствами МСК то же самое.


 
mdv   (2007-02-28 12:12) [2]

Вот рабочий кусок выдернул, поиграйся со свойствами *Gliph*, у меня тоже были какие-то проблемы, при создании кнопки именно в MCK, сответственно пришлось руками выставлять свойства.

......
   FLogoBitmaps:= NewDIBBitmap(152*Journals.Count, 60, pf24bit);
....
   btnJournals.All_GlyphBitmap:= FLogoBitmaps;
   btnJournals.All_DrawGlyph:= True;
   btnJournals.All_GlyphWidth:= 152;
   btnJournals.All_GlyphHeight:= 60;
   btnJournals.All_GlyphItemX:= N; //номер куска битмара, всего их Journals.Count
.....


 
Trible   (2007-02-28 13:31) [3]


> Вот рабочий кусок выдернул, поиграйся со свойствами *Gliph*,
>  у меня тоже были какие-то проблемы, при создании кнопки
> именно в MCK, сответственно пришлось руками выставлять свойства.

procedure TMainForm.KOLFormShow(Sender: PObj);
var Bmp: PBitmap;
begin
Bmp:= NewDIBBitmap(24, 24, pf24bit);
Bmp.LoadFromResourceName( hInstance, "REFRESH" );
RefreshBtn.All_GlyphBitmap:= Bmp;
RefreshBtn.All_DrawGlyph:= True;
RefreshBtn.All_GlyphWidth:= 24;
RefreshBtn.All_GlyphHeight:= 24;
RefreshBtn.All_GlyphItemX:= 1;
Bmp.Free;
end;

Для моего случая (одна кнопка, глиф 24х24, в битмапе одно изображение 24х24) - не работает :( Буду смотреть еще.


 
Psychedelic ©   (2007-02-28 13:57) [4]

Было что то подобное, кинул новую кнопку и на нее назначил. Разбиратся ж неохота.


 
Trible   (2007-02-28 14:14) [5]


> Было что то подобное, кинул новую кнопку и на нее назначил.
>  Разбиратся ж неохота.

Как ни странно, помогает такой способ: создаем GrushButton, пробуем глиф на нем. Если глиф не назначается, убиваем созданную кнопку и создаем ее заново. И так до тех пор, пока очередной GrushButton не цепляет глиф :) Я не знаю, в чем там дело (т.к. все экземпляры GrushButton одинаковы). И еще: даже при таком раскладе глиф не назначается кнопке сразу, а появляется только после ее перерисовки. Лечится с помощью GrushButton.Invalidate.

p.s. Проблемы возникают только в МСК, в чистом KOL все ровно.


 
Trible   (2007-02-28 14:23) [6]

И еще проблема может быть из-за размеров кнопки: если размеры глифа с границами глифа на кнопке по высоте больше, чем кнопка, то он просто не отображается. Лучше было бы, если б он хотя бы частично отображался ...


 
homm ©   (2007-02-28 15:06) [7]

> Лучше было бы, если б он хотя бы частично отображался ...
Угу, кому-то понадобится отображать до упора глиф, кому-то до рамки поднмать, там обрезать, а кому-то до сontentoffsets только. Еще куча свойств нужна будет :) (и так уж не заню на сколько правильно их СТОЛЬКО было плодить) Нет уж!  рещил что скрывается, значит будет скрыватся. В конце концов так оно намного притнее смотртися при изсменении размеров. Кстати можешь выставить сontentoffsets глубоко отрицательными (о чем я не раз говорил), тогда глиф тоже будет скрыватся, но только когда уйдет далеко за края контрола. Но только учти, что текст тоже поплывет в зависимости от того, как он выровнен.


 
имя   (2007-08-08 22:40) [8]

Удалено модератором


 
имя   (2007-10-03 08:44) [9]

Удалено модератором



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

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

Наверх





Память: 0.46 MB
Время: 0.007 c
15-1210961167
@!!ex
2008-05-16 22:06
2008.07.13
Как писать на С++, а не на Дельфи?


15-1212046676
Azize
2008-05-29 11:37
2008.07.13
GeForse vs ATI


15-1211963337
Dmitry S
2008-05-28 12:28
2008.07.13
jack128


15-1211959878
Azize
2008-05-28 11:31
2008.07.13
Веб-сайты, которые изменили мир. Топ-15


15-1211878733
Dmitry S
2008-05-27 12:58
2008.07.13
Ширина IPicture в пикселях





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