Action list
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Action list
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.
Ş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.
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...
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.
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ı)
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
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;
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;
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
dersiniz....
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;
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ı
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
Eğer MDI bir yapı kullanıyorsan Ana formun active MDI child ının ilgili class (TDBGrid ) namelerini kullanarak yapabilirsin.
şeklinde sonra bu grid üzerine export mu yaparsın print mi yaparsın o sana kalmış 
Kod: Tümünü seç
ActiveGrid := ActiveMDIChild.FindComponent( 'DbGrid1' ) as TdbGrid;

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;
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,
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
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;
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Ya anlayışın doğru olsun bilader
Ben sevmediğim şeyleri çobuk unuturum zaten
İş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



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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!