Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Вниз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);
i
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;
← →
Wel (2006-02-21 18:22) [4]Большое спасибо. Загрузил, заработало. Хотел еще спросить, на примере Ega23.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Можно ли сделать обратную процедуру. т.е из BufPhotoImage в Image1 если занят то в Image2; если занят то в Image3; и.т.д.
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;
← →
Ega23 © (2006-02-21 18:27) [5]Можно.
Но тогда индекирование Image и Label лучше провести так, как umbra © в [3] советует.
Т.е. через массив. Тогда вообще элементарно. Иначе будет пихать в первый попавшийся.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.016 c