ORLANDO Posted October 18, 2018 Share 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. Link to comment Share on other sites More sharing options...
Sherzod Posted October 18, 2018 Share Posted October 18, 2018 Hello, First of all, specify which edition and build of UniGUI you are using Link to comment Share on other sites More sharing options...
LuizZamp Posted February 7, 2020 Share 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. Link to comment Share on other sites More sharing options...
Sherzod Posted February 7, 2020 Share 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: Link to comment Share on other sites More sharing options...
LuizZamp Posted February 10, 2020 Share 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. Link to comment Share on other sites More sharing options...
LuizZamp Posted February 12, 2020 Share 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. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now