KenDari писал(а):Изображения кнопки?
Да
Модератор: Модераторы
KenDari писал(а):Изображения кнопки?
Снег Север писал(а):
- Код: Выделить всё
procedure TForm1.LviMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
resident писал(а):KenDari писал(а):Изображения кнопки?
Да
KenDari писал(а): просто мне проблематично будет их заархивировать
MouseLeave(Form1.Controls[i]);
KenDari писал(а):Но у меня нет кнопки Lvi
Снег Север писал(а):Вам не нужен никакой цикл.
Создаете обработчик только для первой кнопки (или любой). Всем остальным назначаете его же.
resident писал(а):Не понимаю, почему вы против того, чтобы назначить "его же" в цикле.
Снег Север писал(а): на фига что-то перебирать???
Снег Север писал(а):Обработчик всегда получает ссылку на вызвавший контрол
resident писал(а):А если у него сотня таких форм?
resident писал(а):KenDari писал(а):Тогда прикрепляю пример на тексте
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 0 to 2 do
if (Form1.Controls[i].ClassNameIs('TImage')) then
begin
(Form1.Controls[i] as TImage).OnMouseMove := @MouseMove;
(Form1.Controls[i] as TImage).OnMouseLeave := @MouseLeave;
(Form1.Controls[i] as TImage).OnMouseDown := @MouseDown;
end;
end;
procedure TForm1.MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
(Sender as TImage).Picture.LoadFromFile('Ур' + IntToStr((Sender as TImage).Tag) + '.png');
end;
procedure TForm1.MouseLeave(Sender: TObject);
begin
(Sender as TImage).Picture.LoadFromFile('Ур' + IntToStr((Sender as TImage).Tag) + '.1.png');
end;
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
(Sender as TImage).Picture.LoadFromFile('Ур' + IntToStr((Sender as TImage).Tag) + '.2.png');
end;
end.
KenDari писал(а):Что я сделал не так?
resident писал(а):KenDari писал(а):Что я сделал не так?
Вы счетчик запустили до 2, цикл до TImage наверное и не дошел![]()
Там все контролы перебираются, а их кроме TImage еще много. Вся суть, что вы должны перебрать все контролы на форме и найти среди них TImage.
Верните как у меня Pred(Form1.ControlCount)
Добавлено спустя 57 секунд:
И, кстати, вы Tag задали?
Добавлено спустя 1 минуту 4 секунды:
А MouseUp не нужен чтоль?
procedure TForm1.MouseLeave(Sender: TObject);
begin
(Sender as TImage).Picture.LoadFromFile('Ур' + IntToStr((Sender as TImage).Tag) + '.png');
end;
Alex2013 писал(а):Извиняюсь за офтоп... но чем "Sender as " лучше "My_type(Sender)"
if (Sender is My_Type) then begin
My_Type(Sender).dostuff()
end;
Снег Север писал(а):я делал бы так:
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 227