www.domaci.de Forum Indeks Home
Portal • Forum • Novi upisi • Pretraga • Link do nas • Domaći filmovi • Lista korisnika • Tim sajta • Proverite privatne poruke • Prijava • Registracija
Pravilnik • FAQ • Profil • Favorites • Galerija slika • Top lista • Download MP3 • MP3 razno • Spotovi • Noviteti 2013 • Muzički noviteti 2014

Delphi: Paljenje/gašenje Num, Caps i Scroll
Upišite novu temu   Odgovorite na temu    www.domaci.de Forum Indeks -> ~ Programiranje ~
::  
Autor Poruka
himzo
Banovan!

Odomaćeni član
Odomaćeni član



Godine: 41

Datum registracije: 24 Okt 2005
Poruke: 1390
Mesto: Vojvoda Stepa

serbia.gif
PorukaPostavljena: Pon Nov 28, 2005 4:05 pm    Naslov poruke: Delphi: Paljenje/gašenje Num, Caps i Scroll Na vrh strane Na dno strane

Ukoliko želite da dozvolite Vašoj aplikaciji da kontroliše Num Lock, Caps Lock i Scroll Lock status to možete uraditi na prikazan način. Konstante ktCapsLock, ktScrollLock i ktNumLock predstavljaju odgovarajuće led diode tj odgovarajuća stanja funkcije Caps, Lock i Num. Sledeći kod prikazuje kako se to radi:

Code:

type
  TKeyType = (ktCapsLock, ktNumLock, ktScrollLock);

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

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

Primer korišćenja:
Code:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLedState(ktCapsLock, True);  // Uključuje Caps Lock
  SetLedState(ktNumLock, False);  // Isključuje Num Lock
  SetLedState(ktScrollLock, True);  // Uključuje Scroll Lock
end;


 
Doktor
~Sanjicino*slculence~
~Sanjicino*slculence~



Godine: 38

Datum registracije: 17 Nov 2005
Poruke: 4264
Mesto: Novi Sad

blank.gif
PorukaPostavljena: Uto Nov 29, 2005 7:39 am    Naslov poruke: Na vrh strane Na dno strane

Jeli ovo moze da se iskoristi, npr. za pravljenje light show-a. Razmisljao sam da napravim program recimo da mi pali i gasi lampice na tastaturi odredjenim redosledom i u vremenskim intervalima koje ja odredim pomocu ScrollBar-a.

Mozes li da mi kazes kako to da izvedem (ako je u opste moguce)?

_________________
~*~Vojim svoje srculence najvise na svetu ~*~ :322:

 
himzo
Banovan!

Odomaćeni član
Odomaćeni član



Godine: 41

Datum registracije: 24 Okt 2005
Poruke: 1390
Mesto: Vojvoda Stepa

serbia.gif
PorukaPostavljena: Sre Nov 30, 2005 8:42 pm    Naslov poruke: Light Show Na vrh strane Na dno strane

E ovako…

Za Light Show, kako si ga ti nazvao moraš prvo da odrediš redosled LED indikatora na svojoj tastaturi. Kod mene je, na primer prva LED dioda Num Lock, druga Caps Lock i poslednja Scroll Lock. Ovo je slučaj kod najvećeg broja tastatura ali sam sretao i izuzetke. Dakle primer će slediti navedeni raspored.

Otvori nov projekat i na praznu formu (default: form1) postavi tajmer (Timer1), skrol (ScrollBar1) i jedan Edit (Edit1).

Edit1 ima osobinu Text = ‘200 ms’
ScrollBar1 ima osobine Min = 10, Max = 2000 i Possition = 200
Timer1 ima osobinu Interval = 200
Button1 ima osobinu Caption = ‘Start / Stop’

Ovaj primer će raditi na sledeći način. Kad pokreneš aplikaciju LED diode na tvojoj tastaturi će se paliti i gasiti naizmenično sleva na desno. Efekat je kao da se svetla kreću na levu stranu i tako u krug. Brzina kojom se vrši paljenje dioda je 200 ms, tj. na svakih 200 ms pali se odredjena LED dioda.

ScrollBar služi za štelovanje brzine “kretanja” LED dioda. Najveća brzina se postiže kada je ScrollBar u krajnjem levom položaju (10 ms) a najveća pauza je od dve sekunde (kada je ScrollBar pozicioniran u krajnji desni položaj). Pomeranjem skrolera menja se brzina kretanja LED dioda.

U Edit boxu piše trenutna brzina, tj. vremenski interval (pauza) za paljenje i gašenje lampica.

Dugme Button1 služi za zaustavljanje / startovanje algoritma za „Light Show“.

Program (unit1.pas) treba da izgleda ovako:
Code:
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    ScrollBar1: TScrollBar;
    Edit1: TEdit;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TKeyType = (ktCapsLock, ktNumLock, ktScrollLock);

var
  Form1: TForm1;
  b: Byte = 1;
  IDGO: Boolean;

implementation

{$R *.dfm}

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

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

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  If IDGO Then
  BEGIN
  Case b Of
    1: Begin
       SetLedState(ktNumLock, True);
       SetLedState(ktCapsLock, False);
       SetLedState(ktScrollLock, False);
       End;
    2: Begin
       SetLedState(ktNumLock, False);
       SetLedState(ktCapsLock, True);
       SetLedState(ktScrollLock, False);
       End;
    3: Begin
       SetLedState(ktNumLock, False);
       SetLedState(ktCapsLock, False);
       SetLedState(ktScrollLock, True);
       End;
  End; {Case}
  b := b + 1;
  If b > 3 Then b := 1;
  END;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  IDGO := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  IDGO := Not IDGO;
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  Timer1.Interval := ScrollBar1.Position;
  Edit1.Text := IntToStr(ScrollBar1.Position) + ' ms';
  Edit1.SetFocus;
end;

end.


Naravno, svako može štelovati i podešavati parametre kako mu odgovara i time dobije željeni efekat. Ovo ne spada u grupu korisnog softvera već je zabavnog karaktera i služi samo za zezanje...

Ako te mrzi da prekucavaš kod onda skini gotov projekat koji sam ovde postavio na download a vidiš i ScreenShot.

Nadam se da sam ti pomogao i ne ustručavaj se da pitaš šta te zanima.
 
Doktor
~Sanjicino*slculence~
~Sanjicino*slculence~



Godine: 38

Datum registracije: 17 Nov 2005
Poruke: 4264
Mesto: Novi Sad

blank.gif
PorukaPostavljena: Sre Nov 30, 2005 11:31 pm    Naslov poruke: Na vrh strane Na dno strane

E to mi je bas trebalo.


Hvala. Very Happy

_________________
~*~Vojim svoje srculence najvise na svetu ~*~ :322:

 
Prikaz poruka:   
Upišite novu temu   Odgovorite na temu    www.domaci.de Forum Indeks -> ~ Programiranje ~ -> Delphi: Paljenje/gašenje Num, Caps i Scroll Vreme je podešeno za GMT + 1 sat
Strana 1 od 1

 
Pređite u:  
Vi ne možete otvarati nove teme u ovom forumu
Vi ne možete odgovarati na teme u ovom forumu
Vi ne možete menjati Vaše poruke u ovom forumu
Vi ne možete brisati Vaše poruke u ovom forumu
Vi ne možete glasati u anketama u ovom forumu
Vi ne možete postavljati fajlove u ovom forumu
Vi ne možete preuzeti fajlove sa ovog foruma





- Burek Forum - Doček Nove 2018. godine - Venčanja, svadbe - Proslave - TipoTravel - Kuda večeras - Anwalt - legal -

Bookmark to: Twitter Bookmark to: Facebook Bookmark to: Digg Bookmark to: Del.icio.us Bookmark to: StumbleUpon