Форум: "Начинающим";
Текущий архив: 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