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

Вниз

Замена Glyph на батоне   Найти похожие ветки 

 
slaga ©   (2004-11-08 13:34) [0]

Есть батон, мне надо что б при определенном действии на нем менялся Glyph, я это делаю так:

Дейсвие 1:
ImageListAll.GetBitmap(11, cxButton3.Glyph);
Дейсвие 2:
ImageListAll.GetBitmap(9, cxButton3.Glyph);
(ImageListAll набор картинок)

Но ничего не происходит.

А вот если сделать так:
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.034 c
14-1099130507
DelphiN!
2004-10-30 14:01
2004.11.21
Глюки Делфи 6


3-1098257927
Tormoz
2004-10-20 11:38
2004.11.21
Вопрос по формату DBF


14-1099406379
Andryk
2004-11-02 17:39
2004.11.21
Кижки которы делают обкуренные авторы для детей :))))))


14-1099645029
WondeRu
2004-11-05 11:57
2004.11.21
Балаковская АЭС


1-1100152104
Sidek
2004-11-11 08:48
2004.11.21
Навигация в ClientDataSet-е





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