OpenDialog Como editar os Botoes de Abrir e Cancelar?
Bom Dia!
Queria saber se tem como Editar os Botoes do OpenDialog, tipo Quando eu Clicar para abrir o OpenDialog ele da duas opções
"Abrir" e "Cancelar" queria colocar para quando o usuário Clicar em "Cancelar" toda a operação fosse cancelada.
Queria saber se tem como Editar os Botoes do OpenDialog, tipo Quando eu Clicar para abrir o OpenDialog ele da duas opções
"Abrir" e "Cancelar" queria colocar para quando o usuário Clicar em "Cancelar" toda a operação fosse cancelada.
Eduardo Mendonça
Curtidas 0
Melhor post
Joel Rodrigues
25/07/2013
Acabei de testar o seguinte:
Se selecionar um arquivo, cai na primeira mensagem. Se cancelar, cai na segunda.
Não tive problemas.
if OpenDialog1.Execute then
ShowMessage('Abriu um arquivo.')
else
ShowMessage('Cancelou a operação.')
Se selecionar um arquivo, cai na primeira mensagem. Se cancelar, cai na segunda.
Não tive problemas.
GOSTEI 1
Mais Respostas
Jefferson Rudolf
23/07/2013
if OpenDialog.Execute then
begin
//coloque a condição caso o usuario cancelar não acontece nada.
end;
begin
//coloque a condição caso o usuario cancelar não acontece nada.
end;
GOSTEI 0
Eduardo Mendonça
23/07/2013
if OpenDialog.Execute then
begin
//coloque a condição caso o usuario cancelar não acontece nada.
end;
begin
//coloque a condição caso o usuario cancelar não acontece nada.
end;
deste modo logo quando ele analisar o if vai cair no cancela não da.
GOSTEI 0
Joel Rodrigues
23/07/2013
Eu creio que a solução que o amigo deu acima sirva para essa situação. Por que o código passaria direto para o Cancelar?
Dê um exemplo de como está seu código, aí podemos lhe ajudar a chegar na solução mais adequada.
Dê um exemplo de como está seu código, aí podemos lhe ajudar a chegar na solução mais adequada.
GOSTEI 0
Eduardo Mendonça
23/07/2013
Assim o sistema tem uma parte que o usuário pode add um arquivo a uma pasta ai abre o OpenDialog onde ele pode escolher o arquivo certo, ai si ele não quiser mas add o arquivo e clicar em cancelar o banco fica em modo e edição / inserção correto
ai eu quero colocar para se ele for add o arquivo ele clicar em "Abrir" e se ele desistir ele clica em "cancelar" e saia do modo de edição / inserção.
o codigo de OpenDialog
ai eu quero colocar para se ele for add o arquivo ele clicar em "Abrir" e se ele desistir ele clica em "cancelar" e saia do modo de edição / inserção.
o codigo de OpenDialog
procedure TfrmVisualizadorProcessos.opdNomeArquivoSelectionChange(Sender: TObject);
begin
if (opdNomeArquivo.FileName <> '') then
edtProcuraArquivo.Text := opdNomeArquivo.FileName;
end;// Fim do evendo opdNomeArquivoSelectionChange
GOSTEI 0
Eduardo Mendonça
23/07/2013
Eu esatva pensando algo com uma case
procedure TfrmVisualizadorProcessos.opdNomeArquivoSelectionChange(Sender: TObject);
begin
case opdNomeArquivo.Execute of
Botão de Canelar: {não sei a referencia} btnCancelarClick(Sender);
Botão de Abrir : {não sei a referencia} edtProcuraArquivo.Text := opdNomeArquivo.FileName;
end;
GOSTEI 0
Joel Rodrigues
23/07/2013
Creio que seja algo da seguinte forma que você precisa:
if opdNomeArquivo.Execute then//se clicar em Abrir begin if opdNomeArquivo.FileName <> '' thn begin //fazer alguma coisa no dataset dataset.Post; // end else dataset.Cacel; //cancela a edição end; end
GOSTEI 0
Francisco Macário
23/07/2013
Use o retorno de OpenDialog.Execute (bolean) e não o FileName.
GOSTEI 0
Eduardo Mendonça
23/07/2013
Creio que seja algo da seguinte forma que você precisa:
if opdNomeArquivo.Execute then//se clicar em Abrir begin if opdNomeArquivo.FileName <> '' thn begin //fazer alguma coisa no dataset dataset.Post; // end else dataset.Cacel; //cancela a edição end; end
Não deu certo!
GOSTEI 0
Joel Rodrigues
23/07/2013
Cara, poste seu código aqui. Mas veja só. SE OpenDialog.Execute ENTÃO o cara clicou em abrir o arquivo. SENÃO, ele mandou cancelar. A partir disso você consegue fazer o que quer.
GOSTEI 0
Francisco Macário
23/07/2013
Um exemplo:
procedure Teste;
begin
ClientDataSet1.Append;
ClientDataSet1.FieldByName('ID').AsInteger := iID;
if NOT opdNomeArquivo.Execute then
begin
ClientDataSet1.Cancel;
Exit;
end;
ClientDataSet1.FieldByName('').AsString := opdNomeArquivo.filename;
ClientDataSet1.Post;
end
GOSTEI 0
Joel Rodrigues
23/07/2013
Mesmo clicando em Cancelar ele não entra no IF?
GOSTEI 0
Eduardo Mendonça
23/07/2013
não
GOSTEI 0
Eduardo Mendonça
23/07/2013
é assim
Código de Add item não influencia + só para entender
e ai aparece a tela de escolher o arquivo e la em baixo "abrir" e "Cancelar"
Quando Clica em "abrir" ele copia o caminho e ate ai tudo beleza e se o usuário clicar em cancelar tem que cancelar
tem que cancelar o Append
ai tem o código do evento SelectionChange
que quando o usuário aperta em "abrir" executa a linha acima marcada se o "opdNomeArquivo.FileName <> ''"
e se o usuário aperta em "cancelar" preciso que ele execute o comando Cancelar
Código de Add item não influencia + só para entender
procedure TfrmVisualizadorProcessos.btnNovoClick(Sender: TObject);
begin {Botão para Add nó na arvore e no banco de dados}
AddNo(ntFile); {Isso Chama um DataModuleGeral.tbArquivo.Append; e um opdNomeArquivo.Execute;}
end;// Fim btnNovo OnClick
e ai aparece a tela de escolher o arquivo e la em baixo "abrir" e "Cancelar"
Quando Clica em "abrir" ele copia o caminho e ate ai tudo beleza e se o usuário clicar em cancelar tem que cancelar
tem que cancelar o Append
ai tem o código do evento SelectionChange
procedure TfrmVisualizadorProcessos.opdNomeArquivoSelectionChange(Sender: TObject);
begin
if (opdNomeArquivo.FileName <> '') then
edtProcuraArquivo.Text := opdNomeArquivo.FileName // <=== essa
end;// Fim do evendo opdNomeArquivoSelectionChange
que quando o usuário aperta em "abrir" executa a linha acima marcada se o "opdNomeArquivo.FileName <> ''"
e se o usuário aperta em "cancelar" preciso que ele execute o comando Cancelar
btnCancelarClick(Self);
GOSTEI 0
Eduardo Mendonça
23/07/2013
Ajuda :(
GOSTEI 0
Francisco Macário
23/07/2013
Ajuda :(
Se puder coloque o codigo de "AddNo(ntFile)"
GOSTEI 0
Eduardo Mendonça
23/07/2013
Ficaria assim?
seria assim sua sugestão ?
if opdNomeArquivo.Execute then
if (opdNomeArquivo.FileName <> '') then
edtProcuraArquivo.Text := opdNomeArquivo.FileName
else
begin
btnCancelarClick(Self);
Exit;
end;
seria assim sua sugestão ?
GOSTEI 0
Joel Rodrigues
23/07/2013
Exatamente, e creio que nem precise verificar se o nome do arquivo está vazio, pois para clicar em abrir, o usuário deve ter selecionado alguma coisa. Mas não deixa de ser mais uma verificação de segurança.
GOSTEI 0
Eduardo Mendonça
23/07/2013
Fiz os testes e nada. mas o que esta acontecendo é assim. Quando abre o "opdNomeArquivo" ele da a opção de procurar o arquivo e quando clica no arquivo o caminho é automaticamente copiado ai ele cai no verdadeiro e sai.
queria que ele copiasse o caminho só quando apertasse abrir e cancelar tudo se apertasse em cancelar
queria que ele copiasse o caminho só quando apertasse abrir e cancelar tudo se apertasse em cancelar
GOSTEI 0
Eduardo Mendonça
23/07/2013
Boa Tarde!!
Pessoal descobrir Como fazer.
A coisa que deveria fazer é adivinhar se os arquivos de propriedade do OpenDialog é " 0 " então se o usuário estiver pressionado o botão Cancelar coloca a msg para testa
Muito Obrigado Joel Rodrigues pela Ajuda e pelo aprendizado :) foi de grande ajuda.
eu achei essa solução em outro fórum junto com um amigo
Pode Fechar o Tópico
Pessoal descobrir Como fazer.
A coisa que deveria fazer é adivinhar se os arquivos de propriedade do OpenDialog é " 0 " então se o usuário estiver pressionado o botão Cancelar coloca a msg para testa
Begin
openDialog1.Execute;
if opdNomeArquivo.Files.Count = 0 then
ShowMessage('Botão cancelar!');
end;
Muito Obrigado Joel Rodrigues pela Ajuda e pelo aprendizado :) foi de grande ajuda.
eu achei essa solução em outro fórum junto com um amigo
Pode Fechar o Tópico
GOSTEI 0
Joel Rodrigues
23/07/2013
Beleza então. Continuo sem entender, maaasss... sabemos que existem 1000 formas de fazer a mesma coisa e o importante é que você conseguiu.
Abraço e conte conosco sempre que precisar.
Estou concluindo o tópico.
Abraço e conte conosco sempre que precisar.
Estou concluindo o tópico.
GOSTEI 0
Eduardo Mendonça
23/07/2013
ok
GOSTEI 0