Текущий архив: 2004.11.21;
Скачать: CL | DM;
ВнизЗамена Glyph на батоне Найти похожие ветки
← →
slaga © (2004-11-08 13:34) [0]Есть батон, мне надо что б при определенном действии на нем менялся Glyph, я это делаю так:
Дейсвие 1:
(ImageListAll набор картинок)
ImageListAll.GetBitmap(11, cxButton3.Glyph);
Дейсвие 2:
ImageListAll.GetBitmap(9, cxButton3.Glyph);
Но ничего не происходит.
А вот если сделать так:ImageListAll.GetBitmap(11, cxButton3.Glyph);
cxButton3.NumGlyphs := 2;
cxButton3.NumGlyphs := 1;
Тогда Glyph меняется. Но это ж неправильно :((
А как правильно ?
← →
KilkennyCat © (2004-11-08 13:41) [1]почему неправильно?
правильно так:
создается имажелист, закидываются в него картинки.
имажелист привязывается к объекту, в данном случае - кнопке.
каждая картинка имеет индекс.
у объекта есть свойство, указывающее индекс картинки в имажелисте.
смена этого индекса вызывает смену картинки.
← →
slaga © (2004-11-08 13:56) [2]Неа, у обычного батона нет индекса картинок:
cxButton3.NumGlyphs := 2;
Это только двигает картинку по батону, тем самым перересовывает ее и она меняется, но мне кажется что это бред, какое свойство надо перерисовать что б визуально поменялась картинка ?
← →
Sash © (2004-11-08 14:02) [3]2 slaga © (08.11.04 13:56) [2]
у обычного баттона вообще нет Glyph"ов, так что используй bitbtn
← →
KilkennyCat © (2004-11-08 14:05) [4]
> slaga © (08.11.04 13:56) [2]
Indicates the number of images that are in the graphic specified in the Glyph property.
Delphi syntax:
property NumGlyphs: TNumGlyphs;
Description
If you have multiple images in a bitmap, you must specify the number of images that are in the bitmap with the NumGlyphs property. The default value is 1.
это справка. Двигание, смена... это масляное масло, на мой взгляд. По-моему, я все верно описал, с точки зрения алгоритма.
← →
KilkennyCat © (2004-11-08 14:08) [5]ага... посмотрел внмательно. ну и что?
в данном случае, можно рассматривать глиф кнопки как имаджелист.
← →
KilkennyCat © (2004-11-08 14:09) [6]а нет изменений в первом варианте вероятно из-за того, что нет вызова перерисовки кнопки.
← →
KilkennyCat © (2004-11-08 14:12) [7]вообщем, я бы создал один длинный глиф, присвоил бы его всем кнопкам и двигал индексом. Если кнопок много и глиф большой, присваивание сделать программно, либо в ресурс вообще закинуть, с целью уменьшения веса екзешника.
← →
slaga © (2004-11-08 14:33) [8]ну мне бы лучше всетаки узнать что надо перерисовывать.
← →
KilkennyCat © (2004-11-08 14:36) [9]ImageListAll.GetBitmap(11, cxButton3.Glyph);
cxButton3.RePaint (или что-то там у нее, вообщем, перерисовка).
← →
slaga © (2004-11-08 17:47) [10]:)) если бы
← →
KilkennyCat © (2004-11-09 00:44) [11]неужели нету?
← →
KilkennyCat © (2004-11-09 00:46) [12]вот, из кулибы:
Иконка компонента является инкапсулированным объектом, требующим для хранения изображения некоторый участок памяти. Следовательно, при замене иконки, память, связанная с первоначальной иконкой, должна возвратиться в кучу, а для новой иконки требуется новое распределение памяти. По правилам Delphi, этим должен заниматься метод "Assign". Ниже приведен код всей процедуры замены иконки.
--------------------------------------------------------------------------------
implementation
{$R *.DFM}
var n: integer; // При инициализации программы данное значение будет равным нулю
procedure TForm1.Button1Click(Sender: TObject);
var Image: TBitmap;
begin // Изменение иконки в BitBtn1
Image:= TBitmap.Create;
if n < ImageList1.Count then
ImageList1.GetBitmap(n, Image);
{end if}
BitBtn1.Glyph.Assign(Image) // Примечание: Для изменения свойств объекта используется метод Assign
inc(n,2); // В данный момент кнопка содержит две иконки!
if n > ImageList1.Count then
n:= 0;
{end if}
Image.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin // добавляем новую иконку кнопки в список ImageList1
if OpenDialog1.Execute then
ImageList1.FileLoad(rtBitMap,OpenDialog1.FileName,clBtnFace);
label1.Caption:= "Количество иконок = " + IntToStr(ImageList1.Count);
end;
← →
slaga © (2004-11-09 16:42) [13]Спасибо :)
А что такое : "вот, из кулибы:", кто такой кулиба ?
← →
Amoeba © (2004-11-09 17:08) [14]
> slaga © (09.11.04 16:42) [13]
> Спасибо :)
>
> А что такое : "вот, из кулибы:", кто такой кулиба ?
Это советы по Delpi от В.Озерова в формате CHM. Можно скачать у А.Подгорецкого на http://www.podgoretsky.com/pascal.html
← →
slaga © (2004-11-09 17:19) [15]to Amoeba © (09.11.04 17:08) [14]
Спасибо большое :) буду читать.
Страницы: 1 вся ветка
Текущий архив: 2004.11.21;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.034 c