Главная страницаОбратная связьКарта сайта

Поменять владельца компонента


unit ChOwn1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ButtonChange: TButton;
    ButtonList: TButton;
    ListBox1: TListBox;
    procedure ButtonChangeClick(Sender: TObject);
    procedure ButtonListClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses ChOwn2;

{$R *.DFM}

procedure TForm1.ButtonChangeClick(Sender: TObject);
var
  AComp: TComponent;
begin
  if Assigned (Button1) then
  begin
    // change parent
    Button1.Parent := Form2;
    // change owner
    AComp := Button1;
    RemoveComponent (AComp);
    Form2.InsertComponent (AComp);
  end;
end;

procedure TForm1.ButtonListClick(Sender: TObject);
var
 I: Integer;
begin
  ListBox1.Items.Clear;
  for I := 0 to ComponentCount - 1 do
    ListBox1.Items.Add (Components[I].Name);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage ("My owner is " +
    ((Sender as TButton).Owner as TForm).Caption);
end;

end.


unit ChOwn2;

interface

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

type
  TForm2 = class(TForm)
    ButtonList: TButton;
    ListBox1: TListBox;
    procedure ButtonListClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}


procedure TForm2.ButtonListClick(Sender: TObject);
var
 I: Integer;
begin
  ListBox1.Items.Clear;
  for I := 0 to ComponentCount - 1 do
    ListBox1.Items.Add (Components[I].Name);
end;

end.

Загрузить весь проект


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Поменять владельца компонента", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info