TrackBar da hayali değer olabilirmi?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sertkayasalih
Üye
Mesajlar: 178
Kayıt: 12 Haz 2003 12:47
Konum: Antalya
İletişim:

TrackBar da hayali değer olabilirmi?

Mesaj gönderen sertkayasalih »

Herkese merhaba,

- TrackBar ile ilgili gerçek değerler:

MaxValue := 1060;
MinValue := 944;
Position := 1000;

Yapmak istediğim;

Yukardaki gerçek değerler sabit kalma koşolu ile TrackBar ın OnChange event ında 944 ile 1060 arasındaki değişimi bir label da string olarak alabiliyorum.

Kod: Tümünü seç

procedure TAnaForm.tbarOnChange(Sender:TObject);
begin
    lbPoz.Caption := IntToStr(tbar.Position);
end;
TrackBar da hayali değerler;
MaxValue := 100;
MinValue := -100; varmış gibi.

TrackBar pozisyonu -100 ile 100 arasında olacak şekilde OnChange event ında lbPoz.Caption ile string olarak göstermem gerekiyor!

- Gerçek değerler sabit kalarak, sadece hayali değerleri bilgi amaçlı göstermek mümkün olabilir mi?
Şayet böyle bir işlemi yapmak mümkün olursa OnChange event ında bu işlemi nasıl yapabilirim?

Yardımcı olan herkese şimdiden teşekkürler.
Bilgi; iki tarafı keskin kılıca benzer.
İyi kullanılmazsa, ya karşıyı, ya da sahibini
keser.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Bu soruyu görünce Film ile Altyazı senkronu yaptığım ilk zamanlara (2001 yılı) geri döndüm...

- Mesela Film 1000 karedir ama altyazı 900 karedir. Senkron için film 1. karede iken altyazı 1. karede, film 1000. karede iken altyazı 900. karede olmalıdır ki senkron olsun :)

- Konumuza dönelim... Sana basit bir orantı formülü ile pozisyon hesabı yapan fonksiyon hazırladım... Afiyet olsun...

- Teknik hakkında bilgi vereyim. Önce gerçek ve sanal max ve min değerler arasındaki farkı alarak hareket alanını tespit ediyoruz...

- Bu bize gerçek değerde atılan 1 adıma karşılık sanal olarak kaç adım atılması gerektiğini bulmamız için gerekli.

- Sonra Gerçek değerin başlangıç değerinden itibaren kaç adım atıldığını tespit ediyoruz...

- En son olarak da basit bir doğru orantı formülü ile bunu sanal olarak kaç adıma tekabül ettiğini bulup, sanal başlangıç noktasına ekliyoruz.

- Bu şekilde sanal genlikte hangi pozisyonda olduğu tespit etmiş oluyoruz...

:idea: Yani herşey matematik üzerine kurulu. Herhangi bir nesneye falan ihtiyaç yok... :o

Kod: Tümünü seç

Function SanalPos(oMin, oMax, oPos, sMin, sMax : Integer):Integer;
Var
  Delta1,
  Delta2,
  Hareket  : Integer;
begin
  Delta1  := oMax-oMin;
  Delta2  := sMax-sMin;
  Hareket := oPos - oMin;
  Result  := sMin + Trunc(Hareket*Delta2/Delta1);
end;

Kod: Tümünü seç

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  With TrackBar1 do
  begin
    Label1.Caption := Format('%d', [TrackBar1.Position]);
    Label2.Caption := Format('%d', [SanalPos(Min, Max, Position, -100, 100)]);
  end;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
sertkayasalih
Üye
Mesajlar: 178
Kayıt: 12 Haz 2003 12:47
Konum: Antalya
İletişim:

Mesaj gönderen sertkayasalih »

Merhaba mrmcop,

- Cevaplama yönteminizden çok etkilendim.
- Size samimiyetimle içimden gelen duygularımla seslenmek istiyorum :)

- Öncelikle sizin, bu kadar bilgili, yapıcı ve olumlu kişiliğinizin oluşmasında katkısı olduğunu düşündüğüm Annenize, Babanıza, ailenize, öğretmenlerinize ve diğerlerine, ayrıca humanist ve yardımcı tavrınızdan dolayı size kendi adıma ve ülkem adına çok teşekkür eder bu vesile ile minnet duygularımı belirtmek isterim :)

- Yazdığınız bu güzel kod için tekrar teşekkür ederim :)
Bilgi; iki tarafı keskin kılıca benzer.
İyi kullanılmazsa, ya karşıyı, ya da sahibini
keser.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Çok memnun oldum... :)

- Çalışmalarınızda başarılar dilerim... :idea:
Resim
Resim ....Resim
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: TrackBar da hayali değer olabilirmi?

Mesaj gönderen sr1111 »

yukaridaki işlemde fonksiyonda float degeri integer olarak yakın bir değer veriyor.

asagidaki kodu trackbar1 change ine yazdigimizda integer degil diyor.
TrackBar1.position:=advspinedit1.FloatValue;

acaba trackbar.position unu float degeri olarak nasil tanitabiliriz.
Cevapla