Avatar billede sabine Nybegynder
08. april 2002 - 10:24 Der er 11 kommentarer og
1 løsning

Disabled TAB

Hvordan kan jeg disabled tap knappen

Avatar billede athlon-pascal Juniormester
08. april 2002 - 12:02 #1
kig på http://www.pythia.dk/tips/vis_tip.php?id=10
Den slår måske tab fra (i hvert fald alt+tab), hvis du kan leve uden de ellers super ctrl-alt-del & diverse windows-taster og genveje, så er den måske brugbar?
Avatar billede laffe Nybegynder
08. april 2002 - 21:46 #2
OnKeyDown Event
Avatar billede sabine Nybegynder
08. april 2002 - 22:41 #3
athlon :
Problemmet er at programmet skal gøre under NT og 2000 
og det procedure virker ikke 2000

laffe :
Onkeydown går desværre ikke aktiv når man kun trykker på TAB
Avatar billede laffe Nybegynder
09. april 2002 - 20:03 #4
Du skal svare på en WM_GETDLGCODE i din WinProc med DLGC_WANTTAB.

case (Message.Msg)
begin
  WM_GETDLGCODE:
  begin
    Message.Result = DLGC_WANTTAB;
  end;
end;

Dette gør, at 'Tab' Eventen også sendes i Onkeydown event.

Ved at svare på WM_GETDLGCODE fortæller du vinduet, at du gerne vil have enents på TAB trykket

Jeg fandt ud af det fra www.deja.com
Avatar billede laffe Nybegynder
09. april 2002 - 20:14 #5
Jeg fandt ud af det "på" www.deja.com :)
Avatar billede laffe Nybegynder
11. april 2002 - 10:09 #6
>Sabine. Har du fået det til at virke ?
Avatar billede laffe Nybegynder
11. april 2002 - 19:58 #7
// I FormActivate, har jeg assignet min egen WindowProc methode, som jeg har kaldt MyWinProc

void __fastcall TForm1::FormActivate(TObject *Sender)
{
  WindowProc = MyWinProc;
}

Her er så implementeringen af metoden.

En switch er det samme som en case i Delphi.

Som du kan se, så fanger jeg her alle WM_KEYDOWN Messages. Når en tste trykkes ned, så viser jeg en besked.

Ved alle andre beskeder, så kalder jeg formens WindowProc, som hedder WndProc, og lader den håndtere beskeden.

void __fastcall TForm1::MyWinProc(Messages::TMessage &Message)
{
  switch (Message.Msg)
  {
    case WM_KEYDOWN:
      if (Message.WParam)
        ShowMessage("WM_KEYDOWN Message received");
    break;
    default:
      WndProc(Message);
  }
}

Ovenstående viser pricippet i hvad jeg mener. Det at fange alle WM_KEYDOWN er en begyndelse. Der findes jo et hav af andre messages, som du måske også skal fange, men start lige med det her først.

Få ovenstående til at virke i Delphi. Så kan vi se på, hvilke andre messages der kunne være interesant.
Avatar billede laffe Nybegynder
11. april 2002 - 19:59 #8
Postede det forkerte svar her. Sorry ;) Bare ignorer det....
Avatar billede laffe Nybegynder
12. april 2002 - 12:58 #9
> Sabine Har du fået det til at vike ?
Avatar billede sabine Nybegynder
12. april 2002 - 23:05 #10
du må undskylde laffe
at jeg ikke har svaret før, men jeg har haft meget at se til

jeg har ikke prøvet det i nu, men jeg regner med at få det gjort inden for de næste par timer

men ellers på forhånd mange tak for din hjælp
Avatar billede sabine Nybegynder
12. april 2002 - 23:24 #11
Laffe jeg kan ikke få det til at virke, jeg tror at jeg gør det forkert

det var ikke sådan at du gider at lave et eksembel
Avatar billede sabine Nybegynder
12. april 2002 - 23:38 #12
har fået det til at virke med denne kode

private
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;

procedure TForm1.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
  inherited;
  Message.Result := Message.Result or DLGC_WANTTAB
end;

Så mange tak for din hjælp
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