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

Вниз

Здравтсвуйте уважаемые программисты. Как мне решить проблемму...   Найти похожие ветки 

 
uka ©   (2007-02-05 13:47) [0]

Здравтсвуйте уважаемые программисты. Как мне решить проблемму вот такого плана. В папке находятся веб-странички. Необходимо занести названия файлов в ветви TreeView и при выборе ветви соответственно открывался свой файл.


 
Плохиш ©   (2007-02-05 13:53) [1]


> Как мне решить проблемму

Надо начать с изучения теории.


 
RASkov   (2007-02-05 13:57) [2]

> Как мне решить проблемму вот такого плана

То, что ты написал, это не проблема, а задача....
Сканируй папку на наличие нужных файлов, строй дерево, обрабатывай события TreeView...
Будут проблемы спрашивай....


 
Elen ©   (2007-02-05 14:07) [3]


> uka

Если в D7 еще есть TshellTreeView можеш использовать его, настроив на нужную папку.


 
uka ©   (2007-02-05 14:20) [4]

В том и проблемма, что я не знаю как сканировать.


 
RASkov   (2007-02-05 14:30) [5]

> [3] Elen ©   (05.02.07 14:07)

из D7
object ShellTreeView1: TShellTreeView
 Left = 16
 Top = 16
 Width = 281
 Height = 253
 ObjectTypes = [otNonFolders]
 Root = "C:\TEMP"
 UseShellImages = True
 AutoRefresh = False
 Indent = 19
 ParentColor = False
 RightClickSelect = True
 ShowRoot = False
 TabOrder = 0
end
но у него нет похоже фильтра по типу файлов....

> [4] uka ©   (05.02.07 14:20)

Поищи здесь на форуме FindFirst, FindNext, FindClose....
Вот кусок из хелпа:
procedure TForm1.Button1Click(Sender: TObject);

var
 sr: TSearchRec;
 FileAttrs: Integer;
begin
 StringGrid1.RowCount := 1;
 if CheckBox1.Checked then
   FileAttrs := faReadOnly
 else
   FileAttrs := 0;
 if CheckBox2.Checked then
   FileAttrs := FileAttrs + faHidden;
 if CheckBox3.Checked then
   FileAttrs := FileAttrs + faSysFile;
 if CheckBox4.Checked then
   FileAttrs := FileAttrs + faVolumeID;
 if CheckBox5.Checked then

   FileAttrs := FileAttrs + faDirectory;
 if CheckBox6.Checked then
   FileAttrs := FileAttrs + faArchive;
 if CheckBox7.Checked then

   FileAttrs := FileAttrs + faAnyFile;

 with StringGrid1 do
 begin
   RowCount := 0;

   if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then

   begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[1,RowCount-1] := sr.Name;
       Cells[2,RowCount-1] := IntToStr(sr.Size);
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);
   end;
 end;
end;


 
Elen ©   (2007-02-05 14:49) [6]


> RASkov

Да фильтра нет, но если автор реализует запуск только нужных ему файлов, и к тому же в этой папке будут содержаться только эти файлы то проблем особых не будет, и ему не придется возиться с построением дерева (А там ведь рекурсии могут быть) :)


 
RASkov   (2007-02-05 14:53) [7]

> А там ведь рекурсии могут быть

Если только для папки(без подкаталогов) то без рекурсии :)

> к тому же в этой папке будут содержаться только эти файлы
> то проблем особых не будет, и ему не придется возиться с
> построением дерева

Ну это ему виднее...


 
Elen ©   (2007-02-05 14:56) [8]


> но у него нет похоже фильтра по типу файлов....

Кстати есть DirectoryListBox.


 
RASkov   (2007-02-05 15:10) [9]

> Кстати есть DirectoryListBox.

А чем он может помочь? :)


 
RASkov   (2007-02-05 15:12) [10]

> [8] Elen ©   (05.02.07 14:56)

Наверное всетаки - FileListBox....


 
Elen ©   (2007-02-05 15:19) [11]

Удалено модератором
Примечание: Флуд


 
RASkov   (2007-02-05 15:29) [12]

> [11] Elen ©   (05.02.07 15:19)

Какой всё таки, с одной стороны, умный у тебя Пунто :) в классах Delphi шарит :)
> автору
FileListBox - в "плоском" виде отобразит все файлы (сканирование отпадает), обработай только клик...
Но если тебе необходимо строить дерево т.е. делить найденные файлы на группы то - TreeView и свой алгоритм построения дерева в момент сканирования папки...


 
uka ©   (2007-02-06 07:27) [13]

Фильтр есть.
Все файлы с расширением .htm или .html
Можете какой-нибудь примерчик дать с FileListBox?


 
RASkov   (2007-02-06 10:31) [14]

> [13] uka ©   (06.02.07 07:27)
> и при выборе ветви соответственно открывался свой файл.

Поясни, что надо.... чтоб зарегистрированной программой открывался (IE, Opera) или в твоей?


 
uka ©   (2007-02-06 11:55) [15]

В моей проге открывалась эта страничка.


 
Elen ©   (2007-02-06 12:05) [16]


> Можете какой-нибудь примерчик дать с FileListBox?

Ага :

procedure TForm1.FileListBox1DblClick(Sender: TObject);
begin
WinExec(pchar(FileListBox1.Items[FileListBox1.itemindex]),1);
end;


 
uka ©   (2007-02-06 20:42) [17]

Нет этот вариант не подходит. Мне нужно чтобы имена файлов считывались в ветви дерева(TreeView) и при выборе какой-то ветви открывался своя веб-страничка в маоей проге.


 
RASkov   (2007-02-06 20:47) [18]

> [17] uka ©   (06.02.07 20:42)

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, OleCtrls, SHDocVw, FileCtrl, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   WB: TWebBrowser;
   FL: TFileListBox;
   procedure FLClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 FL.Directory:="<Путь к паке с твоими файлами>";
end;

procedure TForm1.FLClick(Sender: TObject);
begin
 WB.Navigate(FL.FileName);
end;

end.


 
iXT ©   (2007-02-06 20:51) [19]

1. Учись работать с FindFirst, FindNext, ..
2. Учись работать с TreeView
3. Не дано!


 
RASkov   (2007-02-06 20:51) [20]

> [17] uka ©   (06.02.07 20:42)

*FL.Directory:="<Путь к папке с твоими файлами>";
Я тебе полностью всю твою программу написал в [18] :)


 
uka ©   (2007-02-07 18:28) [21]


> RASkov   (06.02.07 20:51) [20]
> > [17] uka ©   (06.02.07 20:42)
>
> *FL.Directory:="<Путь к папке с твоими файлами>";
> Я тебе полностью всю твою программу написал в [18] :)

Ты извини меня, но я не то имел ввиду. Мне не нужен FileListBox. Мне нужно чтобы имена считывалиьс в TreeView. Или без FileListBox нельзя этого сделать?


 
RASkov   (2007-02-07 18:45) [22]

> [21] uka ©   (07.02.07 18:28)

Я упростил твою задачу, но хозяин барин...
Тогда [19]
Ищешь нужные тебе файлы и добавляешь по своему вкусу в TreeView.
Обрабатываешь клики по TreeView, извлекаешь из Node имя файла(придумай как его тебе там хранить, можно в тексте, конечно, полностью имя с путем) и WebBrowser.Navigate(FileName);


 
uka ©   (2007-02-07 20:09) [23]

А как искать эти файлы?


 
RASkov   (2007-02-07 21:06) [24]

> [23] uka ©   (07.02.07 20:09)

[19] 1 пункт.


 
uka ©   (2007-02-07 21:08) [25]

Благодарю. Я уже решил эту задачу. А как сделать, чтобы они заполнялись в дерево в определенном порядке?


 
RASkov   (2007-02-07 21:17) [26]

> [25] uka ©   (07.02.07 21:08)

Ну это только тебе известно...


 
uka ©   (2007-02-08 08:02) [27]

А как сделать заполнение по маске ".html"?


 
Elen ©   (2007-02-08 08:13) [28]


> А как сделать заполнение по маске ".html"?

В   if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then в этот эдит ставиш типа "d:\MoyaPapka\*.html"


 
uka ©   (2007-02-08 08:15) [29]

Что за параметры FileAttrs, sr?


 
Elen ©   (2007-02-08 08:19) [30]


> Что за параметры FileAttrs, sr?

А в справочке почитать?


 
uka ©   (2007-02-08 08:33) [31]

Точно, благодарю. Видимо еще не совсем проснулся.
А ты не знаешь ответа на вопрос [25]?


 
RASkov   (2007-02-08 08:38) [32]

> А как сделать, чтобы они заполнялись в дерево в определенном
> порядке?

Ты сам на него попробуй ответить.
Кто порядок определяет? В каком - алфавитном или еще каком....


 
Elen ©   (2007-02-08 08:43) [33]


> RASkov   (08.02.07 08:38) [32]

Наверное автор имел ввиду чтобы FindFirst...FindNext возвращал список отсортированный либо по дате либо по алфавиту, по размеру и.т.д. (Как это командер делает)


 
RASkov   (2007-02-08 08:47) [34]

> [33] Elen ©   (08.02.07 08:43)

Если честно, то я не знаю, что имеет ввиду автор, поэтому и предлогаю ему определиться с порядком.
Но похоже он вообще еще не проснулся:)


 
uka ©   (2007-02-08 08:50) [35]

В алфавитном не получится. Мне нужно, чтобы высраивалось вот так:
Введение
1.Глава
2.Глава
....
А у меня получается:
1.Глава
2.Глава
Введение.


 
Elen ©   (2007-02-08 08:54) [36]


> uka ©   (08.02.07 08:50) [35]

Ну-у-у. Это спорный порядок. Тебе значит нужно куча IFов. Мой совет назвать файлы соответствующим образом :

001 - Введение
002 - 1.Глава
003 - 2.Глава

Ну и т.д. И тогда избавишся от проблем сортировки


 
uka ©   (2007-02-08 08:59) [37]

А как тогда потом избавиться от 001-003 и от расширения файлов?


 
Elen ©   (2007-02-08 09:01) [38]


> А как тогда потом избавиться от 001-003 и от расширения
> файлов?

Не сложно, но зачем?


 
uka ©   (2007-02-08 09:03) [39]

Так нужно. Так было сказано .


 
Elen ©   (2007-02-08 09:06) [40]


> Так нужно. Так было сказано .

Кем сказано? Это что контрольная.


 
evvcom ©   (2007-02-08 09:19) [41]

Вроде экзамены студенты уж все посдавали. Хотя... Двоечники как раз, наверное, сейчас и переэкзаменуются?

> [37] uka ©   (08.02.07 08:59)
> А как тогда потом избавиться от 001-003 и от расширения файлов?

Delete или Copy


 
RASkov   (2007-02-08 09:28) [42]

> [37] uka ©   (08.02.07 08:59)

Это уже другая тема и если ты непонял о чем в [41] то нет смысла дальше отвечать...
Либо приведи свой метод заполнения TreeView, и покажи где у тебя не получается.


 
uka ©   (2007-02-08 21:37) [43]

Благодарю всех, кто откликнулся. Я решил данную задачу.
Данную тему можно закрыть.



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

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

Наверх




Память: 0.57 MB
Время: 0.031 c
15-1170374311
hmmm
2007-02-02 02:58
2007.02.25
PHPMyAdmin


1-1168005013
Igor_Z
2007-01-05 16:50
2007.02.25
Вкладки в свойстве файла


15-1170333812
xayam
2007-02-01 15:43
2007.02.25
Authorware 7


15-1170328942
апмав
2007-02-01 14:22
2007.02.25
stdcall


2-1170671273
kail
2007-02-05 13:27
2007.02.25
запуск программы один раз