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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.03.2008, 07:57
PashaXP PashaXP вне форума
Новичок
 
Регистрация: 05.02.2008
Сообщения: 81
Репутация: 15
По умолчанию Динамически созданные компоненты и их перетаскивание?

Привет всем! И еще вопрос. Искал в интернете инфу про перетаскивание компонент, все понятно когда созданы не динамически... А когда созданы динамически??? Это нужно для каждого компонента динамически описывть обработку событий(т.е щелчка мышки, перетаскивание...)? Других способов более легких нет?
Ответить с цитированием
  #2  
Старый 24.03.2008, 08:46
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Способы (варианты):
1. Написать библиотеку компонентов, в которых уже установлены эти свойства.
2. Написать компонент (или класс), который будет помогать тебе заполнять различные свойства создаваемых компонентов.
3. Просто создать функцию, автоматезирующую этот процесс.
4. Не создавать компоненты динамически - тогда и мучатся не придется.

Возможно есть еще варианты
Ответить с цитированием
  #3  
Старый 24.03.2008, 08:50
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Кстати, одним универсальным обработчиком (с использованием Sender: TObject) можно обрабатывать аналогичные события разных компонентов
Ответить с цитированием
  #4  
Старый 24.03.2008, 09:05
PashaXP PashaXP вне форума
Новичок
 
Регистрация: 05.02.2008
Сообщения: 81
Репутация: 15
По умолчанию

Понятно. Спасибо. В общем разбираться в моем случае нужно долго и упорно))))
Ответить с цитированием
  #5  
Старый 24.03.2008, 12:12
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Не обязательно
Все зависит от того что ты уже знаешь и что конкретно хочешь.
Если тебе не понятно как прикрепить события можем обьяснить,
если не понятно Sender: TObject тоже расскажут
А так вопрос был общий и ответ тоже
Программисты для того и пишут программы (компоненты, функции...) чтобы автоматизировать какойто процесс и другим облегчить решение ихних задач
(Разработчики Делфи значительно облегчили нам работу - кинул кнопку и она уже на форме, щелкнул немного накодил и она уже работает)
Конкретизируй вопрос
или покажи код где неполучается
Ответить с цитированием
  #6  
Старый 24.03.2008, 20:43
PashaXP PashaXP вне форума
Новичок
 
Регистрация: 05.02.2008
Сообщения: 81
Репутация: 15
По умолчанию

Динамически создаю компоненты, как лучше в моем случае организовать перетаскивание компонентов???
Код:
T: TTabSheet; Edit: TEdit;  Lab: TLabel; QRLab: TQRLabel;
.......
For i:=1 to Form1.PageControl1.PageCount+1 do
  BEGIN
     for j:=1 to PG[i].Label_Count do
        begin
          Lab:= TLabel.Create(Self);
          Lab.Caption:=PG[i].Info_Label[j].Caption;
          Lab.Top:= PG[i].Info_Label[j].Top;
          Lab.Left:= PG[i].Info_Label[j].Left;
          Lab.Font.Size:=PG[i].Info_Label[j].Size;
          if PG[i].Info_Label[j].Style = 1 then Lab.Font.Style:=[fsBold];
          // Lab.Visible:=true;
          Lab.Parent:= PageControl1.Pages[i-1];
          Edit:= TEdit.Create(Self);
          Edit.Top:= PG[i].Info_Edit[j].Top;
          Edit.Left:= PG[i].Info_Edit[j].Left;
          Edit.Name:='Edit'+IntToStr(i)+IntToStr(j);
          Edit.Text:='';
          Edit.Parent:= PageControl1.Pages[i-1];
        end;
   END;
Ответить с цитированием
  #7  
Старый 24.03.2008, 21:12
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

PashaXP, смотри. Например, ты создаёшь обработчик нажатия на Button такого вида:
Код:
MyButtonClick(Sender:TObject);
Потом присваиваешь динамически-создаваемой кнопке обработчик клика по Button так:
Код:
MyButton.OnClick:=MyButtonClick
Потом используешь в этом обработчике в качестве самого объекта MyButton объект Sender. Например, вместо MyButton.Click пишешь Sender.Click.
__________________

Ответить с цитированием
  #8  
Старый 24.03.2008, 21:32
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Пока не совсем понял что ты хочешь перетаскивать
но в общих чертах события можешь привязать так:
Код:
  TForm1 = class(TForm)
    //....................
  public
    { Public declarations }
    procedure LabsClick(Sender: TObject);
  end;
    //....................
implementation
    //....................
procedure TForm1.LabsClick(Sender: TObject);
begin
  if Sender is TLabel then
  begin
    (Sender as TLabel).Caption := 'my name - ' + (Sender as TLabel).Name;
    // .......
  end
  else
  if Sender is TEdit then
  begin
    (Sender as TEdit).Text := 'my name - ' + (Sender as TLabel).Name;
    // .......
  end
end;
    //....................
  Lab.OnClick := LabsClick;
    //....................
и еще вопрос
Код:
For i:=1 to Form1.PageControl1.PageCount+1 do
при PageCount = 1 цыкл выполнится 2 раза
Ответить с цитированием
  #9  
Старый 25.03.2008, 06:34
PashaXP PashaXP вне форума
Новичок
 
Регистрация: 05.02.2008
Сообщения: 81
Репутация: 15
По умолчанию

Просто выдернул код из проги, а перетаскивать хочу TEdit, TLabel и еще в дальнейшем TQRLabel. Спасибо за советы))) !!!! Буду разбираться и пробовать...
Ответить с цитированием
  #10  
Старый 25.03.2008, 19:00
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Желаю удачи
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter