Treeview itemsi stringi alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Treeview itemsi stringi alma

Mesaj gönderen vedatkaba »

TreeView Nesnesinde isteğim itemsin string kısmını(adını) nasıl alırım.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

procedure TForm1.TreeView1Click(Sender: TObject);
var
  Node: TTreeNode;
  MousePos: TPoint;
begin
  MousePos := Mouse.CursorPos;
  MousePos := TreeView1.ScreenToClient(MousePos);
  Node := TreeView1.GetNodeAt(MousePos.X, MousePos.Y);
  if Node = nil then
    Edit1.Text := ''
  else
    Edit1.Text := Node.Text;
end;
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

hocam bu şekilde alabiliriz tamam ama mesela bir items var adını biliyoruz....şöle bir fonksiyon yazdım

Kod: Tümünü seç

function TForm1.treeGuncelle(Anode: TTreeNode;
  Listem: TStringList): string;
  var
  i:integer;
begin
for i:=0 to listem.Count-1 do
begin
form2.TreeView1.Items.AddChild(anode,listem.Strings[i]);
end;
end;
parametre gönderirken

Kod: Tümünü seç

var
         liste:TstringList;
        begin
        liste:=Tstringlist.create;
 ///////burada listeyi doldurdum...
treeguncelle('Vedat',liste);
      
Ben burda node kısmını İstediğim bir items in adını belirterek gönderemedim haliyle hata verdi.ama bir node belirterek o nodeye bir

Kod: Tümünü seç

node:=form2.TreeView1.Items.Item[1];
Bu şekilde aktararak oluyor ama ben isimi belirrterek nasıl gönderirim.parametre belirtirken bir hata yaptım galiba.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender : TObject);
var
  Listem: TStringList;
begin
  Listem := TStringList.Create;
  Listem.Add('lazio');
  // ... stringlist e ekleme yap...
  TreeGuncelle('aaaa', Listem);  // aaaa isimli noda stringlist i gönder
end;

Kod: Tümünü seç

function TForm1.TreeGuncelle(xNode : string; Listem : TStringList) : string;
var
  Node : TTreeNode;
  i : Integer;
begin
  Node := TreeView1.Items.GetFirstNode;
  while Node <> nil do
  begin
    if Node.Text = xNode then
    begin
      for i := 0 to listem.Count - 1 do
        TreeView1.Items.AddChild(Node, Listem.Strings[I]);
      break;
    end;
    Node := Node.GetNextSibling;
  end;
end;
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

siz eklemeyi başarabildinizmi bilmiyorum ama ben başaramadım hocam.neden se olmadı biryerde bir sorun var ama nerde bulamadım.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

ben ekledim hocam.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function TreeGuncelle(xNode : string; Listem : TStringList) : string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.TreeGuncelle(xNode : string; Listem : TStringList) : string;
var
  Node : TTreeNode;
  i : Integer;
begin
  Node := TreeView1.Items.GetFirstNode;
  while Node <> nil do
  begin
    if Node.Text = xNode then
    begin
      for i := 0 to listem.Count - 1 do
        TreeView1.Items.AddChild(Node, Listem.Strings[I]);
      break;
    end;
    Node := Node.GetNextSibling;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Listem: TStringList;
begin
  Listem := TStringList.Create;
  Listem.Add('lazio');
  // ... stringlist e ekleme yap...
  TreeGuncelle('aaaa', Listem);  // aaaa isimli noda stringlist i gönder
end;

end.

Kod: Tümünü seç

object Form1: TForm1
  Left = 266
  Top = 55
  Width = 870
  Height = 500
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object TreeView1: TTreeView
    Left = 48
    Top = 56
    Width = 121
    Height = 97
    Indent = 19
    TabOrder = 0
    Items.Data = {
      020000001D0000000000000000000000FFFFFFFFFFFFFFFF0000000000000000
      04616161611D0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
      000462626262}
  end
  object Button1: TButton
    Left = 240
    Top = 104
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 1
    OnClick = Button1Click
  end
end
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Evet hocam şimdi ekledim.Oldu elinize sağlık.

Mesela 1 den fazla ebeveyn items ekli ise treevievde ve bu ebeveynlerin alt dalları var ben birinci değilde 3. ebeveynin altındaki bir alt dala ekleme yapmak istesem nasıl bir yol izleyebiliriz.fikriniz varmı.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Aşağıdaki kod Parent yada Child olup olmadığı farketmez, Node tutuyorsa ekler...

Kod: Tümünü seç

function TForm1.TreeGuncelle(xNode : string; Listem : TStringList) : string;
var
  tmpNode, Node : TTreeNode;
  SubStatus : Boolean;
begin
  SubStatus := True;
  Node := TreeView1.Items.GetFirstNode;
  while Node <> nil do
  begin
    if Node.Text = xNode then
    begin
      Ekle(Node, Listem);
      break;
    end
    else if (Node.HasChildren) and (SubStatus) then
    begin
      Node := Node.getFirstChild;
      Continue;
    end
    else
    begin
      tmpNode := Node;
      Node := Node.GetNextSibling;
      SubStatus := True;
      if Node = nil then
      begin
        Node := tmpNode;
        Node := Node.Parent;
        SubStatus := False;
      end;
      Continue;
    end;
    Node := Node.GetNextSibling;
  end;
end;
DeveloperToolKit

..::|YeşilMavi|::..
Cevapla