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

Вниз

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

 
Wel   (2006-02-21 15:33) [0]

Добрый день. Подскажите пожалуйста, как можно попроще записать этот
код. А то пока только пробные 15 Image, код уже огромный получается. procedure TForm1.Image9MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
var  Image: TImage;
begin  Image:= TImage(Sender);
  if (Button = mbRight) and (Image.Picture.Graphic <> nil) then begin
if Image = Image1 then BufPhotoImage.picture.assign(Image1.picture);
if Image = Image1 then Image1.Picture.Graphic := nil;
if Image = Image1 then Label1.Caption:= "0 Kb";
 if Image = Image2 then BufPhotoImage.picture.assign(Image2.picture);
 if Image = Image2 then Image2.Picture.Graphic := nil;
 if Image = Image2 then Label2.Caption:= "0 Kb";
   if Image = Image3 then BufPhotoImage.picture.assign(Image3.picture);
   if Image = Image3 then Image3.Picture.Graphic := nil;
   if Image = Image3 then .............
if Image = Image15 then BufPhotoImage.picture.assign(Image15.picture);
if Image = Image15 then Image15.Picture.Graphic := nil;
if Image = Image15 then Label15.Caption:= "0 Kb";
Подскажите пожалуйста.


 
clickmaker ©   (2006-02-21 15:41) [1]

Image.Tag
+
вот это безобразие заменить на then begin ... end
if Image = Image2 then BufPhotoImage.picture.assign(Image2.picture);
if Image = Image2 then Image2.Picture.Graphic := nil;
if Image = Image2 then Label2.Caption:= "0 Kb";


 
Ega23 ©   (2006-02-21 15:47) [2]

Значит так:
1. Для каждого TImage и соответствующего ему TLabel пропиши в design-time одинаковое свойство Tag
 Image1.Tag=1, Label1.Tag=1;
 Image2.Tag=2, Label2.Tag=2;
   ......
 Image15.Tag=15, Label15.Tag=15;

2. Переепиши обработчик следующим образом:

procedure TForm1.Image9MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
var  
 Image: TImage;
 i:Integer;
begin  
 if not ((Button = mbRight) and (Image.Picture.Graphic <> nil)) then Exit;
 Image:= TImage(Sender);
 BufPhotoImage.picture.assign(Image.picture);  
 Image.Picture.Graphic := nil;

 for i:=0 to ComponentCount-1 do
   if (Components[i] is TLabel) then
    if TLabel(Components[i]).Tag=Image.Tag then
      TLabel(Components[i]).Caption:="0 Kb";



всё.


 
umbra ©   (2006-02-21 15:55) [3]

можно записывать в свойство Tag каждого TImage его порядковый номер, при создании формы записывать ссылки на Image-и в массив или список (myImageList) в том же порядке. В другой массив (myLabelList) записывать ссылки на лабелы в том же порядке. После этого обработчик будет выглядеть так

procedure TForm1.Image9MouseDown(Sender: TObject; Button:TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);

var  Image: TImage;
     myPicture: TPicture;
begin
 Image:= TImage(Sender);
 if (Button = mbRight) and (Image.Picture.Graphic <> nil) then
   begin
    myPicture :=  (myImageList[Image.Tag] as TImage).Picture;
    BufPhotoImage.picture.assign(myPicture);
    myPicture.Graphic := nil;
    (myLabelList[Image.Tag] as TLabel).Caption := "0 Kb";
 end;
end;
i


 
Wel   (2006-02-21 18:22) [4]

Большое спасибо. Загрузил, заработало. Хотел еще спросить, на примере Ega23.procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
var  Image: TImage;  i:Integer;
begin  Image := TImage(Sender);
if not ((Button = mbRight) and (Image.Picture.Graphic <> nil)) then Exit;
BufPhotoImage.picture.assign(Image.picture);
Image.Picture.Graphic := nil;
for i:=0 to ComponentCount-1 do
  if (Components[i] is TLabel) then
   if TLabel(Components[i]).Tag = Image.Tag then
     TLabel(Components[i]).Caption:="0 Kb";
end;
Можно ли сделать обратную процедуру. т.е из BufPhotoImage  в Image1 если занят то в Image2; если занят то в Image3; и.т.д.


 
Ega23 ©   (2006-02-21 18:27) [5]

Можно.

Но тогда индекирование Image и Label лучше провести так, как umbra ©  в [3] советует.
Т.е. через массив. Тогда вообще элементарно. Иначе будет пихать в первый попавшийся.



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

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
2-1141022416
КаПиБаРа
2006-02-27 09:40
2006.03.12
Просьба скачать страницу


9-1126068360
Ищущий
2005-09-07 08:46
2006.03.12
экспорт анимации из Blender a


2-1140533748
mozgan
2006-02-21 17:55
2006.03.12
Отображать ход копирования в progressbar


11-1121599462
KVita
2005-07-17 15:24
2006.03.12
использование TObj


2-1140616905
veb
2006-02-22 17:01
2006.03.12
Первая попытка подключения к инернету