Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно написать код. / 9 сообщений из 9, страница 1 из 1
20.04.2019, 22:53
    #39804330
FIL23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
Добрых суток,


Хочу динамически создавать компоненты на двух разных формах.

И этим компонентам хочу добавлять методы типа нажатие мыши.

Хочу для создании динамических компонент и их свойств использовать одну и ту же функцию/процедуру.

Как правильно это написать. покажите пример пожалуйста.

Т.к. у меня затык.. поскольку методы объекта должны (вроде) принадлежать (вроде) форме, а у меня две разные формы.
...
Рейтинг: 0 / 0
20.04.2019, 22:57
    #39804331
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
FIL23,

беда беда...
у тебя два экземпляра формы? значит и обработчика будет два разных. разные адреса у них.
...
Рейтинг: 0 / 0
21.04.2019, 01:26
    #39804375
sasha27
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
FIL23,

а что в нажатиях мыши будет?
обращение к компонентам формы, выполнение каких-то процедур, функций, коннект к БД...?
поширее осветите вопрос...
...
Рейтинг: 0 / 0
21.04.2019, 02:56
    #39804397
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
FIL23Хочу динамически создавать компоненты на двух разных формах.

И этим компонентам хочу добавлять методы типа нажатие мыши.

Хочу для создании динамических компонент и их свойств использовать одну и ту же функцию/процедуру.

Как правильно это написать. покажите пример пожалуйста.

Т.к. у меня затык.. поскольку методы объекта должны (вроде) принадлежать (вроде) форме, а у меня две разные формы.

Не очень понятно, что Вам нужно: если два разных экземляра одного класса формы, досаточно у вновь созданного компонента прописать xxx.OnClick:=MyClick (скорее всего, в это месте будет case по классу компонента), если у форм разные классы - формы наследовать от общего предка и проблема сводится к предыдущей.
...
Рейтинг: 0 / 0
21.04.2019, 12:51
    #39804443
sasha27
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
FIL23Добрых суток,


Хочу динамически создавать компоненты на двух разных формах.

И этим компонентам хочу добавлять методы типа нажатие мыши.

Хочу для создании динамических компонент и их свойств использовать одну и ту же функцию/процедуру.

Как правильно это написать. покажите пример пожалуйста.

Т.к. у меня затык.. поскольку методы объекта должны (вроде) принадлежать (вроде) форме, а у меня две разные формы.

Насколько разношерстные действия будут для нажатия мыши на разных формах для одного типа компонента?
...
Рейтинг: 0 / 0
21.04.2019, 15:26
    #39804494
shonli95
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, EventHook, Vcl.StdCtrls, Rtti;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  NForm1, NForm2: TForm;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  NForm1 := TForm.Create(nil);
  NForm1.Name := 'MyForm1';
  NForm1.Show;
  NForm2 := TForm.Create(nil);
  NForm2.Name := 'MyForm2';
  NForm2.Show;

  HEventObj.ESet(NForm1, 'OnMouseDown'{, ['DopArgs TValue = ListDopArgs']});
  HEventObj.ESet(NForm2, 'OnMouseDown'{, ['DopArgs TValue = ListDopArgs']});

  HEventObj.OnBefore :=
      procedure(Base: TEventObject; Params: TArray<TValue>; ListDopArgs: TArrTypeAddInHook)
    var
      Str: string;
      V: TValue;
    begin
      Str := TComponent(Base.Sender).Name + ' =';

      for V in Params do
        Str := Str + ', ' + V.ToString;

      Memo1.Lines.Add(Str);
    end;
end;

end.

...
Рейтинг: 0 / 0
21.04.2019, 15:29
    #39804495
shonli95
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
...
Рейтинг: 0 / 0
22.04.2019, 11:38
    #39804775
Beltar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
А что мешает сделать процедурку, в которую передавать ссылку на форму? Либо не заморачиваться с унификацией для всего 2 форм?

У меня для прог с БД используется одна стандартная формочка для работы со справочниками, ЕМНИП я компонентам на ней динамически подкидывал процедурки-события, определенные в главной форме.
...
Рейтинг: 0 / 0
22.04.2019, 12:11
    #39804808
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код.
FIL23,
а у меня две разные формы

1.

procedure myClickOnButton(Sender: TObject);

//****
//anyform
//
myButton1:=TButton.Create(myForm);
myButton1.Parent:=myForm;
myButton1.OnClick:=myClickOnButton;


2.

TMyBytton = class(TButton)
***
end;

//****
//anyform
//
myButton1:=TMyBytton.Create;
...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно написать код. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]