![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработчик OnClick для ColorBox [D7, XP]
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 := имя обработчика выкинутого бокса, где написан код