Форум: "Потрепаться";
Текущий архив: 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