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

Вниз

TImageList & TImage   Найти похожие ветки 

 
Владислав   (2002-11-28 19:06) [0]

Приветствую вас, мастера!

Подскажите пожалуйста, кто-нибудь из вас встречал компонент - подобие TImage, который отличается от оригинала (TImage) тем, что имеет возможность работы с компонентом TImageList? Если да, то подскажите пожалуйста, где можно найти такой компонент.
Поясню проблему.
В моей программе в разных формах могут использоваться одни и те же картинки, которые я отображаю с помощью компонента TImage. Естественно, это несколько увеличивает размер программы, да и неудобно это. Если возникла необходимость изменить какое-нибудь изображение, то нужно пройтись по всем формам приложения и загрузить другое изображение. Для решения этой проблемы хотелось бы найти компонент, который загружает изображение из компонента TImageList по индексу.


 
Сатир   (2002-11-28 19:35) [1]

ImageList1.GetBitmap(0,Image1.Picture.Bitmap);

This example assigns a bitmap contained in an ImageList to an Image component"s Picture"s Bitmap property and displays the bitmap.
(с) встроенная поМОЩЬ Delphi 6


 
Владислав   (2002-11-29 13:42) [2]

Спасибо за ответ.

Может я не точно вопрос задал...

Как сделать это в RunTime я знаю.
Я хотел бы получить тот же результат и в DesignTime.


 
Владислав   (2002-11-29 14:00) [3]

Мастера?

Встречал кто-нибудь подобное?


 
Владислав   (2002-11-29 18:34) [4]

Может кто-то еще не видел моего вопроса?


 
Владислав   (2002-11-29 19:15) [5]

Ну ясно, в общем. Нет такого компонента :(


 
Song   (2002-11-29 19:50) [6]

А проблема-то в чём? Неужели сам TImageList не умеет рисовать картинки без того, чтобы их помещать в TImage?


 
Дмитрий К.К.   (2002-11-30 08:55) [7]

По-моему, у Артема Бермана встречал такой... но не ручаюсь...


 
Набережных С.   (2002-11-30 11:01) [8]

Скучно мне:)

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, ImgList;

type
TPaintBoxEx = class(TPaintBox)
private
FImgList: TImageList;
FImageIndex: integer;
FChangeLink: TChangeLink;
procedure SetImageList(const Value: TImageList);
procedure SetImageIndex(const Value: integer);
protected
procedure Paint; override;
procedure ImagesChange(Sender: TObject); dynamic;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property ImageList: TImageList read FImgList write SetImageList;
property ImageIndex: integer read FImageIndex write SetImageIndex default -1;
end;

procedure Register;

implementation

{ TPaintBoxEx }

constructor TPaintBoxEx.Create(AOwner: TComponent);
begin
inherited;
FImageIndex:=-1;
FChangeLink:=TChangeLink.Create;
FChangeLink.OnChange:=ImagesChange;
end;

destructor TPaintBoxEx.Destroy;
begin
ImageList:=nil;
FChangeLink.Free;
inherited;
end;

procedure TPaintBoxEx.ImagesChange(Sender: TObject);
begin
if FImgList = nil then FImageIndex:=-1
else if FImageIndex >= FImgList.Count then
ImageIndex:=FImgList.Count-1;
Invalidate;
end;

procedure TPaintBoxEx.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited;
if
(AComponent = FImgList) and
(Operation = opRemove)
then
ImageList:=nil;
end;

procedure TPaintBoxEx.Paint;
begin
if
(FImgList <> nil) and
(FImageIndex > -1) and
(FImageIndex < FImgList.Count)
then
FImgList.draw(Canvas,0,0,FImageIndex)
else
inherited;
end;

procedure TPaintBoxEx.SetImageIndex(const Value: integer);
begin
if Value <> FImageIndex then
begin
if
((FImgList = nil) or
(Value < 0) or
(Value >= FImgList.Count)) and
not (csLoading in ComponentState)
then
FImageIndex:=-1
else
FImageIndex := Value;
Invalidate;
end;
end;

procedure TPaintBoxEx.SetImageList(const Value: TImageList);
begin
if Value <> FImgList then
begin
if FImgList <> nil then FImgList.UnRegisterChanges(FChangeLink);
FImgList := Value;
if FImgList <> nil then FImgList.RegisterChanges(FChangeLink)
else FImageIndex:=-1;
ImagesChange(FImgList);
end;
end;

procedure Register;
begin
RegisterComponents("Samples", [TPaintBoxEx]);
end;

end.


 
Дмитрий К.К.   (2002-11-30 11:48) [9]

И как ето вы, батенька, без звания Мастера до сих пор ходите? ;)


 
Владислав   (2002-11-30 16:01) [10]

Круто! Я попробую! Сколько стоит Ваша работа? Я спрошу у начальства, может оплатят? В design time действительно работать будет?


 
Набережных С.   (2002-11-30 16:56) [11]

>Дмитрий К.К. © (30.11.02 11:48)
Дык, ногами, батенька! В основном:)
>Владислав © (30.11.02 16:01)
На том свете угольками рассчитаемся:)



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

Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
1-27930
jackie
2002-11-27 08:28
2002.12.09
динамическая память


1-28021
memphis555
2002-11-30 00:48
2002.12.09
Последовательный вывод в Tray


3-27895
al-er
2002-11-21 19:30
2002.12.09
Database Desktop 7 не видит некоторые записи


1-28055
mazepa
2002-11-27 20:22
2002.12.09
х


6-28158
Severin
2002-10-13 10:00
2002.12.09
Помогите пожалуйста





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