Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
4-28335
Senka
2002-10-24 19:51
2002.12.09
Хуки - проблема с ловушками.


6-28159
Геннадий
2002-10-13 13:58
2002.12.09
А можно ли открыть файл с FTP как простой локальный?


14-28269
wandp
2002-11-19 04:44
2002.12.09
HELP с Картой


14-28279
Cr@sh
2002-11-19 14:21
2002.12.09
Подскажите с чего начать...


1-27925
ilg
2002-11-25 11:07
2002.12.09
Перевод с транслита