Avatar billede hugopedersen Nybegynder
29. maj 2009 - 07:42 Der er 5 kommentarer og
1 løsning

Messagebox med timeout

Jeg er ved at prøve at implementere løsningen fra
http://delphi.about.com/od/adptips2004/a/bltip1004_5.htm
men i min Delphi 2009 viser den kun det første tegn af teksten både i caption og selve meddelelsen.
Jeg har en mistanke til at det er PChar der er forkert på en eller anden måde.
Er der nogen der kender til en anden fungerende løsning der giver en messagebox med en timeout på?
Avatar billede a_nor Nybegynder
29. maj 2009 - 09:44 #1
Har du i Delphi 2009 et compiler directive Extended Syntax ?
Det skal være Sat i Delphi 7 for at supportere PChar.

Har du kopieret hele eksemplet ? og dermed faste tekster - eller har du udskiftet med noget variabler af en slags?
Avatar billede hugopedersen Nybegynder
29. maj 2009 - 09:54 #2
Extended syntax er slået til (tror det er default)

Eksemplet er kopieret rimeligt nøjagtigt.

Const
  MB_TIMEDOUT = 32000;

  Function MessageBoxTimeOut(hWnd: HWND; lpText: String; lpCaption: PChar; uType: UINT; wLanguageId: WORD; dwMilliseconds: DWORD): Integer; stdCall; External user32 name 'MessageBoxTimeoutA';

procedure TfrmMain.btnTestClick(Sender: TObject);
  Var
    iFlags                  : Integer;
begin
  iFlags  := MB_OK or MB_SETFOREGROUND or MB_SYSTEMMODAL or MB_ICONINFORMATION;
  MessageBoxTimeout(Application.Handle, 'Test a timeout of 2 seconds.', 'MessageBoxTimeout Test', iFlags, 0, 2000) ;
end;
Avatar billede hugopedersen Nybegynder
29. maj 2009 - 10:29 #3
Fandt et sted hvor der var nævnt en MessageBoxTimeoutW som bruger en PWideChar i stedet. Det ser ud til at det var det der skulle til for at løse mit issue.

http://edn.embarcadero.com/article/32736
Avatar billede a_nor Nybegynder
29. maj 2009 - 10:58 #4
Testede lige i D7...  Eksemplet fungerer fint.

Hvis Huge-string er slået fra, vises dog forkert starttegn på teksten inde i boxen.
Avatar billede hugopedersen Nybegynder
29. maj 2009 - 11:14 #5
Så er det nok unicode delen af Delphi 2009 der får det til at skabe sig. Men som sagt så virker PWideChar udgaven hos mig.
Avatar billede hugopedersen Nybegynder
05. juni 2009 - 07:56 #6
Jeg fandt som sagt en løsning ved at bruge MessageBoxTimeoutW i stedet for.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester