Autor Beitrag
Ak-Alex
Gast
Erhaltene Danke: 1



BeitragVerfasst: Sa 05.04.03 00:27 
Hallo!

Habe mal wieder ein kleines Problem...
Habe bisher ein Programm geschrieben mit dem ich alle Leds über der Numernblock an und ausschalten kann. Das geschieht bis jetzt über 2 Buttons, einer für ein und der andere für aus.

Jetzt möchte ich, dass in einer Schleife die lichter immer wieder an und aus gehen, bis ein bestimmtes ereignis eintritt. Wie mache ich das?

Hier mein Code:

ausblenden volle Höhe 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:
implementation

{$R *.dfm}
type 
  TKeyType = (ktCapsLock, ktNumLock, ktScrollLock); 

procedure SetLedState(KeyCode: TKeyType; bOn: Boolean);
var 
  KBState: TKeyboardState; 
  Code: Byte; 
begin 
  case KeyCode of 
    ktScrollLock: Code := VK_SCROLL;
    ktCapsLock: Code := VK_CAPITAL; 
    ktNumLock: Code := VK_NUMLOCK; 
  end; 
  GetKeyboardState(KBState); 
  if (Win32Platform = VER_PLATFORM_WIN32_NT) then 
  begin
    if Boolean(KBState[Code.]) <> bOn then 
    begin 
      keybd_event(Code, 
                  MapVirtualKey(Code, 0), 
                  KEYEVENTF_EXTENDEDKEY,
                  0); 

      keybd_event(Code, 
                  MapVirtualKey(Code, 0), 
                  KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,
                  0); 
    end; 
  end 
  else
  begin 
    KBState[code.] := Ord(bOn); 
    SetKeyboardState(KBState); 
  end;
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
  SetLedState(ktCapsLock, True);  // CapsLock on
  SetLedState(ktNumLock, True);  // NumLock on
  SetLedState(ktScrollLock, True);  // ScrollLock on
end; 


procedure TForm1.Button2Click(Sender: TObject);
begin
   SetLedState(ktCapsLock, False);  // CapsLock on
  SetLedState(ktNumLock, False);  // NumLock on
  SetLedState(ktScrollLock, False);  // ScrollLock on
end;

end.


Moderiert von user profile iconUGrohne: Quote-Tags durch Code-Tags ersetzt und Code sinnwahrend gekürzt (bitte keine kompletten Units posten, wenn nicht dringend notwendig!)
Moderiert von user profile iconAya: mußte das [code] im Text durch [code.] ersetzen, wegen BB Formatierung.
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 05.04.03 03:53 
Hi,

ich würd's so machen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  StopLED, LED: Boolean;

procedure LEDBlink(Time: Integer);
begin
  while not StopLED do begin
    LED:=not LED;
    SetLedState(ktCapsLock,LED);
    SetLedState(ktNumLock,LED);
    SetLedState(ktScrollLock,LED);
    Sleep(Time);
  end;
end;


Au'revoir,
Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
ShadowCaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 07.04.03 13:19 
EINFACH GEIL.... !! :lol:

habs probiert... und funzt echt klasse. Schnöne Spielerrei wenn man jemanden ärgern will..
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 07.04.03 14:29 
@Aya: sofern dein Code aber nicht in einem separaten Thread läuft kommt man nicht mehr aus der Schleife raus... :roll:

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 07.04.03 17:00 
doch, sobald man StopLED true setzt... ;)
(Ok, dürfte schwer werden weil das Programm dauer ausgelastet is.. *g* aber.. mit ProzessMessages sollte das gehen, wenn nich halt extra Thread oder einfach anstelle von Sleep nen Timer)

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 07.04.03 19:35 
Aya hat folgendes geschrieben:
(Ok, dürfte schwer werden weil das Programm dauer ausgelastet is.. *g* aber.. mit ProzessMessages sollte das gehen, wenn nich halt extra Thread oder einfach anstelle von Sleep nen Timer)

Genau das meinte ich...! ;)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 07.04.03 19:40 
Motzi hat folgendes geschrieben:
Aya hat folgendes geschrieben:
(Ok, dürfte schwer werden weil das Programm dauer ausgelastet is.. *g* aber.. mit ProzessMessages sollte das gehen, wenn nich halt extra Thread oder einfach anstelle von Sleep nen Timer)

Genau das meinte ich...! ;)

Nun ja, aber ich kaue ungern jedem wirklich alles bis auf's letzte Detail vor.. ;)

Ich beantworte das, was man mich fragt... schließlich soll der Fragende ja seler noch nen bissel denken. (Ich beantworte auch fragen, wenn ich weiß das die Antwort sinnlos, bzw falsch ist... denn der Fragende soll selber drauf komme nwas er machen muß, und ggf. nochmal danach fragen ;) So lernt er aufjedenfall mehr)

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!