Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Aktif form dan diğer formlara işlem gönderme
#1
Selam birkaç gündür uğraşıyorum fakat bir türlü çözüm üretemedim. 
Olay şu : 1 adet ana formum var, diğer formları (Cari,Stok vs.vs.) bu form üzerinde bulunan bir Panel içerisine açıyorum (Parent ile), durum böyle olunca tabi diğer formlar üzerinde bulunan actionmanager deki action lar çalışmıyor. Her formda 11 adet action var (Yeni, Değiştir,İncele vs.vs.) ve fonksiyon tuşları ile çalışıyor (F2-F12). Bende bu problemi çözmek için bir yol arıyorum. 

Düşüncem şu : action u ana form üzerine koyuyorum, F2:kaydet gibi, Örneğin panel üzerinde cari formunu create ettiğimde F2 ye basıldığında cari formundaki Act_Kaydet action unun çalışmasını istiyorum, bu arada MDI formlarda olduğu gibi, örneğin Cari ve Stok formları ard arda açıldı, Stok formu en son açıldığı için BringToFront durumunda, ama kullanıcı bu formu yana sürükleyip altta görünen Cari formunda herhangi bir yere yada nesneye tıkladığında o formun öne gelmesini istiyorum (bu arada formların borderstyle özellikleri BsNone) 

Not : Projeyi MDI olarak yazamıyorum, Borderları açamıyorum (görsellik için).
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#2
(08-04-2017, Saat: 12:36)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSelam birkaç gündür uğraşıyorum fakat bir türlü çözüm üretemedim. 
Olay şu : 1 adet ana formum var, diğer formları (Cari,Stok vs.vs.) bu form üzerinde bulunan bir Panel içerisine açıyorum (Parent ile), durum böyle olunca tabi diğer formlar üzerinde bulunan actionmanager deki action lar çalışmıyor. Her formda 11 adet action var (Yeni, Değiştir,İncele vs.vs.) ve fonksiyon tuşları ile çalışıyor (F2-F12). Bende bu problemi çözmek için bir yol arıyorum. 

Düşüncem şu : action u ana form üzerine koyuyorum, F2:kaydet gibi, Örneğin panel üzerinde cari formunu create ettiğimde F2 ye basıldığında cari formundaki Act_Kaydet action unun çalışmasını istiyorum, bu arada MDI formlarda olduğu gibi, örneğin Cari ve Stok formları ard arda açıldı, Stok formu en son açıldığı için BringToFront durumunda, ama kullanıcı bu formu yana sürükleyip altta görünen Cari formunda herhangi bir yere yada nesneye tıkladığında o formun öne gelmesini istiyorum (bu arada formların borderstyle özellikleri BsNone) 

Not : Projeyi MDI olarak yazamıyorum, Borderları açamıyorum (görsellik için).

Aşağıdaki linkte iki yöntemden bahsediliyor. Bu yöntemleri deneyebilirsiniz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

procedure TCariForm.FormActivate(Sender: TObject);
begin
  ActionList.State := asNormal;
end;

procedure TCariForm.FormDeactivate(Sender: TObject);
begin
  ActionList.State := asSuspended;
end;
WWW
Cevapla
#3
(08-04-2017, Saat: 13:31)csunguray Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAşağıdaki linkte iki yöntemden bahsediliyor. Bu yöntemleri deneyebilirsiniz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

procedure TCariForm.FormActivate(Sender: TObject);
begin
  ActionList.State := asNormal;
end;

procedure TCariForm.FormDeactivate(Sender: TObject);
begin
  ActionList.State := asSuspended;
end;

Kodu görünce inşallah olur demiştim fakat maalesef olmuyor hocam, şöyle ki : misal cari formu create ediyorum üstüne stok formunu create ediyorum fakat parent i panel olduğu için formactive tetiklenmiyor ne zaman ki form içindeki herhangi bir nesneye tıklarsam ancak o zaman activate aktif oluyor ve çalışıyor, üstteki stok formunu aktif edip esc yapıyorum close çalışıyor alttaki cari formu haliyle ortada kalıyor ve içindeki herhangi bir nesneye tıklamazsam activate tetiklenmiyor Sad
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#4
(08-04-2017, Saat: 12:36)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSelam birkaç gündür uğraşıyorum fakat bir türlü çözüm üretemedim. 
Olay şu : 1 adet ana formum var, diğer formları (Cari,Stok vs.vs.) bu form üzerinde bulunan bir Panel içerisine açıyorum (Parent ile), durum böyle olunca tabi diğer formlar üzerinde bulunan actionmanager deki action lar çalışmıyor. Her formda 11 adet action var (Yeni, Değiştir,İncele vs.vs.) ve fonksiyon tuşları ile çalışıyor (F2-F12). Bende bu problemi çözmek için bir yol arıyorum. 

Düşüncem şu : action u ana form üzerine koyuyorum, F2:kaydet gibi, Örneğin panel üzerinde cari formunu create ettiğimde F2 ye basıldığında cari formundaki Act_Kaydet action unun çalışmasını istiyorum, bu arada MDI formlarda olduğu gibi, örneğin Cari ve Stok formları ard arda açıldı, Stok formu en son açıldığı için BringToFront durumunda, ama kullanıcı bu formu yana sürükleyip altta görünen Cari formunda herhangi bir yere yada nesneye tıkladığında o formun öne gelmesini istiyorum (bu arada formların borderstyle özellikleri BsNone) 

Not : Projeyi MDI olarak yazamıyorum, Borderları açamıyorum (görsellik için).

Merhaba, cari, stok vb. formları panel içinde açarken nasıl bir yöntem izliyorsunuz.
şöyle mi yapıyorsunuz cari formu (frmCari) create ediyorsunuz ve panel (pnlAna) ile parent yapıyorsunuz;
frmCari ile işiniz bitince freeandfree(frmCari) diyip stok formu (frmStok) create edip ve panel (pnlAna) ile parent mı yapıyorsunuz.
özetle panelde (pnlAna) tek bir form create edilmiş olarak mı mevcut
Cevapla
#5
(09-04-2017, Saat: 01:08)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba, cari, stok vb. formları panel içinde açarken nasıl bir yöntem izliyorsunuz.
şöyle mi yapıyorsunuz cari formu (frmCari) create ediyorsunuz ve panel (pnlAna) ile parent yapıyorsunuz;
frmCari ile işiniz bitince freeandfree(frmCari) diyip stok formu (frmStok) create edip ve panel (pnlAna) ile parent mı yapıyorsunuz.
özetle panelde (pnlAna) tek bir form create edilmiş olarak mı mevcut

Yok hayır o şekilde değil, Misal kullanıcı Cari formunu açtı üzerine stok formunuda açabiliyor veya cari, stok, fatura,irsaliye vs.vs. hepsini de açabiliyor, Formları üstündeki panellerden tutup sürükleyebiliyor, mesela cari formu üstte onu yana çekip stok formunun üstündeki panele tıklayınca cari alta geçip stok üste geliyor. işi bitince kapatıp tekrar cari formundan işlem yapabiliyor, kısaca kendim bi mdichild yazmaya çalıştım yani.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#6
Tıklanan panel ve içindekilerin en üstte gözükmesi için şöyle bir kod buldum:
procedure ChangeControlZOrder(Sender: TObject; MoveUp: Boolean = True);
var
 I, Curr: Integer;
 Control: TControl;
 List: TList;
begin
 if Sender is TControl then
 begin
   Control := Sender as TControl;
   if Control.Parent = nil then
     Exit;

   Curr := -1;
   for I := 0 to Pred(Control.Parent.ControlCount) do
     if Control.Parent.Controls[I] = Sender then
     begin
       Curr := I;
       Break;
     end;

   if Curr < 0 then
     Exit;

   List := TList.Create;
   try
     if MoveUp then
     begin
       for I := Curr + 2 to Pred(Control.Parent.ControlCount) do
         List.Add(Control.Parent.Controls[I]);

       Control.BringToFront;

       for I := 0 to Pred(List.Count) do
         TControl(List[I]).BringToFront;
     end else begin
       for I := 0 to Curr - 2 do
         List.Add(Control.Parent.Controls[I]);

       Control.SendToBack;

       for I := Pred(List.Count) downto 0 do
         TControl(List[I]).SendToBack;
     end;
   finally
     List.Free;
   end;
 end;
end;

Denediğimde başarılı olduğunu gördüm:
ekran.gif
There's no place like 127.0.0.1
WWW
Cevapla
#7
@SimaWB evet kod çalışıyor, formlardaki herhangi bir nesne yada forma tıklayınca öne getirdi fakat tam olarak işime yaramadı yine. Actionlistler maalesef çalışmıyor. Bu şekilde yazmaktan vageçicem gibi. MDI gibi çalışsın istiyorum fakat bir sürü kod yazmam gerekicek.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#8
İki farklı soruyu tek bir topik içinde sorunca böyle şeyler oluyor Smile

Action'larla ilgili problem için önerim: Formun Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol özelliği.
Örneğin F2'ye basıldığında; hangi bileşen üzerindeyken basıldığını ActiveControl ile tespit edebilirsin.
There's no place like 127.0.0.1
WWW
Cevapla
#9
SendMessage ve PostMessage konularını da bir incele istersen farklı olarak.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  yazıcı için form tasarımı yapmak. Bay_Y 4 309 17-07-2018, Saat: 16:01
Son Yorum: engerex
  form içindekiler arsl01 2 186 16-07-2018, Saat: 14:40
Son Yorum: arsl01
  Form.create arsl01 12 521 03-07-2018, Saat: 14:27
Son Yorum: arsl01
  [ÇÖZÜLDÜ]-Başka Uygulamadaki MDIChild Form Handle Alma hi_selamlar 9 423 29-06-2018, Saat: 09:52
Son Yorum: hi_selamlar
  İki Application Clasından iki Farklı Form Create Etme witalihakko 2 260 01-06-2018, Saat: 12:17
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi