Delphi Can
Delphi Formlar Arası Nesne Taşıma - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Delphi Formlar Arası Nesne Taşıma (/showthread.php?tid=6128)



Delphi Formlar Arası Nesne Taşıma - software444 - 24-06-2021

Merhaba arkadaşlar, delphi'de iki tane form oluşturdum form1 ve form2.
form1 formunda bir tane panel ve bir tane buton var.

butona bastığımda form2 açılsın ve panel form2'ye taşınsın istiyorum. daha sonra form2'yi kapattığımda panel tekrar form1'e geri gelsin
istiyorum bunu nasıl yapabiliriz.




  Application.CreateForm(TForm2, Form2);
  panel1.Parent:=form2.panel1;
  form2.Showmodal;
  form2.Panel1.Parent:=panel1;
  form2.Free;


bu kodlar form1'deki paneli form2'ye taşıyorum ama form2'yi kapatıp tekrar butona bastığımda hata alıyorum.


Delphi Formlar Arası Nesne Taşıma - CesuR - 26-06-2021

Merhaba, aslında cevabı kendiniz de vermişsiniz ama sanırım gözünüzden kaçtı. Birinci forumdaki panelin kopyasını form2 de oluşturun , form1 dekini gizleyin. Geri döndüğünüzde gizlediniz paneli gösterin..


Delphi Formlar Arası Nesne Taşıma - mcuyan - 26-06-2021

https://stackoverflow.com/questions/9468789/how-to-duplicate-a-component-control


unit Unit130;

interface

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

type
 TForm130 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   edit2: TEdit;
 public
 end;

var
 Form130: TForm130;

implementation

{$R *.dfm}

procedure TForm130.Button1Click(Sender: TObject);
var
 component: TComponent;
 stream: TMemoryStream;
begin
 RegisterClass(TEdit);
 stream := TMemoryStream.Create;
 try
   stream.WriteComponent(edit1);
   stream.Position := 0;
   component := stream.ReadComponent(nil);
   edit2 := component as TEdit;

   { this is necessary to make the following InsertComponent work }
   edit2.Name := 'Edit2';
   InsertComponent(edit2);

   edit2.Parent := Self;
   edit2.Top := edit2.Top + 30;
 finally
   stream.Free;
 end;
end;

end.



Can alıcı nokta Edit2.Parent olayı. o kısmın sırtını form 2 ye yasladığınız zaman sorun çözülecektir diye düşünüyorum.

Diğer bir örnek de burada var.

https://stackoverflow.com/questions/239002/duplicating-components-at-run-time