Autor Beitrag
Stread
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 188

Win 7
Delphi XE
BeitragVerfasst: Di 07.09.10 22:03 
Hi,
ich habe ein kleines Programm wo ich die Mausposition mit einem Tastensruck in ein Edit Feld speichern kann. Ich drücke Strg + Q und die aktuelle Mausposition wird in dem nächsten freien Edit Feld gespeichert.

Das Problem ist wenn ich ein Mausklick(oder Doppelklick) mache und dann wieder Strg + Q drücke ist das nächste Edit Feld was dran wäre leer und das übernächste hat dann den Focus und erst beim nochmaligen betätigen der Tasten werden die Zahlen wieder korrekt übernommen. Wenn dann nochmal ein Klick kommt ist es egal, dann stimmt es auch wieder.
Auch wenn ich am Anfang bevor ich das allererste mal die beiden Tasten drücke wohinklicke geht es die ganze Zeit normal weiter.

Wenn ich mein Problem schlecht beschrieben haben sollte kann ich gerne noch ein Bild hinzufügen :P

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:
  .
  .
protected
    procedure hot1key(var msg:TMessage);   message WM_HOTKEY;
  .
  .

procedure TForm12.hot1key(var msg:TMessage);
begin
  if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then //wenn Strg und Q gedrückt wird
   begin

   if EditX1.Focused then
     begin
       EditX1.Text:= IntToStr(MousePosition.X);
       EditY1.Text:= IntToStr(MousePosition.Y);
     end;

    if EditX2.Focused then
    begin
       EditX2.Text:= IntToStr(MousePosition.X);
       EditY2.Text:= IntToStr(MousePosition.Y);
     end;


      if EditX3.Focused then
     begin
       EditX3.Text:= IntToStr(MousePosition.X);
       EditY3.Text:= IntToStr(MousePosition.Y);
     end;
     .
     .
     .
if EditX1.Text='' then
     begin
       EditX1.SetFocus;
     end
     else

     Self.Perform(WM_NEXTDLGCTL, 0, 0);
  end;

end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm12.FormCreate(Sender: TObject);
begin

RegisterHotKey(handle, 1, MOD_CONTROL ,81);

end;
Stundenplan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 32

Win 7
Delphi 7 Pers., C# (VS 2010 Express)
BeitragVerfasst: Mi 08.09.10 07:52 
Du könntest doch in einer Variable speichern, bei welchem Edit er grade ist, und dann mithilfe von Suche in: Delphi-Forum, Delphi-Library FINDCOMPONENT das jeweilige Edit ansprechen, z. B. so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var EditNum: Integer;
//...
(FindComponent('Edit' + IntToStr(EditNum)) as TEdit).Text := //...
inc(EditNum);
//...

Dann brauchste auch gar nicht mit dem Fokus hantieren!

Viele Grüße,
Stundenplan.