Butona Basılı Tutulma Olayı [Yardım]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozanozbek
Üye
Mesajlar: 2
Kayıt: 22 Kas 2010 06:05

Butona Basılı Tutulma Olayı [Yardım]

Mesaj gönderen ozanozbek »

Merhabalar hemen konuya gireyim örnek olarak anlatayım ekranımda bi label ve 2 buton var label içinde 1 değeri var ve "+" butonuna basınca labeldaki değer 1 artıyor "-" butonuna basıncada 1 azalıyor ama bu işlemi yapmak için butona tek tek tıklamak gerekiyor butona basılı tutarak durmadan arttırma işlemi veya azaltma işlemi yapabilirimiyiz yani butona basıcam labeldaki sayilar artmaya baslıcak ben basılı tuttukca bırakınca durucak araştırdım ama bir sonuca ulasamadım bu konu hakkında yardımlarınızı bekliorm şimdiden teşekkurler.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Butona Basılı Tutulma Olayı [Yardım]

Mesaj gönderen mrmarman »

Merhaba.

Aşağıdaki şekilde bir mekanizma kurman gerekiyor.Sistem şöyle işliyor.

xDurum bir tetik mekanizmasını oluşturan global bir değişken. Button basılı olduğu sürece TRUE basılı iken çekildiğinde de FALSE değeri alıyor. Biz bu değeri takip ederek TRUE olduğu sürece defaten arttırım veya azaltım yapıyoruz.

Tek bir buton tıklaması yapınca yani ilk bas ve çek olayında bir defa işlem yapmasını sağladık. Nasıl yaptık, basılı olma süresi xBasla sayacının geriye sayarak 0'a düşme süresince bekleme yapıyor. 0'a ulaştığında ise ardışık şekilde eksiltme veya arttırma yapılıyor. 0'a düşmeden önce butonu bırakırsak arada bir yerde FALSE değeri alan xDurum tetik mekanizması döngüyü sonlandırıyor ve ikinci döngüye girmeden procedure terk ediliyor.

Umarım işini görür. Başarılar.

Kod: Tümünü seç

Var
  xDurum   : Boolean = False;
  xBekleme : Integer = 100;
  xBasla   : Integer = 50;

procedure TForm1.FormShow(Sender: TObject);
begin
  Label1.Caption := '0';
end;

procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  xDurum := True;

  Label1.Caption := IntToStr( StrToInt(Label1.Caption) + 1);
  while (xBasla > 0) AND xDurum do begin
    Dec(xBasla);
    Application.ProcessMessages;
    Sleep( 5 );
  end;

  while xDurum do begin
    Label1.Caption := IntToStr( StrToInt(Label1.Caption) + 1);
    Application.ProcessMessages;
    Sleep( xBekleme );
  end;
end;

procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  xDurum := False;
  xBasla := 50;
end;

procedure TForm1.BitBtn2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  xDurum := True;

  Label1.Caption := IntToStr( StrToInt(Label1.Caption) - 1);
  while (xBasla > 0) AND xDurum do begin
    Dec(xBasla);
    Application.ProcessMessages;
    Sleep( 5 );
  end;

  while xDurum do begin
    Label1.Caption := IntToStr( StrToInt(Label1.Caption) - 1);
    Application.ProcessMessages;
    Sleep( xBekleme );
  end;
end;

procedure TForm1.BitBtn2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  xDurum := False;
  xBasla := 50;
end;
Resim
Resim ....Resim
ozanozbek
Üye
Mesajlar: 2
Kayıt: 22 Kas 2010 06:05

Re: Butona Basılı Tutulma Olayı [Yardım]

Mesaj gönderen ozanozbek »

çok teşekkrler yardımlarınız için sorunum halloldu
Cevapla