Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2011, 21:05   #1
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию Как узнать имя динамическо созданного Shape

Подскажите пожалуйста, как узнать имя динамически созданного TShape при нажатии на него. Вот куски программы:
Код:
private
    { Private declarations }
  public
    procedure ShapeClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    { Public declarations }
  end;
.............................
implementation

procedure TForm1.ShapeClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if sender is TShape then
   (кликнутый Shape).Width:=Width1;
   (кликнутый Shape).Height:=Height1;
end;

{$R *.dfm}
.............................
procedure TForm1.CreateShapeClick(Sender: TObject);
begin
 Shape[Shapei]:=TShape.Create(Form1);
 Shape[Shapei].Top:=300;
 Shape[Shapei].Left:=400;
 Shape[Shapei].Width:=100;
 Shape[Shapei].Height:=100;
 Shape[Shapei].Parent:=Form1;
 Shape[Shapei].Brush.Color:=RGB(255,255,255);
 Shape[Shapei].Brush.Style:=bsBDiagonal;
 Shape[Shapei].OnMouseUp:= ShapeClick;
 Shapei:=Shapei+1;
end;
Заранее спасибо!

Последний раз редактировалось Максим139; 21.08.2011 в 21:36.
Максим139 вне форума Ответить с цитированием
Старый 21.08.2011, 21:14   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

руками ему имя задайте и все.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.08.2011, 21:31   #3
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

"кликнутый Shape" - это и есть Sender.
Зачем ты его пытаешься Create ?
Create - это метод класса, а не объекта.
mss вне форума Ответить с цитированием
Старый 21.08.2011, 21:31   #4
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

(кликнутый Shape).Width:=Width1;
(кликнутый Shape).Height:=Height1;
Не думаю что правильно будет ClickedShape.
А так же не думаю что правильно будет Shaper:=ClickedShape.

И я не могу сделать Sender.Width.
Тем более Create это создание при нажатии Button

Последний раз редактировалось Stilet; 21.08.2011 в 21:36.
Максим139 вне форума Ответить с цитированием
Старый 21.08.2011, 21:36   #5
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Не думаю что правильно будет ClickedShape.
Именно это и будет правильно.

Код:
ClickedShape := TShape(Sender);
mss вне форума Ответить с цитированием
Старый 21.08.2011, 21:39   #6
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Именно это и будет правильно.

Код:
ClickedShape := TShape(Sender);
Спасибо огромное, выручил =)
Максим139 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать имя ячейки ? Dub Microsoft Office Excel 5 04.07.2010 22:54
Как узнать имя юзера Betty Общие вопросы Delphi 4 07.01.2010 10:50
Как узнать имя button BuT@JL Общие вопросы Delphi 7 19.08.2009 10:42
Как узнать имя кнопки? LeGAl Microsoft Office Excel 1 10.03.2009 00:04
Как узнать имя файла??? Shurik Hacker Работа с сетью в Delphi 3 20.11.2007 17:06