Autor Beitrag
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 30.07.06 08:15 
Hallo NG,


ich erzeuge zur Laufzeit ein Form mit folgendem Code:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
  TTrak = class(Tform)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure btzu(Sender: Tobject; Var close: boolean);
    procedure btdruck(Sender: TObject);
    procedure BTMouseWheel(Sender: TObject; Shift: TShiftState;
              WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    procedure BTOnClick(Sender:TObject; Var Key: Word; Shift: TShiftState);

  end;
        ...............................................................................
 
          Application.CreateForm(TForm,BTRAK);
          with btrak do
            begin
              .........
              onkeydown:=BTOnClick;
              onmousewheel:=BTMouseWheel;
              ..........

//*******************************************************************
Procedure TTrak.BTMouseWheel(Sender: TObject; Shift: TShiftState;
              WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
  begin

    BT_Image.Canvas.fillrect(BT_Image.Canvas.ClipRect);

    if WheelDelta>0 then
      BTNormFaktor:=BTNormFaktor*1.05;

    if WheelDelta<0 then
      BTNormFaktor:=BTNormFaktor*0.95;

    Form1.Boretrak(true);
  end;
//*******************************************************************


//*******************************************************************
Procedure TTrak.BTOnClick(Sender: TObject; var Key: Word; Shift: TShiftState);

  begin

    BT_Image.Canvas.fillrect(BT_Image.Canvas.ClipRect);

    if (key=187) or (key=107) then    //vergrössern
      begin
        BTNormFaktor:=BTNormFaktor*1.05;
      end;

    if (key=189) or (key=109) then   // verkleinern
      begin
        BTNormFaktor:=BTNormFaktor*0.95;
      end;


    Form1.Boretrak(true);

  end;
//*******************************************************************



Das Problem dabei ist nun: die Vergrössern-/Verkleinernfunktion über das Mausrad läft problemlos, aber auf die Tastatur wird nicht reagiert. Ich habe dann mal den Debugger mitlaufen lassen .. das KeyPress Ereignis wird überhaupt nicht angesprochen.

Kann mir jemand helfen ?


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: So 30.07.06 10:37 
Das liegt vielleicht daran, dass irgendein Steuerelement, nicht das Formular den Fokus hat. Deshalb reagiert nur dieses Steuerelement auf die Tasten drücke.
Eine Lösung ist: MainForm.KeyPreview := True;

Das heißt das Formular bekommt jeden Tastendruck mit, auch wenn er nicht an das Formular gerichtet ist.
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 30.07.06 12:23 
Hallo,

:twisted: genau das war es .... hätte ich auch selber drauf kommen können.


Vielen Dank und Gruß


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!