Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

TreeView   Найти похожие ветки 

 
fics ©   (2008-03-14 22:27) [0]

Здравствуйте уважаемые, подзабыл чуток уже Delphi, мне нужно следующее:

Есть TTreeView в нем строю в РанТайме дерево (удаляю, редактирую, добавляю), затем нужно по этому дереву сделать что то типа приметивной експертной системы то есть

появляются RadioBattonы (Option:=TRadioButton.Create(WorkPanel);) начиная от самого верхнего левела дерева и так взависимости от выбора идем в глубину дерева,

Нет ничего погожего в нете, никто не видел?
Дерево строить умею, добавлять удалять компоненты в рантайме тоже,

Выбрал какой то пункт в RadioButtonaх который соответсвует узлу дерева, кликнул далее, создалитсь RadioButtonы (чаилды выбранного узла) Выбрал опять какой то пункт из вновь созданных
кликнул далее, появились опять RadioButtonы и тд.


 
{RASkov} ©   (2008-03-14 22:30) [1]

Да уж... я что-то вообще ничего не понял :(


 
DVM ©   (2008-03-14 22:31) [2]

я понял лишь то, что радиобатонов будет дофига.


 
fics ©   (2008-03-14 22:35) [3]

C начала побробую, есть дерево ну скажем такое:

1--
   |--2
   |--3
4-
 |--5
 |--6

вот построил я такое дерево, кликаю на кнопке "старт" появляется(крэейтятся в рабочей области) два RadioButtonа с значениями 1 и 4, выбрал пункт 4 - создаются опять два Radio c значениями 5 и 6


 
DVM ©   (2008-03-14 22:38) [4]


> fics ©   (14.03.08 22:35) [3]

вопрос то в чем?


 
fics ©   (2008-03-14 22:39) [5]

Ну пока в том как получить список чаилдов, а потом еще может задам )


 
fics ©   (2008-03-14 22:40) [6]

Да и вообще Дельфи подзабросил, скачал бы где то и все


 
fics ©   (2008-03-14 22:40) [7]


> Ну пока в том как получить список чаилдов, а потом еще может
> задам )


Чаилдов выбранного узла


 
fics ©   (2008-03-14 22:41) [8]

Нужно еще связь как то установить между созданным Radio и узлом дерева


 
DVM ©   (2008-03-14 22:47) [9]


> Чаилдов выбранного узла

TreeView1.Selected.getFirstChild ... getNextChild можно. Можно еще перебрать в цикле все узлы и выбрать те у которых Parent выделенныйузел.


 
DVM ©   (2008-03-14 22:49) [10]


> Нужно еще связь как то установить между созданным Radio
> и узлом дерева

Свойство Data у узлов - положи туда указатель на радиобатон. А у радиобатона в свою очередь есть Tag


 
fics ©   (2008-03-14 22:54) [11]


> DVM ©

Cпасибо буду пробовать


 
{RASkov} ©   (2008-03-14 22:56) [12]

а может и такой вариант сгодится?
procedure TForm1.TreeView1Click(Sender: TObject);
var N: Integer;
begin
 RadioGroup1.Items.Clear;
 for N:=0 to TreeView1.Selected.Count-1 do RadioGroup1.Items.Add(TreeView1.Selected.Item[N].Text);
end;


 
fics ©   (2008-03-14 23:48) [13]


> {RASkov} ©   (14.03.08 22:56) [12]

Нет, спасибо ото чуток не то, нужно чтобы пользователь вообще не видел дерева,

Во а как же быть во вновь созданный Radio в tag cтрока не пишеться, в Name можно правда записать но тогда нужно чтобы узел на содержал начальных цифр, блин не охота создавать компонент с отним стринговым полем


 
fics ©   (2008-03-14 23:50) [14]

поидее же говорят что в таг можно писать все что уходно, но пишутся только цифры


 
DVM ©   (2008-03-15 00:13) [15]


> поидее же говорят что в таг можно писать все что уходно

указатель на что угодно - это целое число.


 
Германн ©   (2008-03-15 00:18) [16]


> блин не охота создавать компонент с отним стринговым полем

А компонент и не надо. Достаточно просто класс.


 
fics ©   (2008-03-15 01:35) [17]

Все всем спасибо, было очень страшно думал не зделаю
Нужно было следующее, вот кому интересно:
P.S Не включил в код редактирование TreeViewa, код и без того помоему ужасный


unit main;

interface

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

type
 Tmainf = class(TForm)
   MenuPanel: TPanel;
   TreeViewPanel: TPanel;
   FooterPanel: TPanel;
   WorkPanel: TPanel;
   Splitter: TSplitter;
   TreeView: TTreeView;
   StartBtn: TSpeedButton;
   NextBtn: TSpeedButton;
   procedure StartBtnClick(Sender: TObject);
   procedure WorkAreaClear();
   procedure NextBtnClick(Sender: TObject);
   procedure RadioPrint(Nname:String);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 mainf: Tmainf;
 Option: TRadioButton;
implementation

uses Math;

{$R *.dfm}

procedure Tmainf.WorkAreaClear();
begin

 while WorkPanel.ComponentCount > 0 do
   WorkPanel.Components[WorkPanel.ComponentCount-1].Free;

end;

procedure Tmainf.RadioPrint(Nname:String);
var
i,n,j,step: Integer;
begin
step:=0;
n:=TreeView.Items.Count;

for i:=0 to n-1 do
if TreeView.Items[i].Text = Nname then
 begin
  WorkAreaClear;

   for j:=0 to TreeView.Items[i].Count-1 do
    begin
     step:=step+20;
     Option:=TRadioButton.Create(WorkPanel);

        with Option do
         begin
          Parent:=WorkPanel;
          Name:=TreeView.Items[i].Item[j].Text;
          Left:=10;
          Top:=step;
          Caption:=TreeView.Items[i].Item[j].Text;
         end;
    end;

 end;

end;

procedure Tmainf.StartBtnClick(Sender: TObject);
var
i,n,step: Integer;
begin

WorkAreaClear;
step:=0;
n:=TreeView.Items.Count;

 for i:=0 to n-1 do
   begin

    if TreeView.Items[i].Level = 0 then
      begin
       step:=step+20;
       Option:=TRadioButton.Create(WorkPanel);

        with Option do
         begin
          Parent:=WorkPanel;
          Name:=TreeView.Items[i].Text;
          Left:=10;
          Top:=step;
          Caption:=TreeView.Items[i].Text;
         end;

      end;

   end;

end;

procedure Tmainf.NextBtnClick(Sender: TObject);
var
i: Integer;
begin

for i:=0 to WorkPanel.ComponentCount-1 do
  if (WorkPanel.Components[i] is TRadioButton) and
     (((WorkPanel.Components[i])as TRadioButton).Checked)
      then begin
       RadioPrint(((WorkPanel.Components[i])as TRadioButton).Caption);
       Exit;
      end;
end;

end.



 
fics ©   (2008-03-15 01:37) [18]

Конечно нельзя что бы были одинаковые имена у узлов, но в инстик покатит



Страницы: 1 вся ветка

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.025 c
2-1205835608
Podarok
2008-03-18 13:20
2008.04.13
Вызов функций класса


15-1204454888
Девушка
2008-03-02 13:48
2008.04.13
Классификация проблем при разработки многопользовательских прилож


2-1206015131
WildBoolean
2008-03-20 15:12
2008.04.13
TListBox +OnDrawItem


15-1204224347
Kolan
2008-02-28 21:45
2008.04.13
Компоненты(виджеты) для touch screen, сужествуют ли такие?


2-1205528631
webSQLNeederr
2008-03-15 00:03
2008.04.13
Нужно что бы OpenDialog выделял папки а не файлы