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

Поиск:

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


Новичок



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

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



Всем доброй ночи, господа!

Спасайте кто может. Сроки горят, а ничего не получается.

Динамически создаю TCheckBox и пытаюсь присвоить ему событие OnClick, но ничего не выходит.
Действую следующим образом:

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
  Procedure Sn(Sender: TObject);

    { Private declarations }
  public
    { Public declarations }

var
  Form1: TForm1;

implementation

procedure TForm1.FormCreate(Sender: TObject);
var
n:integer;
caption:TCheckBox;
begin
     caption:=TCheckBox.Create(Form1);
      caption.Name:='comp'+IntToStr(n);
      caption.Caption:='aaa';
    caption.OnClick:=TForm1.CheckBox1Click;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
var
n:integer;
begin
      if CheckBox1.Checked=True then
      begin
      n:=n+1;
     Button2.Enabled:=True;
     end
     else
     if CheckBox1.Checked=False then
     begin
         n:=n-1;
         button2.Enabled:=False;
     end;
end;


Ошибка в строке 34:caption.OnClick:=TForm1.CheckBox1Click;. Помогите. Целый день гуглил - так ничего и не получилось.

Заранее спасибо.

Модератор: красный цвет - цвет модераторской правки, просьба не использовать.

Это сообщение отредактировал(а) MetalFan - 18.11.2012, 11:44
PM MAIL   Вверх
northener
Дата 18.11.2012, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(MrBanochka @  18.11.2012,  01:19 Найти цитируемый пост)
caption.OnClick:=TForm1.CheckBox1Click;

заменить на:
Код

  caption.OnClick:=CheckBox1Click;


И не надо использовать для имени переменной название свойства компонента   Иначе когда-нибудь нарвешься на неприятности.

Это сообщение отредактировал(а) northener - 18.11.2012, 03:40


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
lomaster
Дата 18.11.2012, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Parent еще назначить надо, место-положение указать.
А вот Name лучше не использовать.
PM   Вверх
DarkProg
Дата 18.11.2012, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

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



Цитата(lomaster @  18.11.2012,  10:36 Найти цитируемый пост)
А вот Name лучше не использовать. 

Для некоторых задач имя компонента просто необходимо, так что его можно/нужно использовать, но надо делать это правильно.

Ещё вот так можно
Код

@caption.OnClick:[email protected];



--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
MrBanochka
Дата 18.11.2012, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ребят, спасибо большое. Решение DarkProq  помогло. Остался только один вопрос: при работе функции CheckBox1Click получаю ошибку , т.к. имени для созданного объекта нет, а я работаю с CheckBox1, который существует. Как решить проблему? Пробовал делать через with __ do, но результат нулевой.

Заранее спасибо.

P.S. Приношу свои изменения модератору за использование красного цвета. Больше не повторится. 
PM MAIL   Вверх
lomaster
Дата 18.11.2012, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Для некоторых задач имя компонента просто необходимо
 это для дизайнера, еслиб не дизайнер, то имя не было бы в принципе.
Тут, при динамической работе, - даже вредно, путает только. Вот автор уже запутался.
PM   Вверх
northener
Дата 18.11.2012, 19:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

procedure TForm1.CheckBox1Click(Sender: TObject);
var
n:integer;
begin
      if TCheckBox(Sender).Checked=True then
...



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 19.11.2012, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



=True? smile


--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 19.11.2012, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(bems @  19.11.2012,  14:31 Найти цитируемый пост)
=True? smile 

Копипаст воскресным вечером :(


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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