/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
KeyPress
Fra : Ulrik Vadstrup


Dato : 12-11-01 14:03

Hvordan checker jeg på om Shift eller Ctrl er holdt nede mens jeg dobbelt
klikker på en form, det må være noget med Key, men den bliver jo ikke
"sendt" med i dblClick proceduren, jeg kan ik lige helt greje det.

--
Med venlig hilsen
Ulrik Vadstrup



 
 
Thomas Due (12-11-2001)
Kommentar
Fra : Thomas Due


Dato : 12-11-01 19:25

Du skal bruge KeyDown eventen, og der gør du så noget i stil med :

var
FCtrl,
FShift,
FAlt : Boolean;

procedure TForm1.KeyDown(Sender : TObject; ..... ; Shift : TShift);
// Jeg kan ikke huske alle parameterne i hovedet, beklager
begin
FCtrl := ssCtrl in Shift;
FShift := ssShift in Shift;
FAlt := ssAlt in Shift;
end;

Denne event kan du så også sætte KeyUp til at pege, da de er ens. Dermed
sikre du at det bliver registreret når du SLIPPER igen.

Mvh
Thomas
"Ulrik Vadstrup" <vadstrup@post12.tele.dk> wrote in message
news:9sohai$11ua$1@news.cybercity.dk...
> Hvordan checker jeg på om Shift eller Ctrl er holdt nede mens jeg dobbelt
> klikker på en form, det må være noget med Key, men den bliver jo ikke
> "sendt" med i dblClick proceduren, jeg kan ik lige helt greje det.
>
> --
> Med venlig hilsen
> Ulrik Vadstrup
>
>



Claus Nielsen (12-11-2001)
Kommentar
Fra : Claus Nielsen


Dato : 12-11-01 19:38

>Hvordan checker jeg på om Shift eller Ctrl er holdt nede mens jeg dobbelt
>klikker på en form, det må være noget med Key, men den bliver jo ikke
>"sendt" med i dblClick proceduren, jeg kan ik lige helt greje det.

Hmm, du kan løse det på denne måde: Jeg har kombineret to af formens
events: OnDblClick og OnMouseDown.


procedure TForm1.FormDblClick(Sender: TObject);
begin
// Ved dobbeltklik "enabler" jeg den anden event
// Den er nemlig ikke sat som default, da ellers også et-klik fanges
OnMouseDown := FormMouseDown;
end;


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// Start med at disable event'en igen...
OnMouseDown := nil;

// Hvis man holder Shift nede, så...
if ssShift in Shift then
ShowMessage('Shift');

// Hvis man holder Ctrl nede, så...
if ssCtrl in Shift then
ShowMessage('Ctrl');
end;


Håber det kan klare dit problem?

Mvh, Claus Nielsen
--
e-mail: cnn@post6.tele.dk
homepage: http://home6.inet.tele.dk/cnn

Asger Grunnet (12-11-2001)
Kommentar
Fra : Asger Grunnet


Dato : 12-11-01 19:49


"Ulrik Vadstrup" <vadstrup@post12.tele.dk> wrote in message news:9sohai$11ua$1@news.cybercity.dk...
> Hvordan checker jeg på om Shift eller Ctrl er holdt nede mens jeg dobbelt
> klikker på en form, det må være noget med Key, men den bliver jo ikke
> "sendt" med i dblClick proceduren, jeg kan ik lige helt greje det.
>
> --
> Med venlig hilsen
> Ulrik Vadstrup
>

Det nemmeste er at bruge GetKeyState (fra unit Windows) :

if (GetKeyState(VK_CONTROL) and $8000) <> 0 then begin
ShowMessage('Ctrl');
end;

Asger.



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste