Autor Beitrag
TomPIII866
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 28.08.08 14:43 
Hallo,

ich habe ein kleines Problem.
Und zwar habe ich ein Formular mit mehreren TButtons TPageControls.
Außerdem befindet sich ein TImage im Formular.
Wenn sich der Mauszeiger innerhalb des TImage befindet, dann soll der Nutzer den Mauszeiger auch mittels der Pfeiltasten bewegen können. Aber eben nur, wenn sich der Mauszeiger innerhalb des Image befindet. ;)

Habe es wie folgt programmiert:

ausblenden 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:
procedure Tfrm_haupt.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if inside_farbdruck = True then
    begin
      if key = VK_LEFT then
        SetCursorPos(Mouse.CursorPos.X - 1, Mouse.CursorPos.Y);
      if key = VK_RIGHT then
        SetCursorPos(Mouse.CursorPos.X + 1, Mouse.CursorPos.Y);
      if key = VK_UP then
        SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y - 1);
      if key = VK_DOWN then
        SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y + 1);
    end;
end;

procedure Tfrm_haupt.img_welle_farbdruckMouseEnter(Sender: TObject);
begin
  inside_farbdruck := True;
//Cursor-Form setzen
  img_welle_farbdruck.Cursor := crCross;
end;

procedure Tfrm_haupt.img_welle_farbdruckMouseLeave(Sender: TObject);
begin
  inside_farbdruck := False;
//Rücksetzen des Cursors
  img_welle_farbdruck.Cursor := crDefault;  
end;




Das geht soweit auch, nur leider passiert es manchmal, dass nicht der Mauszeiger bewegt wird, sondern der Fokus auf den Buttons springt, wenn man die Pfeiltasten drückt. Oder die PageControls durchgeschaltet werden.

Habe dann gedacht: "gut, dann nehme ich nicht die Pfeiltasten, sondern, A, S, D, W".
Habe dann die Virtual Key Codes durchgeschaut und für A wäre es dann:

ausblenden Delphi-Quelltext
1:
2:
if key = (41then
  SetCursorPos(Mouse.CursorPos.X - 1, Mouse.CursorPos.Y);


Aber das geht gar nicht, beim Debuggen habe ich gesehen, dass er die if-Anweisung einfach überspringt.

Wie kann ich das Problem denn am Besten lösen?

Danke für eure Tipps! :)
Tom
TomPIII866 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 28.08.08 15:05 
Ein weiteres Problemchen hätte ich noch:
Und zwar habe ich einen SaveDialog. Dort möchte ich den eingegebenen Dateinamen auslesen.
Aber ohne das komplette Verzeichnis. Nur den Dateinamen.

Mit
ausblenden Delphi-Quelltext
1:
dateiname := SaveDialog1.FileName;					

bekomme ich ja das komplette Verzeichnis mit Dateiname.


EDIT:
Gefunden:
ausblenden Delphi-Quelltext
1:
dateiname := ExtractFileName(dlg_open.FileName);					
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 28.08.08 15:22 
ups zu langsam ^^

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
TomPIII866 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 28.08.08 16:40 
Okay....Problem auch gelöst. Hab ein KeyPress-Ereignis draus gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure Tfrm_haupt.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if inside_farbdruck = True then
    begin
      if key = 'a' then
        SetCursorPos(Mouse.CursorPos.X - 1, Mouse.CursorPos.Y);
      if key = 'd' then
        SetCursorPos(Mouse.CursorPos.X + 1, Mouse.CursorPos.Y);
      if key = 'w' then
        SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y - 1);
      if key = 's' then
        SetCursorPos(Mouse.CursorPos.X, Mouse.CursorPos.Y + 1);
    end;
end;