Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ TOutLine.Вывод полного пути элемента схемы.

Автор: NTL 20.02.2007 21:15

Помогите вывести полный путь элемента схемы.
Например, имеется ini-файл System. При раскрытии этого файла и нажатия на [driver32] должен вывести путь:C:\WINDOWS\System\[driver32].
Ну, или что-то подобное. Может какое-нибудь свойство есть?

Код
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
  N,first,Last:word;
  TS:TStringList;
begin
with OpenDialog1 do
  if Execute then
   begin
    OutLine1.Clear;
    TS:=TStringList.Create;
    try
     TS.LoadFromFile(FileName);
     TS.Insert(0,ExtractFileName(FileName));
     for n:=TS.Count-1 downto 1 do
      begin
       s:=TS[N];
       First:=1;
       while (First<Length(s)) and((S[First]=' ')or
             (s[first]=#9)) do inc(first);
       Last:=Length(s);
       while (Last>=First) and((S[First]=' ')or
             (s[Last]=#9)) do Dec(Last);
       if last >=First then
        begin
         s:=Copy(s,First,Last-First+1);
         if (s[1]='[') and (s[length(s)]=']')
             then s:=#9+s
             else s:=#9#9+s;
         TS[N]:=s
        end
       else
        TS.Delete(N);
      end;
      OutLine1.Lines:=TS
       Finally
        TS.Free
    end
  end;

  label1.Caption:=openDialog1.FileName;
end;



Прикрепленные файлы
Прикрепленный файл  outLine.rar ( 196.62 килобайт ) Кол-во скачиваний: 212

Автор: NTL 21.02.2007 4:35

SelectedItem может поможет?

Автор: NTL 12.03.2007 14:41

Пытаюсь занести полный путь в массив.

Код
      
         if (s[1]='[') and (s[length(s)]=']')
             then
                begin
                    z:='';
                    s:=#9+s;
                    z:=s;//сохраняем слово с кв.скобками
                end
             else
                 begin
                   s:=#9#9+s;
                 end;
            TS[N]:=s;
            a[n]:=OpenDialog1.FileName+'\ '+z+s;
        end

-----
Код

procedure TForm1.Outline1Click(Sender: TObject);
var ind:integer;
    temp:string;
begin
   label1.Caption:='';
   ind:=OutLine1.SelectedItem-1;
  // temp:=outLine1.Lines.Strings[ind];
   form1.Caption:=IntToStr(ind);
   label1.Caption:= +a[ind];

end;

Но почему-то элементы нового массива в точности не совпадают со строками OutLine...

Автор: NTL 14.03.2007 12:48

Кому интересно, выкладываю:

Код
procedure TForm1.Outline1Click(Sender: TObject);
var i,ind:integer;
    temp,z:string;
begin
label1.Caption:='';
for i:= 1 to OutLine1.ItemCount do
begin
    if (Outline1.Items[i].Text[1] = '[')and
       (Outline1.Items[i].Text[Length(Outline1.Items[i].Text)] = ']')   then
      begin
          z:='';
          z:='\ '+OutLine1.Items[i].Text;
          a[i]:= z;
      end
    else a[i]:= z+'\ '+OutLine1.Items[i].Text;
end;

ind:=OutLine1.SelectedItem;
label1.Caption:=OpenDialog1.FileName+a[ind];
end;