Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.007 c
6-1183643255
aDLER
2007-07-05 17:47
2008.04.13
Перехват траффика приложения


2-1205858255
timekiller
2008-03-18 19:37
2008.04.13
XML, Ноды, Рекурсия?


15-1204321591
Leonid Troyanovsky
2008-03-01 00:46
2008.04.13
Сегодня 29 февраля 2008 г.


2-1205676755
Res
2008-03-16 17:12
2008.04.13
Cardinal


2-1205745505
k@te4ka
2008-03-17 12:18
2008.04.13
указатель в процедуре





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский