Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
«А можно ли получить список файлов без программирования»? Нет, нельзя ;-) Ведь надо хотя бы изъявить о своём желании ;-) 01.11.04 17:10 Число просмотров: 1999
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 01.11.04 17:12 Количество правок: 1
|
> OpenDialog'a (в смысле, в OpenDialog выбрать несколько > файлов) в ListBox? Можно. Примерно так.
procedure TForm1.Button1Click(Sender: TObject);
Var
aDial: TOpenDialog;
anOptions: TOpenOptions;
begin
aDial := TOpenDialog.Create(Self);
Try
anOptions := aDial.Options;
Include(anOptions, ofAllowMultiSelect);
aDial.Options := anOptions;
If Not aDial.Execute Then Exit;
ListBox1.Items.AddStrings(aDial.Files);
Finally
aDial.Free;
End;
end;
---
Можно не создавать диалог динамически, а обращаться к тому, что положишь на форму. Принцип тот же. К тому же удобно настраивать опции диалога, сразу Object Inspector'ом.
|
<programming>
|
[Delphi] работа с файлами в директории 01.11.04 08:21
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
|
Два вопроса по этой теме:
1. как с каждым файлом из указанной директории сделать одни и те же действия?
2. как сделать диалог выбора директории (на закладке Dialogs такого нет, обычный OpenDialog не пашет)?
|
|
[Delphi] Я дарю его тебе ;-) 01.11.04 09:35
Автор: HandleX <Александр М.> Статус: The Elderman
|
> Два вопроса по этой теме: > 1. как с каждым файлом из указанной директории сделать одни > и те же действия? Юзай Win32API... FindFirstFile() - FindNextFile() - FindClose()
> 2. как сделать диалог выбора директории (на закладке > Dialogs такого нет, обычный OpenDialog не пашет)? Дарю тебе целый Unit. Надеюсь, разберёшься... Можешь потом использовать его в любой из своих программ.
unit SHBrowseFolder;
interface
Uses Windows, SysUtils;
Function BrowseFolder(aWndOwner: THandle; aTitle: String; FromPath: String = ''): String;
implementation
Uses ActiveX, ShlObj;
Var fSHMalloc: IMalloc = Nil;
Function BrowseCallbackProc(ahwnd: HWND; uMsg: UINT; alParam, lpData: LPARAM): integer; StdCall;
Begin
If uMsg = BFFM_INITIALIZED Then
PostMessage(ahwnd, BFFM_SETSELECTION, DWORD(True), DWORD(lpData));
Result := 0;
End;
Function BrowseFolder(aWndOwner: THandle; aTitle: String; FromPath: String = ''): String;
Var
anInfo: TBrowseInfo;
aResult: PItemIDList;
Begin
ZeroMemory(@anInfo, SizeOf(anInfo));
anInfo.hwndOwner := aWndOwner;
anInfo.lpszTitle := PChar(aTitle);
anInfo.ulFlags := BIF_RETURNONLYFSDIRS;
If FromPath <> '' Then
Begin
anInfo.lpfn := @BrowseCallbackProc;
anInfo.lParam := DWORD(PChar(FromPath));
End;
aResult := SHBrowseForFolder(anInfo);
If aResult = Nil Then Abort;
Try
SetLength(Result, MAX_PATH);
Win32Check(SHGetPathFromIDList(aResult, PChar(Result)));
SetLength(Result, StrLen(PChar(Result)));
Finally
fSHMalloc.Free(aResult);
End;
End;
Initialization
Win32Check(SHGetMalloc(fSHMalloc) = NOERROR);
Finalization
If fSHMalloc <> Nil Then
fSHMalloc._Release;
end.
---
|
| |
За подарок спасибо, только такой вопрос: 01.11.04 14:22
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member Отредактировано 01.11.04 15:37 Количество правок: 1
|
За подарок спасибо, только такой вопрос:
> Юзай Win32API... FindFirstFile() - FindNextFile() - > FindClose() есть ли альтернативный вариант? просто получить список файлов в директории и с каждым из них проделать одинаковые действия?
ах да, и ещё кое-что, как загнать сразу несколько файлов из OpenDialog'a (в смысле, в OpenDialog выбрать несколько файлов) в ListBox?
|
| | |
«А можно ли получить список файлов без программирования»? Нет, нельзя ;-) Ведь надо хотя бы изъявить о своём желании ;-) 01.11.04 17:10
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 01.11.04 17:12 Количество правок: 1
|
> OpenDialog'a (в смысле, в OpenDialog выбрать несколько > файлов) в ListBox? Можно. Примерно так.
procedure TForm1.Button1Click(Sender: TObject);
Var
aDial: TOpenDialog;
anOptions: TOpenOptions;
begin
aDial := TOpenDialog.Create(Self);
Try
anOptions := aDial.Options;
Include(anOptions, ofAllowMultiSelect);
aDial.Options := anOptions;
If Not aDial.Execute Then Exit;
ListBox1.Items.AddStrings(aDial.Files);
Finally
aDial.Free;
End;
end;
---
Можно не создавать диалог динамически, а обращаться к тому, что положишь на форму. Принцип тот же. К тому же удобно настраивать опции диалога, сразу Object Inspector'ом.
|
| | | |
Благодарю. И, если не возражаете, ещё один вопрос: 02.11.04 01:36
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member Отредактировано 02.11.04 01:37 Количество правок: 1
|
Благодарю. И, если не возражаете, ещё один вопрос:
Как получить значение указанной строки из ListBox в переменную типа string?
|
| | | | |
А ты справку почитать не пробовал??? 02.11.04 07:07
Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
|
> Благодарю. И, если не возражаете, ещё один вопрос: > Как получить значение указанной строки из ListBox в > переменную типа string?
var
MyString : AnsiString;
....
MyString := ListBox1.Items.Strings[i];
где i - номер строки в листбоксе.
<private>А вообще, после прочтения твоих вопросов, у меня складывается стойкое впечатление, что справочных руководств (да того же встроенного хелпа в делфю) ты не читаешь в принципе. Никогда.
Либо у тебя большие проблемы с английским (учите, молодой человек, учите непременно!) или вообще нет никаких способностей к программированию (во что очень не хочется верить).</private>
|
|
|