treeview içinde hareket

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
filiz
Üye
Mesajlar: 82
Kayıt: 24 Ara 2003 08:11
Konum: İzmir

treeview içinde hareket

Mesaj gönderen filiz »

Treeview içerisinde node ların hareketini nasıl saglarım..
Aşağı, yukarı gitme şeklinde..
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

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

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;
Aşağıdaki kod key press olayı için

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;
seçim yap procedure u

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;


onclick olayına sadece

Kod: Tümünü seç

   secim_yap;

mouse move olayına

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;



şimdi bana sorsanız nasıl yaptınız diye size bilemiyorum diyeceğim. Çünkü o an kendimi yoğunlaştırmıştım. :lol: :lol:

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
Cevapla