|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Клонировать компоненты
здравствуйте... на форме задан какой-либо компонент (например label) необходимо создать еще таких же компонентов несколько и обрабатывать их на события OnClick и OnMouseMove.
помогите осуществить данную вещь.. |
#2
|
|||
|
|||
в каком режиме - выполнения или дизайна?
|
#3
|
|||
|
|||
выполнения
ну не редактирования.. чтобы программно создавать компонент.. уже во время выполнения программы.. и после чего обрабатывать на события.. |
#4
|
|||
|
|||
Ну и создавай их.
Пусть label1 уже есть. тогда создание так: Код:
var I : Integer; ANewLabel : TLabel; begin For I := 1 To 10 Do // make 10 labels Begin ANewLabel := TLabel.Create(Self); ANewLabel.Parent := Self; ANewLabel.Top := Random(100); ANewLabel.Left := Tandom(300); ANewLabel.Caption := 'label #' + InttoStr(I); ANewLabel.OnClick := Label1.OnClick; ANewLabel.OnMouseMove := Label1.OnMouseMove; End; end; |
#5
|
|||
|
|||
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); Procedure ClickObj(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Procedure TFOrm1.ClickObj(Sender: Tobject); begin ShowMessage('Тут обработка'); end; procedure TForm1.Button1Click(Sender: TObject); var obj: TLabel; begin obj := TLabel.Create(Label1); obj.Caption:='Лейбел 1'; obj.Parent := Self; obj.Left:= Label1.Left+40; obj.Top:= Label1.Top+20; obj.OnClick := ClickObj; end; end. Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит Прапор: вы не попали ни один раз. Программист: Пули вылетели, проблемы у вас. |
#6
|
|||
|
|||
спасибо, надеюсь поможет)
|
#7
|
|||
|
|||
подскажите пожалуйста, как получить сам объект, на который навели мышью или кликнули...
пишу игрушку (чисто для себя) создается некий label с текстом "." и эти точки движуться по экрану.. надо кликать на каждую и этим самым этот компонент исчезает с формы (для этого ведь необходимо сначала узнать какой элемент должен исчезнуть, да и сколько их на форме неизвестно, т.к. они в рандомном порядке прибавляются через определенный интервал времени). если точки зашли за данную площадь, то идет отсчет жизней назад (за каждую прошедшую точку). Так же должны будут организовываться бонусы.. Например разноцветные цифры бегут по форме. При наведении на них мышью идёт суммирование очков (по значению на этом лебеле). Далее та цифра пропадает. Так же и жизни чтобы были. Но достаточно мне просто сказать как получить управление над кликнутым элементом а остальное я смогу сам сделать... Нужно ведь как-то получить элемент. Это не массив и индекса там нет, по этому надо другим каким-либо способом получить элемент.. Подскажите, каким? |
#8
|
|||
|
|||
вот например мы указываем некий класс элементу
obj := TLabel.Create(Label1); label1 как я понял. но по моей идее надо так: label[n+1] но так нельзя наверное.. где n это индекс.. ведь мы не знаем сколько label'ов там будет.. да и не писать же в коде: label1 label2 label3 label4 label5 label6 ... label100 если будет 100 элементов.. или надо каждый label запихать в массив? (да я и динамические массивы не знаю, а ведь число label'ов растет) |
#9
|
|||
|
|||
неужели нет возможности указать это всё? 0_о
|