Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработчик OnClick для ColorBox [D7, XP]


Страницы:   1 2

Alex_Ford ©   (2009-08-11 09:17:00) 

Доброе утро, мастера!

У меня такой вопрос. Я динамически создал экземпляр объекта ColorBox.
Разместил на форме. Все нгормально. Задача в следующем, как можно обработать событие OnClick для динамически созданного ColorBox? Всего их несколько штук. Перебор в цикле.
Пытался повозиться с NotifyEvent, но ничего толкового не получилось. Подскажите пожалуйста.


Alex_Ford   (2009-08-11 11:14:00) [21]


> [9] оно?


Да. Может ответ на вопрос не коректно задан. Но динамическо комбобоксы я задаю в цикле. Например в поле введено число 10 - создаю десять компонентов. Или опять не так?


brother   (2009-08-11 11:14:00) [22]

ты партизан?


Alex_Ford   (2009-08-11 11:13:00) [23]


> В методе ColorBox1Click лучше используйте Sender, а не глобальную
> переменную setcolor, тогда вы сможете изменить это имя менее
> болезненно.

т.е.
1. при создании главной формы setcolor:= Tcolorbox.Create(Self);

2.
> Parent := Self;
Нужно именно на форму? У меня вообще-то панель. Значит получаем parent:= TPanel


brother   (2009-08-11 11:10:00) [24]

> > И сколько комбобоксов храниться у тебя в твоей переменной
>
> > setcolor?
>
> for i:=0 to strtoint(edit1.Text)-1 do
>
> Все зависит от того, какое произвольное число введено в
> поле Edit.

сам понял что сказал?
[9] оно?


Alex_Ford   (2009-08-11 11:08:00) [25]


> И сколько комбобоксов храниться у тебя в твоей переменной
> setcolor?

for i:=0 to strtoint(edit1.Text)-1 do

Все зависит от того, какое произвольное число введено в поле Edit.


brother   (2009-08-11 11:07:00) [26]

>    Parent := Form1;

лучше
  Parent := Self;


brother   (2009-08-11 11:06:00) [27]

а понял....


> setcolor: TColorBox;


вообще убрать...

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i:=0 to strtoint(edit1.Text)-1 do
  with Tcolorbox.Create(Self) do
  begin
    Left := 10;
    Top := i * 24;
    width:=140;
    height:=100;
    Parent := Form1;
    showhint:= true;
    hint:= 'Цвет: '+inttostr(i+1);
  end;
end;


end.


Плохиш   (2009-08-11 11:04:00) [28]


> Alex_Ford   (11.08.09 10:58) [4]
>
>

И сколько комбобоксов храниться у тебя в твоей переменной setcolor?


Kolan   (2009-08-11 11:04:00) [29]


> и где удаление?

Удаление известно где — в TComponent.


Kolan   (2009-08-11 11:03:00) [30]

На вид нормально. Что пишет IDE?

В методе ColorBox1Click лучше используйте Sender, а не глобальную переменную setcolor, тогда вы сможете изменить это имя менее болезненно. А имя надобы изменить, так как у вас получилось, что компонент назван глаголом, а это нехорошо, компонент он — существительное.


brother   (2009-08-11 11:02:00) [31]

> setcolor:= Tcolorbox.Create(Self);

создавай в FormCreate
и где удаление?
удаляй в FormDestoy


Alex_Ford   (2009-08-11 10:58:00) [32]


> Судя по вопросу вам стоит прочесть книгу «Delphi 5 Руководство
> разработчика»


Я знаю.

Я однажды подобное уже делал, но давно.
Поэтому прошу Вас напомнить мне или указать где ошибка.

Код:


var
 Form1: TForm1;
 setcolor: TColorBox;

implementation

{$R *.dfm}

procedure TForm1.ColorBox1Click(Sender: TObject);
var i: integer;
begin
 for i:=0 to setcolor.Items.Count-1 do
 begin
 memo1.Lines.Add(inttostr(setcolor.Selected));
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
begin
 for i:=0 to strtoint(edit1.Text)-1 do
   begin
   setcolor:= Tcolorbox.Create(Self);
   with setcolor do
   begin
     Left := 10;
     Top := i * 24;
     width:=140;
     height:=100;
     Parent := Form1;
     showhint:= true;
     hint:= 'Цвет: '+inttostr(i+1);
     setcolor.OnClick:= colorbox1click;
   end;
   end;
   end;

end.


Kolan   (2009-08-11 10:56:00) [33]

Нужно просто понять, что обработчик, который создает ИДЕ, когда «шмякаешь на нем клик» — это самый простой метод с нужным набором параметров, который просто создается автоматически.

После того, как это понимание появится, надо написать свой метод и дальше работать с ним.

Судя по вопросу вам стоит прочесть книгу «Delphi 5 Руководство разработчика»


Alex_Ford   (2009-08-11 10:42:00) [34]

Спасибо за помощь!

Чего-то я не догоняю. Все сделано согласно выше описанному. Удалил клмпонент, но потом компилятор ругается на отсутствующий (удаленный компонент). И дальше ни-ни. :(


MsGuns   (2009-08-11 09:31:00) [35]

1. Кидаешь на форму колорбокс, шмякаешь на нем клик и в обработчике чт-нибудь пишешь
2. Затем колорбокс выкидываешь, в обработчике пишешь нужный код для динамического бокса.
3. При создании своего бокса в ран-тайме пишешь
   Бокс.OnClick := имя обработчика выкинутого бокса, где написан код


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо