Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.08.18;
Скачать: [xml.tar.bz2];

Вниз

Как программно закрыть MessageBox?   Найти похожие ветки 

 
Sharik_212   (2003-08-04 15:49) [0]

Собственно, и весь вопрос. Спасибо.


 
KDS   (2003-08-04 16:25) [1]

procedure Kill_ChatSoft;
var AppIGA:THandle;
begin
AppIGA:=FindWindow("класс_формы","заголовок_формы"); //
if (AppIGA>0) then PostMessage(AppIGA,$0012,0,0); // :-))
end;


 
Echelon   (2003-08-04 16:47) [2]

Однако возникает вопрос, как вызвать эту процедуру ,ведь
MesageBox - модальный диалог?


 
Palladin   (2003-08-04 17:12) [3]

однако наверно в соседнем потоке/процессе


 
KDS   (2003-08-04 17:17) [4]

по таймеру!
Если юзерок тормозит 5 минут,
то сделать выбор за него: ответить ОК или ob и закрыть


 
Sharik_212   (2003-08-04 17:25) [5]

А как нажать на енту ОК?


 
Palladin   (2003-08-04 17:26) [6]

у тебя как со зрением?


 
Sharik_212   (2003-08-04 17:55) [7]

Вообще-то я сюда пришел не на прием к офтальмологу. Если знаешь как нажать - подскажи, нет не надо ехидничать (это для Palladin)


 
Ученик   (2003-08-04 21:12) [8]

Не MessageBox, но очень близко

type
TAnswerTimer = class(TTimer)
private
FAnswerDefault : Word;
FAnswerDelay : Word;
FDelayLabel : TLabel;
procedure DoTimer(Sender : TObject);
public
constructor Create(AOwner : TComponent;
AAnswerDefault,
AAnswerDelay : Word;
ADelayLabel : TLabel{$IFDEF WIN32} = NIL{$ENDIF}); {$IFDEF WIN32} reintroduce; {$ENDIF}
end;

constructor TAnswerTimer.Create;
begin
inherited Create(AOwner);
FAnswerDefault := AAnswerDefault;
FAnswerDelay := AAnswerDelay;
if ADelayLabel = NIL then
with TForm(AOwner) do begin
FDelayLabel := TLabel.Create(AOwner);
FDelayLabel.AutoSize := False;
FDelayLabel.Alignment := taRightJustify;
FDelayLabel.SetBounds(Width - 30, Height - 40, 20, 20);
FDelayLabel.Parent := TForm(AOwner);
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end
else
FDelayLabel := ADelayLabel;
OnTimer := DoTimer;
end;

procedure TAnswerTimer.DoTimer(Sender : TObject);
begin
Dec(FAnswerDelay);
if FAnswerDelay <= 0 then
TForm(Owner).ModalResult := FAnswerDefault
else
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end;

function MessageDlgWithTimer(const Msg: string;
DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons;
AnswerDefault,
AnswerDelay : Word): Word;
var
MsgDlg : TForm;
begin
MsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
try
( MsgDlg, AnswerDefault, AnswerDelay, nil) Не MessageBox, но очень близко

type
TAnswerTimer = class(TTimer)
private
FAnswerDefault : Word;
FAnswerDelay : Word;
FDelayLabel : TLabel;
procedure DoTimer(Sender : TObject);
public
constructor Create(AOwner : TComponent;
AAnswerDefault,
AAnswerDelay : Word;
ADelayLabel : TLabel{$IFDEF WIN32} = NIL{$ENDIF}); {$IFDEF WIN32} reintroduce; {$ENDIF}
end;

constructor TAnswerTimer.Create;
begin
inherited Create(AOwner);
FAnswerDefault := AAnswerDefault;
FAnswerDelay := AAnswerDelay;
if ADelayLabel = NIL then
with TForm(AOwner) do begin
FDelayLabel := TLabel.Create(AOwner);
FDelayLabel.AutoSize := False;
FDelayLabel.Alignment := taRightJustify;
FDelayLabel.SetBounds(Width - 30, Height - 40, 20, 20);
FDelayLabel.Parent := TForm(AOwner);
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end
else
FDelayLabel := ADelayLabel;
OnTimer := DoTimer;
end;

procedure TAnswerTimer.DoTimer(Sender : TObject);
begin
Dec(FAnswerDelay);
if FAnswerDelay <= 0 then
TForm(Owner).ModalResult := FAnswerDefault
else
FDelayLabel.Caption := IntToStr(FAnswerDelay)
end;

function MessageDlgWithTimer(const Msg: string;
DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons;
AnswerDefault,
AnswerDelay : Word): Word;
var
MsgDlg : TForm;
begin
MsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
try
TAnswerTimer.Create(MsgDlg, AnswerDefault, AnswerDelay, nil);
Result := MsgDlg.ShowModal
finally
MsgDlg.Free
end
end;


 
Sharik_212   (2003-08-04 22:15) [9]

Ок, спасибо. Последний вопрос, чего подставлять в качестве аргумента AnswerDefault?


 
Ученик   (2003-08-04 22:16) [10]

>Sharik_212 (04.08.03 22:15)
То, что нужно ответить, если пользователь не выбирает сам
mrYes, mrNo, mrOK и т.д.


 
Sharik_212   (2003-08-04 22:19) [11]

Ок, спасибо еще раз.


 
Sharik_212   (2003-08-04 22:34) [12]

Все класс, только не "нажимает". Лейбл никак не хочет декрементироваться.


 
Ученик   (2003-08-04 22:46) [13]

А так работает ?

procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlgWithTimer("Test Test Test Test Test", mtConfirmation, [mbYes, mbNo], mrYes, 10) = mrYes then
( "Yes") А так работает ?

procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlgWithTimer("Test Test Test Test Test", mtConfirmation, [mbYes, mbNo], mrYes, 10) = mrYes then
ShowMessage("Yes")
end;



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.08.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.003 c
14-58461
supersan
2003-07-21 17:33
2003.08.18
Проблема с IBTable.Locate


14-58465
Новик
2003-07-21 16:06
2003.08.18
ado и dll


14-58468
Driverrr
2003-04-23 13:20
2003.08.18
Рисунки


14-58427
Tyrande
2003-08-01 20:38
2003.08.18
Проверка


14-58426
Best Gun
2003-08-02 19:26
2003.08.18
Обновления для Win2000 + SP4





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский