form1 içinde form2 açmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

form1 içinde form2 açmak

Mesaj gönderen erdogan_ozkaya »

arkadaşlar,

aşağıdaki kodu form içinde 2. bir formu açmak için kullanıyorum formu açıyor fakat 2. formdaki edit nesnesine mouse ile clik yapamıyorum (mousenin sağ tuşuyla yapıyor) sorun ne olabilir sizce ? sanki form aktif olmuyor

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Parent:=Panel1;
form2.Show;
end;
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: form1 içinde form2 açmak

Mesaj gönderen erdogan_ozkaya »

Belki İşine yarayan olur :)

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
r : TRect;
begin
Windows.SetParent(Form2.Handle, Panel1.Handle);
GetWindowRect(Panel1.Handle, r);
//place Form2 at 5, 5 relative to Panel1
Form2.Left := -r.Left +5; //! negative r.Left
Form2.Top := 5;
Form2.Show;

//Label1.Caption := Format('%.0d, %.0d, %.0d, %.0d',
//[r.Left, r.Top, r.Right, r.Bottom]);

GetWindowRect(Form2.Handle, r);
//Label2.Caption := Format('%.0d, %.0d, %.0d, %.0d',
//[r.Left, r.Top, r.Right, r.Bottom]);
end;
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: form1 içinde form2 açmak

Mesaj gönderen csunguray »

Aşağıdaki prosedürü bir form create edip bu formu TPanel, TTabSheet gibi bir bileşenin içerisine yerleştirmek için kullanabilirsiniz.

Kod: Tümünü seç

procedure TForm1.EmbedForm(InstanceClass: TComponentClass; var Reference; AOwner: TComponent);
var
  Instance: TComponent;
begin
  Instance := TComponent(InstanceClass.NewInstance);
  TComponent(Reference) := Instance;
  try
    Instance.Create(AOwner.Owner);
    TForm(Instance).BorderStyle := bsNone;
    TForm(Instance).Parent := TWinControl(AOwner);
    TForm(Instance).Align := alClient;
    TForm(Instance).Show;
  except
    TComponent(Reference) := nil;
    raise;
  end;
end;
Kullanım:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  EmbedForm(TForm2, Form2, Panel1);
end;
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: form1 içinde form2 açmak

Mesaj gönderen SimaWB »

erdogan_ozkaya yazdı:arkadaşlar,

aşağıdaki kodu form içinde 2. bir formu açmak için kullanıyorum formu açıyor fakat 2. formdaki edit nesnesine mouse ile clik yapamıyorum (mousenin sağ tuşuyla yapıyor) sorun ne olabilir sizce ? sanki form aktif olmuyor

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Parent:=Panel1;
form2.Show;
end;

Kod: Tümünü seç

form2.BorderStyle := bsNone;
yapmanız yeterli
There's no place like 127.0.0.1
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: form1 içinde form2 açmak

Mesaj gönderen erdogan_ozkaya »

işine yarayan olabilir aşağıdaki kod ile form1 içinde form2 açıyorum

Kod: Tümünü seç

procedure TAna_Pencere.RzGroup2Items2Click(Sender: TObject);
   var
   r : TRect;
begin
       Windows.SetParent(Satis_Faturasi_Kayit.Handle, Panel1.Handle);
       GetWindowRect(Panel1.Handle, r);
            Satis_Faturasi_Kayit.Left := -r.Left +5;
            Satis_Faturasi_Kayit.Top := 5;
            Satis_Faturasi_Kayit.Show;
     GetWindowRect(Satis_Faturasi_Kayit.Handle, r);
end;
PTT
Üye
Mesajlar: 30
Kayıt: 26 Ağu 2011 02:37

Re: form1 içinde form2 açmak

Mesaj gönderen PTT »

Örnek uygulamayı test ettim gayet başarılı.

Sormak istediğim,
Hangi durumlarda bunu kullanabiliriz ? Nerede, Niçin bize lazım olabilir ? gibi soruların cevabını veremedim
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: form1 içinde form2 açmak

Mesaj gönderen csunguray »

Bir uygulamada "ilişkili belgeler" diye bir sekme var. Bu sekmede mevcut kayıtlı belgelerden seçim yapıp bazı belgeleri o kayıtla ilişkilendiriyorum. Hagi kayıtla? Bazen bir fatura, bazen bir stok artı, bazen bir firma. Ama hepsinde aynı pencereyi kullanıyorum. Bu pencereyi bazen fatura içerisindeki bir Panel veya TabSheet'e bazen firma kartı içerisindeki Panel veya TabSheet'e gömüyorum. 1-2 de ayar yapıyorum.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla