Fórum O que há de errado com este código???? #256751
31/10/2004
0
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
Curtir tópico
+ 0
Responder
Posts
01/11/2004
Gilvan
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)
Responder
Gostei + 0
01/11/2004
Emir Neto
Muito obrigado Gilvan, funcionou perfeitamente.
Paz Profunda.
Paz Profunda.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)