MessageDlg ?
7 отговора
278 прегледа
MessageDlg ?
Как да направя след извикване на MessageDlg програмата да продължи изпълнението си, без да изчаква натискането на бутон от MessageDlg-а ??
Предварително благодаря
Предварително благодаря
Според мен
... нямаш нужда от MessageDlg, а например от някакво мемо за визуализация на грешките / съобщенията
Re: MessageDlg ?
Няма такъв вариант. MessageDlg() е модален диалог, който прекъсва изпълнението на тек. програма, докато не натиснеш някой от бутоните.
Но все пак има два варианта за да направиш това което искаш:
- нишка за процеса, който трябва да работи
- да покажеш немодална форма, поразително приличаща на стандартния MessageDlg(), която стои и чака събитие, докато програмата работи. Напр. като Search & Replace диалога в Ворда.
Но все пак има два варианта за да направиш това което искаш:
- нишка за процеса, който трябва да работи
- да покажеш немодална форма, поразително приличаща на стандартния MessageDlg(), която стои и чака събитие, докато програмата работи. Напр. като Search & Replace диалога в Ворда.
Re: CreateMessageDialog function
Относно "немодална форма, поразително приличаща на стандартния MessageDlg()", виж функцията CreateMessageDialog в хелпа:
function CreateMessageDialog(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons): TForm;
Description:
Call CreateMessageDialog to create a message dialog that will be used several times in an application. CreateMessageDialog returns a dialog of the type specified by the DlgType parameter and with the buttons indicated by the Buttons parameter.
Note:
CreateMessageDialog does not display the dialog form. The application must display this form when it is needed.
Успех!
function CreateMessageDialog(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons): TForm;
Description:
Call CreateMessageDialog to create a message dialog that will be used several times in an application. CreateMessageDialog returns a dialog of the type specified by the DlgType parameter and with the buttons indicated by the Buttons parameter.
Note:
CreateMessageDialog does not display the dialog form. The application must display this form when it is needed.
Успех!
Ето един пример
procedure Suobshtenie;
begin
MessageDlg('Exo', mtInformation, [mbOK], 0);
end;
..................
CreateThread(nil, 0, @Suobshtenie, nil, 0, id1);
баче дали след като се натисне ОК на съобщението нишката ще се унищожи ?
begin
MessageDlg('Exo', mtInformation, [mbOK], 0);
end;
..................
CreateThread(nil, 0, @Suobshtenie, nil, 0, id1);
баче дали след като се натисне ОК на съобщението нишката ще се унищожи ?
Re: Ето един пример
Щом ти се налага да правиш такива работи, значи имаш проблем с дизайна на приложението. А иначе за унищожаването:
MSDN:
The thread object remains in the system until the thread has terminated and all handles to it have been closed through a call to CloseHandle.
За да се освободят ресурсите, трябва да си вземеш handle-а на конеца и да викнеш CloseHandle за него.
MSDN:
The thread object remains in the system until the thread has terminated and all handles to it have been closed through a call to CloseHandle.
За да се освободят ресурсите, трябва да си вземеш handle-а на конеца и да викнеш CloseHandle за него.