Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое создание событий, Динамическое создание событий 
:(
    Опции темы
Storm
Дата 4.4.2005, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2005

Репутация: нет
Всего: нет



Я динамически создаю обьекты и мне нужно обрабатывать на них события(on click или другое). Объекты хранятся в связанном списке и как к ним обращаться через события-ума не приложу. smile
PM MAIL ICQ   Вверх
podval
Дата 4.4.2005, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: нет
Всего: 62



Storm
Определитесь точнее с вопросом.

В тот ли раздел помещен вопрос?

Среда разработки какая?
PM WWW ICQ   Вверх
poor_yorik
Дата 4.4.2005, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 12.1.2005
Где: Общаги г. Киева

Репутация: нет
Всего: 8



На каком языке программирования ты пишешь, в тот форум и перенеси.
К этому формуму это и вправду не относится.
--------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай...
PM MAIL YIM   Вверх
Storm
Дата 4.4.2005, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2005

Репутация: нет
Всего: нет



среда-Delphi 7

допустим я динамически создал 20 кнопок.
я хочу, чтоб можно было в событие on click любой из них записать код, но как создать это событие, ведь кнопка создается динамически, а не кидается не форму! smile
PM MAIL ICQ   Вверх
maxim1000
Дата 4.4.2005, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



насколько я знаю, у каждой кнопочки есть свойство OnClick... возможно, его и стоит использовать...


--------------------
qqq
PM WWW   Вверх
Storm
Дата 4.4.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2005

Репутация: нет
Всего: нет



Смешно.
у меня объекты в связанном списке .
обратиться к нему я могу например так:
p^.MyButton.onClick...
и как мне зделать чтоб динамически создавалась кнопка и сразу создавался обработчик on.click?
PM MAIL ICQ   Вверх
maxim1000
Дата 4.4.2005, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



Цитата(Storm @ 4.4.2005, 11:31)
и как мне зделать чтоб динамически создавалась кнопка и сразу создавался обработчик on.click?


Цитата(Storm @ 4.4.2005, 11:31)
у меня объекты в связанном списке

ну ты ведь создаешь когда-нибудь эти объекты? (например, перед помещением их в связный список)
вот сразу после создания и пиши Button.onClick:=...

есть еще один вариант - унаследовать свой класс от TButton и в его конструкторе что-то присваивать - это уже будет настоящее "при создании"


--------------------
qqq
PM WWW   Вверх
Rennigth
Дата 4.4.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Код

private
  procedure BtnClick(ASender: TObject);
..

impl..

procedure TForm1.OnCreate....
begin
  btn1 := TButten.Create(Slef);
  btn1.parent := Self;
  btn1.onclick := btnClick; //<-----------------
  btn2 := TButten.Create(Slef);
  btn2.parent := Self;
  btn2.onclick := btnClick; //<-----------------
end;

procedure tFirm1.BtnClick(ASender: TObject);
begin
  if ASender  is TButton then
    TButton(ASender).Caption := 'test';
end;




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Storm
Дата 4.4.2005, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2005

Репутация: нет
Всего: нет



с Button все отлично, но с Tshape такое например не проходит-ошибка несовместимости типов!
Как можно адаптировать?
PM MAIL ICQ   Вверх
_hunter
Дата 4.4.2005, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



понятно что непроходит. тип обработчика не тот.
открой справку и посмотри какой тебе нужен...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
<Spawn>
Дата 5.4.2005, 04:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Потому что у TShape нету такого события - обрабатывай OnMouseDown, OnMouseUp


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Storm
Дата 5.4.2005, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2005

Репутация: нет
Всего: нет



я пробовал обрабатывать OnMouseDown но вылезает ошибка
[Ошибка] Unit1.pas(82): Incompatible types: 'Parameter lists differ'
Причем деляю все по аналогии кода от Rennigth , там это работало!

PM MAIL ICQ   Вверх
DimW
Дата 5.4.2005, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: нет
Всего: 44



Ну так в OnMouseDown параметров 4 в отличии от onclick...
PM MAIL ICQ   Вверх
Zero
Дата 5.4.2005, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(Storm @ 5.4.2005, 07:15)
я пробовал обрабатывать OnMouseDown но вылезает ошибка

Короче Storm, держи пример, и не мучайся:
Код

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  S:TShape;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  S:=TShape.Create(form1);
  with s do
    begin
      Parent:=form1;
      Top:=10;
      left:=10;
      width:=200;
      height:=200;
      name:='SH1';
      OnMouseDown:=Shape1MouseDown;
    end;
end;

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  showmessage('Нажат Shape с именем '+(Sender as TShape).Name);
end; 

PM MAIL ICQ   Вверх
Norfonzor
Дата 28.5.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



У меня делфи ругается на "Slef" в строчке:
Код

btn1 := TButten.Create(Slef);


Подскажите где его надо отVARить ?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.