Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Clomosy ile değişken kullanımı
  Aktif Konular Aktif Konular RSS - İlerleme Çubuğu Yapılandırması
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

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 Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
Nevra Nur Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 09 Şubat 2026
Konum: konya
Durum: Aktif Değil
Puanlar: 15
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Nevra Nur Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: İlerleme Çubuğu Yapılandırması
    Gönderim Zamanı: 3 Saat 36 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">
Yukarı Dön
Eren Ö. Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 25 Eylül 2025
Durum: Aktif Değil
Puanlar: 27
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (1) Teşekkürler(1)   Alıntı Eren Ö. Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 1 saat 59 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">
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,031 Saniyede Yüklendi.