ORLANDO Posted October 18, 2018 Posted October 18, 2018 preciso fazer uma opcao com messagedlg tipo voce e casado: se sim executa uma procedure se nao for executa outra procedure, mas ai ele nao executa corretamente, fiz assim no botaoonclick var vbcasado:booelan; begin vbcasado:=false; MessageDlg('Vc é Casado?', mtConfirmation, mbYesNo, procedure(Sender: TComponent; Res: Integer) begin case Res of mrYes : vbcasado :=true ; mrNo : vbcasado:=false; end; end ); if vbcasado then casado else solteiro; end; O problema e que ele executa como false, depois que ele pergunta, ou seja, ele nao para para esperar a resposta e depois dar continuidade. Alguem sabe como resolver isso. Quote
Sherzod Posted October 18, 2018 Posted October 18, 2018 Hello, First of all, specify which edition and build of UniGUI you are using Quote
LuizZamp Posted February 7, 2020 Posted February 7, 2020 Olá, também estou tendo o mesmo problema. Estou criando uma Unit "Library" que será acessada por diversos formulários distintos. Seu objetivo é fazer com que a MessageDlg seja chamada e seu retorno seja um Boolean, muito semelhante ao exemplo do nosso amigo. Por exemplo (função na Unit Library): function Conf(Message):Boolean; begin Result := False; if MessageDlg(Message, mtConfirmation, mbYesNo) = mrYes then Result := True else Result := False; end; Fiz alguns testes e observei que a Function MessageDlg retorna sempre um Integer = 0, independente do botão (sim ou não) pressionado. (OBS: Quando a função é chamada de diretamente do formulário, desde que a procedure CallBack esteja criada, seu funcionamento ocorre normalmente - Assim como nos exemplos/Demos). Minha versão do UniGUI é Complete_Professional_1.90.0.1519 e estou usando Delphi XE8. Quote
Sherzod Posted February 7, 2020 Posted February 7, 2020 39 minutes ago, LuizZamp said: UniGUI é Complete_Professional_1.90.0.1519 First of all, please adjust your forum email address: Quote
LuizZamp Posted February 10, 2020 Posted February 10, 2020 Olá, esta conta a qual estou logado não é a mesma que fez a aquisição da licença, mas fiz o ajuste na conta principal. Att. Quote
LuizZamp Posted February 12, 2020 Posted February 12, 2020 Olá! Resolvi o meu problema. Como a minha função que usava o MessageDlg estava em outra Unit, pude observar que as instruções do comando eram executadas somente após o retorno da minha função, que no caso retornando sempre "False". Isso se deve, acredito eu, por conta dos controles de Threads e etc. Existe uma propriedade no MainModule - EnableSyncronousOperations, que ao habilitar (true), passou a funcionar seguindo a ordem das instruções em minha função de fato. A chamada do MessageDlg, assim como mencionei acima, é sem passagem do CallBack : Quote if MessageDlg('Dialog3', mtConfirmation, mbYesNo) = mrYes then Result := True else Result := False; Att. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.