Butona Basılı Tutulma Olayı [Yardım]
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Butona Basılı Tutulma Olayı [Yardım]
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.
Re: Butona Basılı Tutulma Olayı [Yardım]
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.
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;
Re: Butona Basılı Tutulma Olayı [Yardım]
çok teşekkrler yardımlarınız için sorunum halloldu