Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

11.04.2010, 22:52
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
52
|
|
Сообщение от SkyLine32
Скажите как мне создать папку в том каталоге, который выберет юзер?
procedure TForm4.Button1Click(Sender: TObject);
var
fold: string;
begin
fold := shelltreeview1.SelectedFolder.PathName;
CreateDir(fold+'000');
end;
НЕ КАТИТ!
Почему не катит?
PHP код:
CreateDir(path+'\SnapShot');
Просто скорее всего у тебя в fold идет типа 'c:\temp'
для этого надо добавить '\' и каталог который хочешь создать.
P.s. Ccылка
Последний раз редактировалось JnK; 11.04.2010 в 22:55..
|
|
|

11.04.2010, 22:57
|
|
Участник форума
Регистрация: 01.03.2009
Сообщений: 121
Провел на форуме: 4022236
Репутация:
38
|
|
Сообщение от JnK
Почему не катит?
PHP код:
CreateDir(path+'\SnapShot');
Просто скорее всего у тебя в fold идет типа 'c:\temp'
для этого надо добавить '\' и каталог который хочешь создать.
Потому что папка создаётся сразу, юзеру же нет возможности при создании директории видеть эту папку и переименовать. Тоесть эффект должен быть такой: юзер жмет Создать папку, она должна в этом окне что на скрине появится и предложить её переименовать. Ну я думаю ты меня понял...
|
|
|

11.04.2010, 23:00
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме: 3055344
Репутация:
259
|
|
Сообщение от SkyLine32
Потому что папка создаётся сразу, юзеру же нет возможности при создании директории видеть эту папку и переименовать. Тоесть эффект должен быть такой: юзер жмет Создать папку, она должна в этом окне что на скрине появится и предложить её переименовать. Ну я думаю ты меня понял...
Для того, чтобы изменения показывались сразу есть Свойство AutoRefresh // по-умолчанию False.
Далее создаёшь новый каталог
PHP код:
NewFolder:=ShellTreeView1.Path+'\New Folder'; CreateDir(NewFolder);
или
ForceDirectories(NewFolder)
|
|
|

11.04.2010, 23:04
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
52
|
|
Сообщение от SkyLine32
Потому что папка создаётся сразу, юзеру же нет возможности при создании директории видеть эту папку и переименовать. Тоесть эффект должен быть такой: юзер жмет Создать папку, она должна в этом окне что на скрине появится и предложить её переименовать. Ну я думаю ты меня понял...
PHP код:
function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData:
LPARAM): Integer; stdcall;
begin
if (uMsg = BFFM_INITIALIZED) then
SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData);
BrowseCallbackProc := 0;
end;
function GetFolderDialog(Handle: Integer; Caption: string; var strFolder:
string): Boolean;
const
BIF_STATUSTEXT = $0004;
BIF_NEWDIALOGSTYLE = $0040;
BIF_RETURNONLYFSDIRS = $0080;
BIF_SHAREABLE = $0100;
BIF_USENEWUI = BIF_EDITBOX or BIF_NEWDIALOGSTYLE;
var
BrowseInfo: TBrowseInfo;
ItemIDList: PItemIDList;
JtemIDList: PItemIDList;
Path: PAnsiChar;
begin
Result := False;
Path := StrAlloc(MAX_PATH);
SHGetSpecialFolderLocation(Handle, CSIDL_DRIVES, JtemIDList);
with BrowseInfo do
begin
hwndOwner := GetActiveWindow;
pidlRoot := JtemIDList;
SHGetSpecialFolderLocation(hwndOwner, CSIDL_DRIVES, JtemIDList);
{ return display name of item selected }
pszDisplayName := StrAlloc(MAX_PATH);
{ set the title of dialog }
lpszTitle := PChar(Caption); //'Select the folder';
{ flags that control the return stuff }
ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE ;
// ulFlags := ulFlags or BIF_NEWDIALOGSTYLE or BIF_RETURNONLYFSDIRS;
//ulFlags := ulFlags or BIF_RETURNONLYFSDIRS;
lpfn := @BrowseCallbackProc;
{ extra info that's passed back in callbacks }
lParam := LongInt(PChar(strFolder));
end;
ItemIDList := SHBrowseForFolder(BrowseInfo);
if (ItemIDList <> nil) then
if SHGetPathFromIDList(ItemIDList, Path) then
begin
strFolder := Path;
Result := True
end;
end;
PHP код:
if not GetFolderDialog(GetStdHandle(STD_OUTPUT_HANDLE), 'Выберите каталог', Path) then
в Path окажется выбор пользователя.
P.s. возможно понадобится uses ShlObj;
Последний раз редактировалось JnK; 11.04.2010 в 23:32..
|
|
|

11.04.2010, 23:13
|
|
Участник форума
Регистрация: 01.03.2009
Сообщений: 121
Провел на форуме: 4022236
Репутация:
38
|
|
EndLeSSDre@M, ок, а как сделать эффект чтобы после создании папки, сразу переходило на переименование директории, т.к. в твоём примере создаётся папка 'где то там'.
JnK, это сложно для меня )
|
|
|

11.04.2010, 23:34
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
52
|
|
Сообщение от SkyLine32
EndLeSSDre@M, ок, а как сделать эффект чтобы после создании папки, сразу переходило на переименование директории, т.к. в твоём примере создаётся папка 'где то там'.
JnK, это сложно для меня )
А что тут сложного в программе сразу после {$R *.dfm} пишешь, выше указаный код:
PHP код:
uses ShlObj;
function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData:
LPARAM): Integer; stdcall;
...
end;
function GetFolderDialog(Handle: Integer; Caption: string; var strFolder:
string): Boolean;
....
end;
А кнопка выглядит так:
PHP код:
procedure TForm1.Button1Click(Sender: TObject);
var
path:string;
begin
if GetFolderDialog(GetStdHandle(STD_OUTPUT_HANDLE), 'Выберите каталог', Path) then
Showmessage(path);
end;
|
|
|

11.04.2010, 23:39
|
|
Участник форума
Регистрация: 01.03.2009
Сообщений: 121
Провел на форуме: 4022236
Репутация:
38
|
|
JnK, это не то что мне надо (
|
|
|

12.04.2010, 08:01
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
52
|
|
SkyLine32, в плане кода?
Я как понял, тебе надо.
1. открылось окно выбора каталога
2. Пользователь нажал "Создать каталог", и он в выделенном создает под каталог
3. и предлагает ввести (исправить) имя (не отдельный окном), а прям там.
Может плохо гуглил, но насчет компонента:
Link 1
Link 2
PHP код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Path := tree.Path; // полный путь к выбранной в ShellTreeView папке
Name := tree.Selected.Text;// тут будет только имя выбранной папки
Dir := ExtractFileDir(p);//тут будет путь к выбранной папке без нее самой
// теперь как советовал Arigato
RenameFile(Path + '/' + Name, Path + '/' + 'Какое-то новое имя');
Tree.Refresh(Tree.Selected.Parent);
end;
Последний раз редактировалось JnK; 12.04.2010 в 08:36..
|
|
|

12.04.2010, 11:42
|
|
Познающий
Регистрация: 06.04.2010
Сообщений: 42
Провел на форуме: 85502
Репутация:
10
|
|
Приветствую всех кодеров,вот есть такой очень важный для меня вопрос я все облазил не нашёл ответа на него,моя дальнейшая судьба будет зависеть от вас в программировании потому что уже честно устал продвижение нету!
Вот я начну Решил я Научиться кодить,очень много думал,у меня есть интерес!Вот я Начал как Новичок с Паскаля,Потом думаю Делфи,Си,и так далее.
Но я не могу то толком начать решать задачи на паскале и делать примеры очень обидно я быстро его начал осваивать и уже много чему научился а примеры не получаются!
Вот скачал Много Книг,С книги беру пример любой и все ровно выбивает ошибку в паскале!
Вот пример с книги Первая программа.
4.2. Первая программа на Паскале Конечно, кроме оператора Write в Паскале есть еще много операторов. Но для начального понимания того, как устроена программа на Паскале, достаточно и его. Вот пример программы:
PHP код:
BEGIN
Write('Начали!');
Write(8+1);
Write(5-2)
END.
Должно получиться Начали!93
Я веду имел этим что при каждом примере с книг не получается с ответом как в книги числа разные бывают то не высчитает,или ошибку пишет.
Помоги Пожалуйста Надеюсь на Вашу помощь,
Может посоветовать Литературы!
Спасибо за рани
Последний раз редактировалось DdoNbAsS; 12.04.2010 в 11:49..
|
|
|

12.04.2010, 12:12
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме: 3055344
Репутация:
259
|
|
Сообщение от DdoNbAsS
Приветствую всех кодеров,вот есть такой очень важный для меня вопрос я все облазил не нашёл ответа на него,моя дальнейшая судьба будет зависеть от вас в программировании потому что уже честно устал продвижение нету!
Вот я начну Решил я Научиться кодить,очень много думал,у меня есть интерес!Вот я Начал как Новичок с Паскаля,Потом думаю Делфи,Си,и так далее.
Но я не могу то толком начать решать задачи на паскале и делать примеры очень обидно я быстро его начал осваивать и уже много чему научился а примеры не получаются!
Вот скачал Много Книг,С книги беру пример любой и все ровно выбивает ошибку в паскале!
Вот пример с книги Первая программа.
PHP код:
BEGIN
Write('Начали!');
Write(8+1);
Write(5-2)
END.
Должно получиться Начали!93
Я веду имел этим что при каждом примере с книг не получается с ответом как в книги числа разные бывают то не высчитает,или ошибку пишет.
Помоги Пожалуйста Надеюсь на Вашу помощь,
Может посоветовать Литературы!
Спасибо за рани
из всего написанного я так и не понял что требуется??? и кстати там точки с запятой после врайта не хватает))) поясни свой вопрос в 2х словах! и readln в конце не забывай добавлять чтоб результат посмотреть!
PHP код:
program vivod;
uses crt;
begin
write('Begin!');
write(8+1);
write(5-2);
readln;
end.
Последний раз редактировалось EndLeSSDre@M; 12.04.2010 в 12:17..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|