Форум: "Основная";
Текущий архив: 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