O que há de errado com este código????
procedure TfrmMenu.CapturarPatch(FCaption, FolderName: string);
var
BrowseInfo: TBrowseInfo;
ItemIDList: PItemIDList;
ItemSelected : PItemIDList;
NameBuffer: array[0..MAX_PATH] of Char;
WindowList: Pointer;
IniFile: TRegIniFile;
Result: boolean;
begin
// Função lógica que recebe dois parâmetros um para o rótulo da caixa de seleção de
// diretório presente na unit ShlObj declarada acima e o outro por referência retorna
// uma String com o diretório novo e a escreve na chave correspondente no Registro,
// mas apenas se selecionar OK na caixa de seleção de diretório.
itemIDList := nil;
FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
BrowseInfo.hwndOwner := Handle;
BrowseInfo.pidlRoot := ItemIDList;
BrowseInfo.pszDisplayName := NameBuffer;
BrowseInfo.lpszTitle := PChar(FCaption);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
WindowList := DisableTaskWindows(0);
try
ItemSelected := SHBrowseForFolder(BrowseInfo);
Result := ItemSelected nil;
finally
EnableTaskWindows(WindowList);
end;
if Result then
begin
SHGetPathFromIDList(ItemSelected,NameBuffer);
FolderName := NameBuffer;
end;
end;
Estou utilizando assim:
CapturarPatch(´..::Selecione o Diretório do Banco::..´,caminhoBase);
[color=red:7df7ceb3bc]por quê o caminhoBase retorna vazio mesmo que eu clique no ok???[/color:7df7ceb3bc]
var
BrowseInfo: TBrowseInfo;
ItemIDList: PItemIDList;
ItemSelected : PItemIDList;
NameBuffer: array[0..MAX_PATH] of Char;
WindowList: Pointer;
IniFile: TRegIniFile;
Result: boolean;
begin
// Função lógica que recebe dois parâmetros um para o rótulo da caixa de seleção de
// diretório presente na unit ShlObj declarada acima e o outro por referência retorna
// uma String com o diretório novo e a escreve na chave correspondente no Registro,
// mas apenas se selecionar OK na caixa de seleção de diretório.
itemIDList := nil;
FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
BrowseInfo.hwndOwner := Handle;
BrowseInfo.pidlRoot := ItemIDList;
BrowseInfo.pszDisplayName := NameBuffer;
BrowseInfo.lpszTitle := PChar(FCaption);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
WindowList := DisableTaskWindows(0);
try
ItemSelected := SHBrowseForFolder(BrowseInfo);
Result := ItemSelected nil;
finally
EnableTaskWindows(WindowList);
end;
if Result then
begin
SHGetPathFromIDList(ItemSelected,NameBuffer);
FolderName := NameBuffer;
end;
end;
Estou utilizando assim:
CapturarPatch(´..::Selecione o Diretório do Banco::..´,caminhoBase);
[color=red:7df7ceb3bc]por quê o caminhoBase retorna vazio mesmo que eu clique no ok???[/color:7df7ceb3bc]
Emir Neto
Curtidas 0
Respostas
Gilvan
31/10/2004
Esperimente alterar
de:
procedure TfrmMenu.CapturarPatch(FCaption, FolderName: string)
para
procedure TfrmMenu.CapturarPatch(FCaption:String; var FolderName: string)
de:
procedure TfrmMenu.CapturarPatch(FCaption, FolderName: string)
para
procedure TfrmMenu.CapturarPatch(FCaption:String; var FolderName: string)
GOSTEI 0
Emir Neto
31/10/2004
Muito obrigado Gilvan, funcionou perfeitamente.
Paz Profunda.
Paz Profunda.
GOSTEI 0