| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Seg Nov 06, 2017 7:57 am Assunto: [resolvido] TTaskDialog CheckBox |
|
|
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 |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Nov 06, 2017 9:06 am Assunto: |
|
|
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 |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Seg Nov 06, 2017 9:46 am Assunto: |
|
|
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 |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Ter Nov 07, 2017 9:40 am Assunto: |
|
|
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 |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Nov 07, 2017 10:09 am Assunto: |
|
|
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 |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Ter Nov 07, 2017 10:13 am Assunto: |
|
|
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 |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Nov 07, 2017 10:48 am Assunto: |
|
|
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 |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Ter Nov 07, 2017 12:22 pm Assunto: |
|
|
Entendi.
Vou dar uma pensada se foço assim ou mantenho como antes.
Obrigado. |
|
| Voltar ao Topo |
|
 |
|