Treeview içerisinde node ların hareketini nasıl saglarım..
Aşağı, yukarı gitme şeklinde..
treeview içinde hareket
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Merhaba,
Bir aralar treeview ile bir menü yapmıştım. Ondan bir örnek vereyim.
Mantığına bakıp kendi programınıza uyarlarsınız.
Bu kod keyup olayı için
Aşağıdaki kod key press olayı için
seçim yap procedure u
onclick olayına sadece
mouse move olayına
şimdi bana sorsanız nasıl yaptınız diye size bilemiyorum diyeceğim. Çünkü o an kendimi yoğunlaştırmıştım.
Yanlız aklımda kalan bir şey varsa baştan aşağı takip etmek gerekirse absolute index değerinin bana yaradığını hatırlıyorum şuan. mesela bir menu açık iken ayrı kapalı iken ayrı bir index değeri veriyordu. Ama absolute index olunca baştan sona numarasını veriyordu. Ben acemice yapmıştım. Belki kulağımı biraz tersten göstermiş olabilirim. Umarım bilen arkadaşlar sizi aydınlatır.
Kolay gelsin umarım bir şeyler çıkarırsınız örnekten.
Bir aralar treeview ile bir menü yapmıştım. Ondan bir örnek vereyim.
Mantığına bakıp kendi programınıza uyarlarsınız.
Bu kod keyup olayı için
Kod: Tümünü seç
procedure TF_Menu.TreeView1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
vk_up : begin key:=0;
if f_menu.TreeView1.Selected.GetprevVisible<>nil then
begin
if f_menu.TreeView1.Selected.text<>'__________________________________' then
f_menu.TreeView1.items[f_menu.TreeView1.Selected.absoluteindex].Selected:=true;
if f_menu.TreeView1.Selected.text='__________________________________' then begin f_menu.TreeView1.Selected.GetprevVisible.selected:=true; end;
end;
end;
vk_down : begin
key:=0;
if f_menu.TreeView1.Selected.GetNextVisible<>nil then begin
if f_menu.TreeView1.Selected.text<>'__________________________________' then
f_menu.TreeView1.items[f_menu.TreeView1.Selected.AbsoluteIndex].Selected:=true;
if f_menu.TreeView1.Selected.text='__________________________________' then begin f_menu.TreeView1.Selected.GetNextVisible.selected:=true; end;
end;
end;
end;
end;
Kod: Tümünü seç
procedure TF_Menu.TreeView1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
key:=#0;
secim_yap;
end;
Kod: Tümünü seç
procedure tf_menu.secim_yap;
begin
{müşteri gir } if ( treeview1.Items[0].Selected) then if not assigned(f_musteri) then f_musteri:=Tf_musteri.Create(self) else begin f_musteri.WindowState:=wsnormal; f_musteri.BringToFront; end;
{belge menüsü} if ( treeview1.Items[2].Selected) then begin if treeview1.Items[2].expanded then treeview1.items[2].Collapse(true) else treeview1.items[2].expand(true); end;
{hareket girişi} if ( treeview1.Items[3].Selected) then if not assigned(f_hareket) then f_hareket:=Tf_hareket.Create(self) else begin f_hareket.WindowState:=wsnormal; f_hareket.BringToFront; end;
{v.d. aylık döküm } if ( treeview1.Items[4].Selected) then
begin
// vergi dairelerinin toplamları
f_rapor.ibqrapor.close;
f_rapor.ibqrapor.sql.clear;
f_rapor.ibqrapor.sql.add(' select distinct(a.mvd_id), b.ismi,b.vdkayit_no from belge_hareket a, vergi_daire b where a.mvd_id=b.vdkayit_no');
f_rapor.ibqrapor.open;
f_rapor.IBQuery1.DataSource:=f_rapor.DSrapor;
f_rapor.ibquery1.close;
f_rapor.ibquery1.sql.clear;
f_rapor.ibquery1.sql.add('select cinsi, sum(miktari),count(*) from BELGE_HAREKET where mvd_id=:vdkayit_no group by cinsi');
f_rapor.ibquery1.open;
f_rapor.frReport1.LoadFromFile('vergi_daire.frf');
// f_rapor.Show;
f_rapor.frreport1.ShowReport;
end;
{defterdarlık dökümü } if ( treeview1.Items[5].Selected) then begin
f_rapor.IBQuery1.DataSource:=nil;
f_rapor.ibqrapor.close;
f_rapor.ibqrapor.sql.clear;
f_rapor.ibqrapor.sql.add('select cinsi, sum(miktari),count(*) from BELGE_HAREKET group by cinsi');
f_rapor.ibqrapor.open;
frVariables.Variable['anlasma_vd']:=
dm1.IB_vd.Lookup('vdkayit_no',(dm1.IB_firma.Lookup('frkayit_no',1,'a_deft_id')),'ismi');
f_rapor.frReport1.LoadFromFile('defterdarlik.frf');
f_rapor.frreport1.ShowReport;
end;
//if ( treeview1.Items[5].Selected) then begin f_belgetur.WindowState:=wsnormal; end;
{belge türü giriş } if ( treeview1.Items[6].Selected) then if not assigned(f_belgetur) then f_belgetur:=Tf_belgetur.Create(self) else begin f_belgetur.WindowState:=wsnormal;f_belgetur.BringToFront ; end;
{firma bilgileri } if ( treeview1.Items[8].Selected) then if not assigned(f_firma) then f_firma:=Tf_firma.Create(self) else begin f_firma.WindowState:=wsnormal;f_firma.BringToFront; end;
//if ( treeview1.Items[9].Selected) then begin f_vergi_daire.WindowState:=wsnormal; end;
{vergi daireleri } if ( treeview1.Items[10].Selected) then if not assigned(f_vergi_daire) then f_vergi_daire:=Tf_vergi_daire.Create(self) else begin f_vergi_daire.WindowState:=wsnormal; f_vergi_daire.BringToFront; end;
{diğer işl.menusu} if ( treeview1.Items[12].Selected) then begin if treeview1.Items[12].expanded then treeview1.items[12].Collapse(true) else treeview1.items[12].expand(true); end;
{dosya bakımı} if ( treeview1.Items[13].Selected) then showmessage('dosya bakımı.');
{dosya yedekleme } if ( treeview1.Items[14].Selected) then showmessage('dosya yedekleme ');
end;
Kod: Tümünü seç
secim_yap;
Kod: Tümünü seç
procedure TF_Menu.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
AnItem: TTreeNode;
AttachMode: TNodeAttachMode;
HT: THitTests;
SAYAC:INTEGER;
begin
FOR SAYAC:=0 TO treeview1.Items.Count-1 DO TREEVIEW1.Items[SAYAC].Selected:=FALSE;
HT := TreeView1.GetHitTestInfoAt(X, Y);
if (htOnItem in HT) or (htonright in ht) then
begin
AnItem := TreeView1.GetNodeAt(X, Y);
if (anitem.Text='__________________________________') then
BEGIN
TREEVIEW1.HotTrack:=FALSE;
anitem.Selected:=false;
END
else
BEGIN
TREEVIEW1.HotTrack:=TRUE;
anitem.selected:=true;
END;
end;
end;


Yanlız aklımda kalan bir şey varsa baştan aşağı takip etmek gerekirse absolute index değerinin bana yaradığını hatırlıyorum şuan. mesela bir menu açık iken ayrı kapalı iken ayrı bir index değeri veriyordu. Ama absolute index olunca baştan sona numarasını veriyordu. Ben acemice yapmıştım. Belki kulağımı biraz tersten göstermiş olabilirim. Umarım bilen arkadaşlar sizi aydınlatır.
Kolay gelsin umarım bir şeyler çıkarırsınız örnekten.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis