![]() |
| Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir. |
İlerleme Çubuğu Yapılandırması |
Yanıt Yaz
|
| Yazar | |
Nevra Nur
Yeni Üye
Kayıt Tarihi: 09 Şubat 2026 Konum: konya Durum: Aktif Değil Puanlar: 16 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Nevra Nur
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Konu: İlerleme Çubuğu YapılandırmasıGönderim Zamanı: 6 Saat 43 Dakika Önce Saat 13:42 |
|
Merhabalar, Kullanıcının bir çubuğu sağa sola kaydırarak görev tamamlanma yüzdesini girmesini hedefliyorum. Bu sürükleme işleminin anlık olarak yüzde değerine dönüşmesi ve ekranda görünmesi için hangi fonksiyonel yapıyı tercih etmeliyim?https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
|
|
![]() |
|
Eren Ö.
Yeni Üye
Kayıt Tarihi: 25 Eylül 2025 Durum: Aktif Değil Puanlar: 33 |
Mesaj Seçenekleri
Teşekkürler(2)
Alıntı Cevapla
Gönderim Zamanı: 5 Saat 6 Dakika Önce Saat 15:19 |
|
İsteğiniz inceledim ve bunun üzerine ufak bir çalışmam oldu. Clomosy'de böyle bir component olmadığından dolayı kendim oluşturmak istedim. Bunu özelleştirebilirsiniz ve açıklayıcı bir şekilde yorumla destekledim. Umarım işinize yarar.
var MainForm : TclForm; AnaLayout : TclLayout; // Tüm nesneleri tutan ana kutu ArkaPlanPanel : TclProPanel; // Mavi çubuk (Yol) YuvarlakButon : TclProPanel; // Sürüklenebilen beyaz top YuzdeEtiketi : TclProLabel; // %0 yazan metin Surukleniyor : Boolean; // Şu an sürükleniyor mu? HedefX : Integer; // Butonun gitmesi gereken yeni X konumu // 1. FARE TIKLANDIĞINDA (Sürükleme Başlar) void OlaySuruklemeBasladi; { Surukleniyor = True; // Görsel tepki: Rengi gri yapalım ki basıldığı anlaşılsın YuvarlakButon.clProSettings.BackgroundColor = clAlphaColor.clSilver; YuvarlakButon.SetclProSettings(YuvarlakButon.clProSettings); } // 2. FARE BIRAKILDIĞINDA (Sürükleme Biter) void OlaySuruklemeBitti; { Surukleniyor = False; // Rengi tekrar beyaza döndür YuvarlakButon.clProSettings.BackgroundColor = clAlphaColor.clWhite; YuvarlakButon.SetclProSettings(YuvarlakButon.clProSettings); } // 3. POZİSYONU GÜNCELLE VE YÜZDE HESAPLA (Ortak Fonksiyon) void PozisyonuUygula; var MaksimumMesafe, Yuzde : Integer; { // Gidilebilecek en son nokta: Panel Genişliği - Buton Genişliği MaksimumMesafe = ArkaPlanPanel.Width - YuvarlakButon.Width; // --- SINIRLAMA (Dışarı taşmayı engelle) --- if (HedefX < 0) HedefX = 0; if (HedefX > MaksimumMesafe) HedefX = MaksimumMesafe; // Butonu yeni yerine taşı YuvarlakButon.Left = HedefX; // Yüzde Hesaplama: (Şu anki Konum / Toplam Yol) * 100 if (MaksimumMesafe > 0) Yuzde = Round((HedefX / MaksimumMesafe) * 100); else Yuzde = 0; YuzdeEtiketi.Text = '%' + IntToStr(Yuzde); } // 4. FARE ARKA PLAN ÜZERİNDEYKEN HAREKET EDERSE void OlayArkaPlanHareket; { if (Surukleniyor) { // Farenin panel üzerindeki konumu direkt alınır. // Butonun tam ortası fareye gelsin diye buton genişliğinin yarısını çıkarıyoruz. HedefX = MainForm.clSenderMousePosX - (YuvarlakButon.Width / 2); PozisyonuUygula; } } // 5. FARE BUTONUN KENDİSİ ÜZERİNDEYKEN HAREKET EDERSE void OlayButonHareket; { if (Surukleniyor) { // Fare zaten butonun üzerinde olduğu için hesaplama biraz farklıdır. // Mevcut Konum + Farenin Buton içindeki konumu - Yarım Genişlik HedefX = YuvarlakButon.Left + MainForm.clSenderMousePosX - (YuvarlakButon.Width / 2); PozisyonuUygula; } } { MainForm = TclForm.Create(Self); Surukleniyor = False; // --- ANA DÜZEN (Layout) --- // Ekranın ortasında duracak, diğer her şeyi içinde tutacak kutu AnaLayout = MainForm.AddNewLayout(MainForm, 'AnaLayout'); AnaLayout.Align = alCenter; AnaLayout.Height = 100; AnaLayout.Width = 350; // --- YÜZDE ETİKETİ (Sağ Taraf) --- YuzdeEtiketi = MainForm.AddNewProLabel(AnaLayout, 'YuzdeEtiketi', '%0'); YuzdeEtiketi.Align = alRight; // Sağa yasla YuzdeEtiketi.Width = 60; YuzdeEtiketi.Margins.Left = 10; YuzdeEtiketi.clProSettings.FontSize = 24; YuzdeEtiketi.clProSettings.FontColor = clAlphaColor.clBlack; YuzdeEtiketi.clProSettings.FontVertAlign = palCenter; // Dikey ortala YuzdeEtiketi.SetclProSettings(YuzdeEtiketi.clProSettings); // --- ARKA PLAN ÇUBUĞU (Mavi Yol) --- ArkaPlanPanel = MainForm.AddNewProPanel(AnaLayout, 'ArkaPlanPanel'); ArkaPlanPanel.Align = alClient; // Kalan boşluğu doldur ArkaPlanPanel.Height = 40; ArkaPlanPanel.Margins.Top = 30; // Dikey ortalamak için boşluk ArkaPlanPanel.Margins.Bottom = 30; // Görünüm Ayarları (Yuvarlak Köşeli Mavi) ArkaPlanPanel.clProSettings.BackgroundColor = clAlphaColor.clCornflowerblue; ArkaPlanPanel.clProSettings.RoundHeight = 20; ArkaPlanPanel.clProSettings.RoundWidth = 20; ArkaPlanPanel.SetclProSettings(ArkaPlanPanel.clProSettings); // --- YUVARLAK BUTON (Sürüklenecek Top) --- // DİKKAT: Butonu 'ArkaPlanPanel' içine ekliyoruz. YuvarlakButon = MainForm.AddNewProPanel(ArkaPlanPanel, 'YuvarlakButon'); // *** EN ÖNEMLİ KISIM *** // 'alNone' demezsek buton sola yapışık kalır, hareket etmez! YuvarlakButon.Align = alNone; YuvarlakButon.Width = 40; YuvarlakButon.Height = 40; YuvarlakButon.Left = 0; // Başlangıç konumu YuvarlakButon.Top = 0; // Görünüm Ayarları (Beyaz Yuvarlak) YuvarlakButon.clProSettings.BackgroundColor = clAlphaColor.clWhite; YuvarlakButon.clProSettings.RoundHeight = 20; YuvarlakButon.clProSettings.RoundWidth = 20; YuvarlakButon.clProSettings.BorderColor = clAlphaColor.clGray; YuvarlakButon.clProSettings.BorderWidth = 1; YuvarlakButon.SetclProSettings(YuvarlakButon.clProSettings); // --- OLAYLARI (EVENTS) TANIMLAMA --- // 1. Arka Plan için Olaylar (Kullanıcı boşluğa tıklayıp sürüklerse) MainForm.AddNewEvent(ArkaPlanPanel, tbeOnMouseDown, 'OlaySuruklemeBasladi'); MainForm.AddNewEvent(ArkaPlanPanel, tbeOnMouseUp, 'OlaySuruklemeBitti'); MainForm.AddNewEvent(ArkaPlanPanel, tbeOnMouseMove, 'OlayArkaPlanHareket'); // 2. Buton için Olaylar (Kullanıcı butonu tutup sürüklerse) MainForm.AddNewEvent(YuvarlakButon, tbeOnMouseDown, 'OlaySuruklemeBasladi'); MainForm.AddNewEvent(YuvarlakButon, tbeOnMouseUp, 'OlaySuruklemeBitti'); MainForm.AddNewEvent(YuvarlakButon, tbeOnMouseMove, 'OlayButonHareket'); MainForm.Run; } https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
|
|
![]() |
|
Nevra Nur
Yeni Üye
Kayıt Tarihi: 09 Şubat 2026 Konum: konya Durum: Aktif Değil Puanlar: 16 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Nevra Nur
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 2 Saat 3 Dakika Önce Saat 18:22 |
|
Teşekkür ederim elinize sağlık.
|
|
![]() |
|
Yanıt Yaz
|
|
| Tweet |
| Forum Atla | Forum İzinleri ![]() Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |