Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      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
  Form create h.k (Çözüldü ) cinarbil 12 272 25-01-2018, Saat: 12:09
Son Yorum: cinarbil
  thread form donma sorunsalı seci20 3 139 22-01-2018, Saat: 09:42
Son Yorum: edo
  Çalışma anında form tasarımı boreas 4 222 10-01-2018, Saat: 17:10
Son Yorum: boreas
Information Delphi Mail Gönderme İçin Alternatif hyperxman 4 611 27-12-2017, Saat: 21:14
Son Yorum: hyperxman
  Webbrowser form element item adları bkantur 3 110 16-12-2017, Saat: 22:30
Son Yorum: SimaWB



Konuyu Okuyanlar: 1 Ziyaretçi