Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
ВнизЗдравтсвуйте уважаемые программисты. Как мне решить проблемму... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.048 c