Action list

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
orhanto
Üye
Mesajlar: 7
Kayıt: 13 Şub 2004 04:39
Konum: Adana

Action list

Mesaj gönderen orhanto »

Programımda birden cok grid kullanmaktayım.Dbgridteki bilgileri export edecek bir copmponent buldum. Bu komponenti kullanarak dbgrid üzerindeki verileri dosyaya export ediyorum. Bunun için bir adet actionlist bir adet te Popupmenu kullanıyorum.
Şunu merak ediyorum Aynı form uzerınde aynı popupmenu ve actıon listesini kullanan 2 dbgrid var .
Hangi dbgrid üzerinde popupmenu çalışırsa ona ait bilgileri export etmem gerekli aşağıdaki action execute olayına dbgrid1 yada dbgrid2 parametresini nasıl gonderenilirim.



procedure TMaimForm.Export(Sender: TObject);
begin

exporttofile(FileName, dbGrid1,True,True);

end;

İyi Çalışmalar

Sorum biraz acemi veya aptalca olabilir Kusura bakmayın Delphide yeniyim.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

exporttofile(FileName, dbGrid1,True,True); Bu kodda zaten DBGrid1 parametresini görüyorsun orayı değiştirdiğin zaman istediğin olacaktır.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

actionlist ile gonderemezsin
cunku sender aslında actionitem vs. oluyor...
direkt popupmenuyu kullansan yine sorun olur gibi
cunku bu seferde sender menuitem oluyor...
en saglıklısı bir fonk. yada proc haline getirip
herbir dbgrid icin ayrı ayrı yazmak
iki dbgrid icin iki popup menu (eger sayısı az ise sorun olmaz biraz kod kalabalıgı)
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
orhanto
Üye
Mesajlar: 7
Kayıt: 13 Şub 2004 04:39
Konum: Adana

Mesaj gönderen orhanto »

Bukadar kısa surede cevap yazdığınız için teşekkür ederim.Araştırmalarımda şöyle bir fonksiyona rastladım.Ama tam Çözemedim.Boyle bir fonksiyon uyarlayıp mouse hangi i grid üzerinde ise onun bilgisini alamazmıyım.


procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
Cur : TPoint;
begin

GetCursorPos(Cur);
if FindControl(windowfrompoint( Cur )).ClassType =TEdit then
label1.caption:=TEdit(FindControl(windowfrompoint( Cur ))).Text;

end;
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Sanırım ilgili menuitemin kodu calisirken bu menunun hangi grid tarafindan cagirildigini anlamak istiyorsunuz..

Benim aklima gelen cozum:
Gridin uzerine sag ya da sol tiklayinca onenter eventi tetikleniyor. Dolayisiyla tipi TDBGRid olan mesela VAR_GRID seklinde bir global degisken tanimlayip her iki gridin on enter'inda o gridi ilgili degiskene atarsınız...

sonra da

Kod: Tümünü seç

procedure TMaimForm.Export(Sender: TObject); 
begin 
exporttofile(FileName, VAR_GRID,True,True); 
end; 
dersiniz....
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

guzel cozum fahrettin abi
global degisken sadece pointer oldugu icinde bellek isgali diye bir sey olmayacak
yine gosterdin abiligini
hic aklıma gelmemisti boyle bir yontem
zamanında lazım olmustu tırmalayıp durmustumda
o zamandan beri gıcıgım actionlistlere:)
neyse bir yeni sey daha ogrenmis olduk
allah razı olsun katkılarınızdan dolayı
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

estağfirullah...
cümlemizden....

kolay gelsin....
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Mesaj gönderen ardahan »

Eğer MDI bir yapı kullanıyorsan Ana formun active MDI child ının ilgili class (TDBGrid ) namelerini kullanarak yapabilirsin.

Kod: Tümünü seç

ActiveGrid := ActiveMDIChild.FindComponent( 'DbGrid1' ) as TdbGrid;
şeklinde sonra bu grid üzerine export mu yaparsın print mi yaparsın o sana kalmış ;)
Kullanıcı avatarı
orhanto
Üye
Mesajlar: 7
Kayıt: 13 Şub 2004 04:39
Konum: Adana

Mesaj gönderen orhanto »

Önerileriniz için çok teşekkür ederim .Çok faydalı oldu.Çok Sağolun.
name
Kıdemli Üye
Mesajlar: 243
Kayıt: 09 Ağu 2003 02:11
Konum: İstanbul

Mesaj gönderen name »

Konu kapanmış gözüküyor ama aşağıda belirttiğim kod daha fazla işe yararmış gibi gözüküyor. Belirli bir olay oluştuğunda çağırılan procedure'e ilgili component'in object bilgiside (Sender: TObject) gider. Yani gönderici component'e ulaşmak için ilgili componentin sinif adı ve parantez içine "sender" parametresi yazılarak ulaşılabilir. TDbGrid(sender) ,TEdit(sender) gibi.

Kod: Tümünü seç

procedure TMaimForm.Export(Sender: TObject); 
begin 

exporttofile(FileName, TDbGrid(sender),True,True); 

end;
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

sorun sender a gecilen nesnenin tdbgrid olmaması zaten
deneyip gorebilirsin
mesela bir menu elemanının click yordamına sunu yaz
showmessage(sender.ClassName);
ÜŞENME,ERTELEME,VAZGEÇME
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Mesaj gönderen ardahan »

Neden uzatıyorsunuz mevzuyu birden fazla event çalıştırmanıza gerek yok ki bahsettiğim yöntem OOP nin klasiklerindendir ;)
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

mevzun uzadığı falan yok, Forumun amacı sadece sorulara cevap vermek değil, bilgileri paylaşmak ve insanların dağarcığını büyütüp farklı açılardan bakmayı öğretebilmek,
bir kaç öneride benden,
Bende ezelden beri actionlist lere gıcığım ve gereksiz görüyorum dolayısıyla hiç kullanmadım,

Kod: Tümünü seç

if PopupMenu1.PopupComponent = Edit1 then
   Edit1.CopyToClipboard
  else if PopupMenu1.PopupComponent = Edit2 then
    Edit2.CopyToClipboard
  else
    Beep;
görüldüğü gibi PopupComponent hangi component menüyü açtıysa onu döndürüyor, dolayısıylada burdan işlem yapmak çok daha kolay

bir diğeride Global değişken gibi, component ların Tag property lerini bunlar için kullanabilirsiniz

actionlist i sevmeme sebeblerimden biriside şimdi hatırladım galiba MenuItemdan Action a gidebiliniyor ama actiondan MenuItem a gidilemiyor du galiba yada öyle bir şeydi, bu tek yönlü erişimde sinir etmişti beni
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

menuitemdan action cagırınca abi
menuitem a erisemiyorsun
halbuki ben de menuitemin taglarına gore islem yaptırmak istiyordum lakn olmamıstı
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Ya anlayışın doğru olsun bilader :) Ben sevmediğim şeyleri çobuk unuturum zaten :)
:P İşte bi taraftan diğer tarafa erişilmiyordu ve bende ActionList in çokta faydalı bişi olmadığına kanaat getirmiştim. Ha belki bir Editör yapılacaksa ozaman biraz pratiklik sağlıyordu sanırım.
Neyse
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla