Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.12.2012, 14:57
Feraset Feraset вне форума
Прохожий
 
Регистрация: 23.12.2012
Сообщения: 3
Репутация: 10
Радость TreeView. Проблема с дочерними узлами

Здравствуйте помогите пожалуйста разобраться.
Есть дерево:
Слово1
.Синоним1
.Синоним2
.Синоним3
Слово2
.Синоним1
.Синоним2
.Синоним3
......
Загружаемое в treeview из txt файла. Есть поле memo в котором при написании Слово1(2,3,4....) оно заменялось на один из СВОИХ синонимов. Слов может быть неограниченное количество. Вопрос: Как одному элементу обратится ко всем ЕГО дочерним элементам.
Вот код который на данный момент существует.

Код:
unit Unit1; 

interface 

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

type 
   TForm1 = class(TForm) 
     mmo1: TMemo; 
     tv1: TTreeView; 
     lbl1: TLabel; 
     lbl2: TLabel; 
     button2: TButton; 
     button3: TButton; 
     procedure FormCreate(Sender: TObject); 
     procedure mmo1Change(Sender: TObject); 
     procedure button3Click(Sender: TObject); 
   private 
     { Private declarations } 
   public 
     { Public declarations } 
   end; 

var 
   Form1: TForm1; 
    h,n,l:integer; 
    t: TTreeNode; 

implementation 

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  tv1.LoadFromFile('slovar.txt'); 
  Randomize; 
end; 

procedure TForm1.mmo1Change(Sender: TObject); 
var i,s: Integer; 
     CurPos: TPoint; 
begin 
   CurPos := mmo1.CaretPos; 
   for i:=0 to mmo1.Lines.Count do 
   for s:=0 to 19 do 
       if AnsiPos(tv1.Items.Item[s].Text , mmo1.Lines[i])<>0 then 
         begin 
             mmo1.lines.text:=StringReplace(mmo1.lines.text , tv1.Items.Item[3].Text , tv1.Items.Item[Random(5)].Text ,[rfreplaceall]); 
             break; 
         end; 
    mmo1.CaretPos := CurPos; 
end; 

procedure TForm1.button3Click(Sender: TObject); 
begin 
mmo1.Lines.SaveToFile('TEXT.txt'); 
end; 

end.
Ответить с цитированием
  #2  
Старый 23.12.2012, 15:07
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
for i := 0 to pred(item.childscount) do
  Foo(item[i]);
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 23.12.2012, 15:29
Feraset Feraset вне форума
Прохожий
 
Регистрация: 23.12.2012
Сообщения: 3
Репутация: 10
По умолчанию

[Error] Unit1.pas(55): Undeclared identifier: 'item' ? Чтот я даже не понял.
Как я понял - pred уменьшает значение на единицу.
Foo(item[i]); - а это ещё что? Первый раз вижу такую функцию..

Последний раз редактировалось Feraset, 23.12.2012 в 15:32.
Ответить с цитированием
  #4  
Старый 23.12.2012, 16:37
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

это пример.
item - нод дерева, у которого бегаем по дочкам.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 23.12.2012, 17:13
Feraset Feraset вне форума
Прохожий
 
Регистрация: 23.12.2012
Сообщения: 3
Репутация: 10
По умолчанию

совсем теперь ничего не понимаю. У меня delphi конструкцию childcount не распознаёт.
Код:
begin
 if Key=32 then
    CurPos := mmo1.CaretPos;
  for i := 0 to pred(item.childscount) do
  Foo(item[i]);
  for s:=0 to 19 do
      if AnsiPos(tv1.Items.Item[s].Text , mmo1.Lines[i])<>0 then
        begin
            mmo1.lines.text:=StringReplace(mmo1.lines.text , tv1.Items.Item[s].Text , tv1.Items.Item[Random(5)].Text ,[rfreplaceall]);
            break;
        end;
   mmo1.CaretPos := CurPos;
end;
Ответить с цитированием
  #6  
Старый 23.12.2012, 18:24
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Там вроде просто count, навскидку не помню. Для наглядности написал ChildsCount.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025