MessageDlg проблем
7 отговора
236 прегледа
MessageDlg проблем
Абе имам следния проблем: използвам на едно място в програмата си MessageDlg със бутони Yes, No и Cancel. Когато натисна обаче Cancel, той ми изпълнява действието което съм дефинирал за No, а аз искам просто да затваря диалога. Как се затваря MessageDlg прозореца?
Мълчанието е злато, но ние не сме алчни, особено аз!
Мълчанието е злато, но ние не сме алчни, особено аз!
Re: MessageDlg проблем
MessageDlg е функция, която връща резултат (WORD, мисля, или Integer, все тая) в зависимост от това кой бутон е натиснат.
в твоят случай резултатът може да е:
mrYes
mrNo
mrCancel
константите са дефинирани в Controls unit-а
имай грижата да обработваш всеки един възможен резултат, например с CASE:
Am I evil?
Yes I am.
в твоят случай резултатът може да е:
mrYes
mrNo
mrCancel
константите са дефинирани в Controls unit-а
имай грижата да обработваш всеки един възможен резултат, например с CASE:
mrResult := MessageDlg(msg, msgType, [mbYes, mbNO, mbCancel], 0);
case mrResult of
mrYes : handleYes;
mrNo : handleNo;
mrCancel : handleCancel;
end;
Am I evil?
Yes I am.
Re: MessageDlg проблем
Добре, обаче не разбрах как при mrCancel да затворя диалога?
Мълчанието е злато, но ние не сме алчни, особено аз!
Мълчанието е злато, но ние не сме алчни, особено аз!
Re: MessageDlg проблем
Диалога, създаден и извикан с функцията messagedlg е модален и се затваря автоматично при натискане на който и да е бутон, като връща в резултат стойността на бутона. Ако при теб е различно, явно бъркаш нещо някъде ...
Mixy
Mixy
Re: MessageDlg проблем
ок, нов проект, копче и текстово прозорче на формата
dblClick на копчето, пиши те тоя код:
Am I evil?
Yes I am.
dblClick на копчето, пиши те тоя код:
case MessageDlg('Format C:?', mtWarning, [mbYes, mbNo, mbCancel], 0) of
mrYes : Edit1.Text := 'Yes, format it!';
mrNo : Edit1.Text := 'No, leave it!';
mrCancel : Edit1.Text := 'Ops...';
end;
Am I evil?
Yes I am.
Re: MessageDlg проблем
Добре, значи става въпрос за обикновен текстов редактор и диалога се появява, когато не съм записал файла. Аз съм го сложил на свойството OnClose на главната форма. Правилно ли съм го сложил или трябва да го сложа на друго място? Ако има проблем, то трябва да е само там.
Мълчанието е злато, но ние не сме алчни, особено аз!
Мълчанието е злато, но ние не сме алчни, особено аз!
Re: MessageDlg проблем
Мда, не трябва да е там, пробвай във OnCloseQuery!
Примерно при Yes - запомняш, при No - не запомняш, при Cancel - CanClose:=false;
Ето цитат от хелпа:
Use OnCloseQuery to specify the conditions under which the form can close. An OnCloseQuery event handler returns a Boolean CanClose value that determines whether a form is allowed to close. Its default value is true.
You can use an OnCloseQuery event handler to ask users if they are sure they really want the form closed immediately. For example, you can use the handler to display a message box that prompts the user to save a file before closing the form.
The TCloseQueryEvent type points to the method that determines whether a form can be closed. The value of the CanClose parameter determines if the form can close or not.
Точно като при тебе...
Примерно при Yes - запомняш, при No - не запомняш, при Cancel - CanClose:=false;
Ето цитат от хелпа:
Use OnCloseQuery to specify the conditions under which the form can close. An OnCloseQuery event handler returns a Boolean CanClose value that determines whether a form is allowed to close. Its default value is true.
You can use an OnCloseQuery event handler to ask users if they are sure they really want the form closed immediately. For example, you can use the handler to display a message box that prompts the user to save a file before closing the form.
The TCloseQueryEvent type points to the method that determines whether a form can be closed. The value of the CanClose parameter determines if the form can close or not.
Точно като при тебе...
Re: MessageDlg проблем
10x намерих го къде е.
Мълчанието е злато, но ние не сме алчни, особено аз!
Мълчанието е злато, но ние не сме алчни, особено аз!