Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.11.2008, 16:37
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию Клонировать компоненты

здравствуйте... на форме задан какой-либо компонент (например label) необходимо создать еще таких же компонентов несколько и обрабатывать их на события OnClick и OnMouseMove.

помогите осуществить данную вещь..
Ответить с цитированием
  #2  
Старый 13.11.2008, 17:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

в каком режиме - выполнения или дизайна?
Ответить с цитированием
  #3  
Старый 13.11.2008, 17:08
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

выполнения

ну не редактирования.. чтобы программно создавать компонент.. уже во время выполнения программы.. и после чего обрабатывать на события..
Ответить с цитированием
  #4  
Старый 13.11.2008, 17:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну и создавай их.
Пусть 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  
Старый 13.11.2008, 17:13
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Код:
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  
Старый 13.11.2008, 17:18
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

спасибо, надеюсь поможет)
Ответить с цитированием
  #7  
Старый 15.11.2008, 10:02
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

подскажите пожалуйста, как получить сам объект, на который навели мышью или кликнули...

пишу игрушку (чисто для себя)

создается некий label с текстом "." и эти точки движуться по экрану.. надо кликать на каждую и этим самым этот компонент исчезает с формы (для этого ведь необходимо сначала узнать какой элемент должен исчезнуть, да и сколько их на форме неизвестно, т.к. они в рандомном порядке прибавляются через определенный интервал времени). если точки зашли за данную площадь, то идет отсчет жизней назад (за каждую прошедшую точку).

Так же должны будут организовываться бонусы.. Например разноцветные цифры бегут по форме. При наведении на них мышью идёт суммирование очков (по значению на этом лебеле). Далее та цифра пропадает. Так же и жизни чтобы были. Но достаточно мне просто сказать как получить управление над кликнутым элементом а остальное я смогу сам сделать... Нужно ведь как-то получить элемент. Это не массив и индекса там нет, по этому надо другим каким-либо способом получить элемент..

Подскажите, каким?
Ответить с цитированием
  #8  
Старый 15.11.2008, 10:06
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

вот например мы указываем некий класс элементу

obj := TLabel.Create(Label1);

label1 как я понял.

но по моей идее надо так: label[n+1] но так нельзя наверное.. где n это индекс..

ведь мы не знаем сколько label'ов там будет.. да и не писать же в коде:

label1
label2
label3
label4
label5
label6

...

label100

если будет 100 элементов..

или надо каждый label запихать в массив? (да я и динамические массивы не знаю, а ведь число label'ов растет)
Ответить с цитированием
  #9  
Старый 15.11.2008, 16:52
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

неужели нет возможности указать это всё? 0_о
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter