OpenDialog Como editar os Botoes de Abrir e Cancelar?

Delphi

23/07/2013

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.
Eduardo Mendonça

Eduardo Mendonça

Curtidas 0

Melhor post

Joel Rodrigues

Joel Rodrigues

25/07/2013

Acabei de testar o seguinte:
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

Jefferson Rudolf

23/07/2013

if OpenDialog.Execute then
begin
//coloque a condição caso o usuario cancelar não acontece nada.
end;
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

23/07/2013

if OpenDialog.Execute then
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

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.
GOSTEI 0
Eduardo Mendonça

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
procedure TfrmVisualizadorProcessos.opdNomeArquivoSelectionChange(Sender: TObject);
begin
    if (opdNomeArquivo.FileName <> '') then
edtProcuraArquivo.Text := opdNomeArquivo.FileName;
end;// Fim do evendo opdNomeArquivoSelectionChange
GOSTEI 0
Eduardo Mendonça

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

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

Francisco Macário

23/07/2013

Use o retorno de OpenDialog.Execute (bolean) e não o FileName.
GOSTEI 0
Eduardo Mendonça

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

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

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

Joel Rodrigues

23/07/2013

Mesmo clicando em Cancelar ele não entra no IF?
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

23/07/2013

não
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

23/07/2013

é assim
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

Eduardo Mendonça

23/07/2013

Ajuda :(
GOSTEI 0
Francisco Macário

Francisco Macário

23/07/2013

Ajuda :(


Se puder coloque o codigo de "AddNo(ntFile)"
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

23/07/2013

Ficaria assim?

  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

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

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
GOSTEI 0
Eduardo Mendonça

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
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

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.
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

23/07/2013

ok
GOSTEI 0
POSTAR