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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.06.2013, 18:15
lexas08 lexas08 вне форума
Прохожий
 
Регистрация: 01.06.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Обработчик на динамически созданный компонент

Доброго всем дня! И с первым днём лета. Вопрос вот в чём.
Создаю вот так форму и компоненты (динамически) при нажатии на кнопку на главной форме:
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
Var
frmUser: TForm;
btnUser: TButton;
edUser:TEdit;
memUser:TMemo;
begin
frmUser := TForm.Create(Self);
frmUser.Caption := 'Message';
frmUser.Left := 290;
frmUser.Top := 196;
frmUser.Width := 368;
frmUser.Height := 437;
btnUser := TButton.Create(frmUser);
btnUser.Left := 296;
btnUser.Top := 344;
btnUser.Width := 25;
btnUser.Height := 25;
btnUser.Caption := '>';
btnUser.Parent := frmUser;

edUser := TEdit.Create(frmUser);
edUser.Left := 32;
edUser.Top := 344;
edUser.Width := 257;
edUser.Height := 25;
edUser.Text := '';
edUser.Parent := frmUser;

memUser:=TMemo.Create(frmUser);
memUser.Left := 32;
memUser.Top := 32;
memUser.Width := 289;
memUser.Height := 297;
memUser.Parent := frmUser;
memUser.Lines.Clear;

frmUser.Show;
end;

end.
Админ: Учимся правильно оформлять код!

Мне нужно создать обработчик события нажатия кнопки, которая была создана динамически на динамически созданной форме. Помогите: как это сделать? Заранее благодарю!

Последний раз редактировалось Admin, 01.06.2013 в 18:20.
Ответить с цитированием
  #2  
Старый 01.06.2013, 19:05
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
procedure FooOnClick(sender: tobject);
...
procedure TForm1.FooOnClick(sender: tobject)
begin
...
end;
...
btn1.onclick := FooOnClick;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 01.06.2013, 19:33
lexas08 lexas08 вне форума
Прохожий
 
Регистрация: 01.06.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Код:
procedure FooOnClick(sender: tobject);
...
procedure TForm1.FooOnClick(sender: tobject)
begin
...
end;
...
btn1.onclick := FooOnClick;


мне нужно чтобы в edUser при нажатии на btnUser появлялся какой нибудь текст. EdUser (edit) и btnUser (button) находятся на динамически созданной форме frmUser. Помогите переделать мой ранее предоставленный код. Всё должно быть в одном юните
Ответить с цитированием
  #4  
Старый 01.06.2013, 20:28
lexas08 lexas08 вне форума
Прохожий
 
Регистрация: 01.06.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
procedure MyButtonClick(Self : TComponent; Sender : TButton);
begin
  (Self.FindComponent('edUser') as TEdit).Text := 'hello';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
Var
  frmUser: TForm;
  btnUser: TButton;
  edUser:TEdit;
  memUser:TMemo;
  Method : TMethod;
begin
  frmUser := TForm.Create(Self);
  frmUser.Caption := 'Message';
  frmUser.Left := 290;
  frmUser.Top := 196;
  frmUser.Width := 368;
  frmUser.Height := 437;
  btnUser := TButton.Create(frmUser);
  btnUser.Left := 296;
  btnUser.Top := 344;
  btnUser.Width := 25;
  btnUser.Height := 25;
  btnUser.Caption := '>';
  btnUser.Parent := frmUser;
 
  Method.Code := @MyButtonClick;
  method.Data := frmUser; // Self будет твоя форма
  btnUser.OnClick := TNotifyEvent (Method);
 
  edUser := TEdit.Create(frmUser);
  edUser.Name := 'edUser'; // Вот имя - обязательно. По нему будет обращение к компоненту
  edUser.Left := 32;
  edUser.Top := 344;
  edUser.Width := 257;
  edUser.Height := 25;
  edUser.Text := '';
  edUser.Parent := frmUser;
 
  memUser:=TMemo.Create(frmUser);
  memUser.Left := 32;
  memUser.Top := 32;
  memUser.Width := 289;
  memUser.Height := 297;
  memUser.Parent := frmUser;
  memUser.Lines.Clear;
 
  frmUser.Show;
end;
спасибо всем. решение найдено. тема закрыта

Последний раз редактировалось M.A.D.M.A.N., 01.06.2013 в 21:56.
Ответить с цитированием
  #5  
Старый 01.06.2013, 21:14
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от lexas08
спасибо всем. решение найдено. тема закрыта
Это что ли ?
Цитата:
Сообщение от UI
Ну, так сделай:
Код:
procedure MyButtonClick(Self : TComponent; Sender : TButton);
begin
  (Self.FindComponent('edUser') as TEdit).Text := 'hello';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
Var
  frmUser: TForm;
  btnUser: TButton;
  edUser:TEdit;
  memUser:TMemo;
  Method : TMethod;
begin
  frmUser := TForm.Create(Self);
  frmUser.Caption := 'Message';
  frmUser.Left := 290;
  frmUser.Top := 196;
  frmUser.Width := 368;
  frmUser.Height := 437;
  btnUser := TButton.Create(frmUser);
  btnUser.Left := 296;
  btnUser.Top := 344;
  btnUser.Width := 25;
  btnUser.Height := 25;
  btnUser.Caption := '>';
  btnUser.Parent := frmUser;
 
  Method.Code := @MyButtonClick;
  method.Data := frmUser; // Self будет твоя форма
  btnUser.OnClick := TNotifyEvent (Method);
 
  edUser := TEdit.Create(frmUser);
  edUser.Name := 'edUser'; // Вот имя - обязательно. По нему будет обращение к компоненту
  edUser.Left := 32;
  edUser.Top := 344;
  edUser.Width := 257;
  edUser.Height := 25;
  edUser.Text := '';
  edUser.Parent := frmUser;
 
  memUser:=TMemo.Create(frmUser);
  memUser.Left := 32;
  memUser.Top := 32;
  memUser.Width := 289;
  memUser.Height := 297;
  memUser.Parent := frmUser;
  memUser.Lines.Clear;
 
  frmUser.Show;
end;
, кто мешает?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter