ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[resolvido] TTaskDialog CheckBox

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Seg Nov 06, 2017 7:57 am    Assunto: [resolvido] TTaskDialog CheckBox Responder com Citação

Alguém já usou essa possibilidade nesse tipo de mensagem?

Estou tentando aqui, mas ta osso.

Código:
TaskDialog1.Title := 'TaskDialog';
TaskDialog1.VerificationText := 'Não exibir novamente';
TaskDialog1.text := 'Confirmação';
TaskDialog1.Execute;


A propriedade tfVerificationFlagChecked marca ou desmarca o checkbox, mas não achei uma forma de executar um procedimento no fechar do taskdialog.


Editado pela última vez por renanbg em Seg Nov 06, 2017 9:48 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Nov 06, 2017 9:06 am    Assunto: Responder com Citação

Veja se este exemplo ajuda:

Código:
  with TaskDialog1 do
  begin
    Title := 'TaskDialog';
    VerificationText := 'Não exibir novamente';
    text := 'Confirmação';
    Execute;

    if tfVerificationFlagChecked in Flags then
      ShowMessage('checado')
    else
      ShowMessage('não checado');

    case ModalResult of
      mrOk:
        ShowMessage('Clicou no OK.');
      mrCancel:
        ShowMessage('Clicou no Cancelar.');
    end;
  end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Seg Nov 06, 2017 9:46 am    Assunto: Responder com Citação

opa, ajuda sim.

segue outra versão para ajudar quem possa precisar

Código:
var
  Task: TTaskDialog;
  lChecked: Boolean;
begin
  Task := TTaskDialog.Create(Self);
  try
    Task.Caption          := 'Fisio Soft RM';
    Task.Title            := 'TEste';
    Task.Text             := 'Confrme';
    Task.VerificationText := 'Não exibir novamente';
    lChecked              := False;
    Task.CommonButtons    := [tcbOK, tcbCancel];
    Task.DefaultButton    := tcbCancel;
    Task.Flags            := [tfAllowDialogCancellation];
    if lChecked then
      Task.Flags := Task.Flags + [tfVerificationFlagChecked];
    Task.Execute;
    case Task.ModalResult of
      mrOk:
        begin
          ShowMessage('clicou OK');
          if (tfVerificationFlagChecked in Task.Flags) then
            ShowMessage('Checked')
          else
            ShowMessage('UnChecked');
        end;
      mrCancel:
        ShowMessage('clicou Cancelar');
    end;
  finally
    Task.Free;
  end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Ter Nov 07, 2017 9:40 am    Assunto: Responder com Citação

natanbh1, me tira uma duvida.

Ao inves de criar todo esse codigo, eu poderia aproveitar a função que você criou.

Então modifiquei ela, adicionando o verificationtext.
Até aí tudo certo.

Só não estou conseguindo compilar na parte dos Flags. Veja como montei

Código:
var
  Marcado : Boolean;
begin
  if FrmDm.qrConfigEXIBE_ANIVERSARIANTE.AsString = 'SIM' then
  begin
    if Contagem = 1 then
    begin
      Timer1.Enabled := False;

      Application.CreateForm(TFrmAniversariantes, FrmAniversariantes);
      FrmAniversariantes.rbSemana.Checked := True;

      if FrmAniversariantes.qrAniversarios.RecordCount > 0 then
      begin
         case TaskDialogo('Existem aniversariantes nesta semana', 'Deseja visualizá-los agora?','Não exibir novamente', tdiInformation, [tcbYes, tcbNo],[], [], -1, tcbNo) of

            mrYes : FrmAniversariantes.ShowModal;

            mrNo, mrCancel :
             try
               FrmAniversariantes.qrAniversarios.Close;
             finally
               FrmAniversariantes := nil;
             end;

             {if (tfVerificationFlagChecked in Flags) then
             begin
               FrmDm.qrConfig.Edit;
               FrmDm.qrConfigEXIBE_ANIVERSARIANTE.AsString := 'NÃO';
               FrmDm.qrConfig.Post;
             end;}
         end;
         Contagem := Contagem + 1;
      end
      else
    Timer1.Enabled := False;
    end;
end;


o erro está nessa linha, como objeto não declarado

Código:
{if (tfVerificationFlagChecked in Flags) then
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Nov 07, 2017 10:09 am    Assunto: Responder com Citação

O erro acontece porque a função TaskDialogo cria o objeto TaskDialog e logo depois destrói este objeto. Logo você não pode refenciá-lo.

Poste como está atualmente a função que você usa, para tentarmos adaptá-la a este caso.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Ter Nov 07, 2017 10:13 am    Assunto: Responder com Citação

Hum, verdade...

Estou nessa versão

Código:
function TaskDialogo(ATitulo, ATexto, ACheck: String; tipo: Integer; Botoes: TTaskDialogCommonButtons;
  ListNome: array of string; ListMdResult: array of TModalResult; Def: Integer;
  DefBut: TTaskDialogCommonButton): TModalResult;
var
  i: Integer;
begin
  with TTaskDialog.Create(nil) do
    try
      Caption := Application.Title;
      Title := ATitulo;
      Text := ATexto;
      VerificationText := ACheck;
      CommonButtons := Botoes;
      DefaultButton := DefBut;

      for i := Low(ListNome) to High(ListNome) do
        with TTaskDialogButtonItem(Buttons.Add) do
        begin
          Default := i = Def;
          Caption := ListNome[i];
          ModalResult := ListMdResult[i];
        end;

      MainIcon := tipo
      Execute;
      Result := ModalResult;
    finally
      Free;
    end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Nov 07, 2017 10:48 am    Assunto: Responder com Citação

Uma maneira seria adicionar um objeto TaskDialog ao form em tempo de projeto e na função usá-lo.

Adicionei um novo parâmetro para referenciar ao objeto TaskDialog.

Função:
Código:
function TaskDialogo(Dialogo: TTaskDialog; ATitulo, ATexto, ACheck: String; tipo: Integer;
  Botoes: TTaskDialogCommonButtons; ListNome: array of string; ListMdResult: array of TModalResult;
  Def: Integer; DefBut: TTaskDialogCommonButton): TModalResult;
var
  i: Integer;
begin
  with Dialogo do
  begin
    Caption := Application.Title;
    Title := ATitulo;
    Text := ATexto;
    VerificationText := ACheck;
    CommonButtons := Botoes;
    DefaultButton := DefBut;

    for i := Low(ListNome) to High(ListNome) do
      with TTaskDialogButtonItem(Buttons.Add) do
      begin
        Default := i = Def;
        Caption := ListNome[i];
        ModalResult := ListMdResult[i];
      end;

    MainIcon := tipo;
    Execute;
    Result := ModalResult;
  end;
end;

Exemplo de uso:
Código:
 case TaskDialogo(TaskDialog1, 'Existem aniversariantes nesta semana',
    'Deseja visualizá-los agora?', 'Não exibir novamente', tdiInformation, [tcbYes, tcbNo], [], [],
    -1, tcbNo) of
    mrYes:
      ShowMessage('Sim');
    mrNo, mrCancel:
      ShowMessage('Não ou Cancelado');
  end;

  if (tfVerificationFlagChecked in TaskDialog1.Flags) then
    ShowMessage('Checou')
  else
    ShowMessage('Não Checou')

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Ter Nov 07, 2017 12:22 pm    Assunto: Responder com Citação

Entendi.

Vou dar uma pensada se foço assim ou mantenho como antes.

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB