Sayfayı Yazdır | Pencereyi Kapat

ScrollBox buton

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=838
Tarih: 08 Ocak 2025 Saat 03:16
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: ScrollBox buton
Mesajı Yazan: cafer kosker
Konu: ScrollBox buton
Mesaj Tarihi: 07 Ağustos 2024 Saat 21:53
void CategoryButtonClick;
{
  LoadIlanlarFromDatabase(TclProButton(IlanForm.Clsender).Hint);
}
scroolboxtaki butonlar a tıklandığında mesela denize sıfır butonuna tıkladığımda sql veritabanında Kategorisi Denize sıfır olan tüm ilanları getirsin istiyorum (Bunu categoryfilter la yapıyorum fakat CategoryButtonClick VOİD İ hata veriyor) normalde hata vermiyor uygulamaya girdikten sonra butona basınca uygulama donuyordu şimdi o kodu sildim başka bir kod yazdım syntax hatası veriyor uygulamaya hiç girmiyor.
( https://i.imgur.com/PLIb7C7.jpeg" rel="nofollow - https://i.imgur.com/PLIb7C7.jpeg ) Çalışır haldeki görüntüsü.



Cevaplar:
Mesajı Yazan: cafer kosker
Mesaj Tarihi: 07 Ağustos 2024 Saat 21:55
var
  IlanForm: TclForm;
  IlansearchEdit: TclProSearchEdit;
  IlansearchPanel, TopPanel, HorzPanel: TclProPanel;
  CategoryScrollBox: TclHorzScrollBox;
  ButtonPanel: TclProPanel;
  CategoryButton: TclProButton;
  CategoryLabel: TclProLabel;
  counter: Integer;
  ImageURLs: array[0..11] of string;
  CategoryNames: array[0..11] of string;
  IlanListView : TClProListView;
  IlanDesignerPanel : TClProListViewDesignerPanel;
  IlanPicture : TclProImage;
  IlanName,IlanAdres,IlanKonum,IlanPrice,IlanTarih,IlanPuan,IlanLabelGece : TclProLabel;
  IlanQuery: TClSqlQuery;
  ResimPanel : TclProPanel;


void CreateIlanListView;
{
  IlanListView = IlanForm.AddNewProListView(IlanForm, 'IlanListView');
  IlanListView.Height = IlanForm.clHeight - TopPanel.Height - HorzPanel.Height;
  IlanListView.Width = 500;
  IlanListView.Align = alClient;
  IlanListView.clProSettings.BorderColor = clAlphaColor.clHexToColor('#070807');
  IlanListView.ListType = 'Cart';
  IlanListView.clProSettings.ItemSpace = 50;
  IlanListView.clProSettings.ItemHeight = 400;
   IlanListView.clProSettings.ItemWidth = 800;
  IlanListView.clProSettings.BorderWidth = 1;
  IlanListView.SetclProSettings(IlanListView.clProSettings);
  IlansearchEdit.TargetListView = IlanListView;
}

void CreateListDesignerPanel;
{
  IlanDesignerPanel = IlanForm.AddNewProListViewDesignerPanel(IlanListView, 'IlanDesignerPanel');
  IlanDesignerPanel.Align = alClient;
  IlanDesignerPanel.Height = 400;
  IlanDesignerPanel.Width = 700;
  IlanDesignerPanel.Margins.Top = 5;
  IlanDesignerPanel.Margins.Bottom = 5;
  IlanDesignerPanel.Margins.Right = 5;
  IlanDesignerPanel.Margins.Left = 5;
  IlanDesignerPanel.clProSettings.RoundHeight = 10;
  IlanDesignerPanel.clProSettings.RoundWidth = 10;
  IlanListView.SetDesignerPanel(IlanDesignerPanel);
  IlanDesignerPanel.SetclProSettings(IlanDesignerPanel.clProSettings);
}


void ResimEkle;
{
  ResimPanel = IlanForm.AddNewProPanel(IlanDesignerPanel, 'ResimPanel');
  ResimPanel.Align = alClient;
  ResimPanel.Width = IlanDesignerPanel.Width;
  ResimPanel.Height = 100;
  ResimPanel.Margins.Top = 0;
  ResimPanel.Margins.Bottom = 0;
  ResimPanel.Margins.Left = 0;
  ResimPanel.Margins.Right = 0;
  ResimPanel.clProSettings.RoundHeight = 10;
  ResimPanel.clProSettings.RoundWidth = 10;
  ResimPanel.clProSettings.IsTransparent = False;
  
  

  ResimPanel.SetclProSettings(ResimPanel.clProSettings);

  IlanPicture = IlanForm.AddNewProImage(ResimPanel, 'IlanPicture');
  IlanDesignerPanel.AddPanelObject(IlanPicture, clImage1);
  IlanPicture.Align = alClient;
  IlanPicture.clProSettings.IsFill = True;
  IlanPicture.clProSettings.RoundHeight = 10;
  IlanPicture.clProSettings.RoundWidth = 10;
  IlanPicture.clProSettings.IsRound = True;  
  IlanPicture.Height = ResimPanel.Height;
  IlanPicture.Width = ResimPanel.Width;
  
  IlanPicture.clProSettings.PictureAutoFit = True;
  IlanPicture.clProSettings.PictureStretch = True;
  IlanPicture.SetclProSettings(IlanPicture.clProSettings);
}


void TarihEkle;
{
  IlanTarih = IlanForm.AddNewProLabel(IlanDesignerPanel, 'IlanTarih', 'Tarih');
  IlanDesignerPanel.AddPanelObject(IlanTarih, clText3);
  IlanTarih.Align = alBottom;
  IlanTarih.Margins.Bottom =5;
  IlanTarih.Properties.AutoSize = True;
  IlanTarih.clProSettings.FontSize = 14;
  IlanTarih.SetclProSettings(IlanTarih.clProSettings);
}

void KonumEkle;
{
  IlanKonum = IlanForm.AddNewProLabel(IlanDesignerPanel, 'IlanKonum', 'Konum');
  IlanDesignerPanel.AddPanelObject(IlanKonum, clText2);
  IlanKonum.Align = alBottom;
  IlanKonum.Properties.AutoSize = True;
  IlanKonum.clProSettings.FontSize = 14;
  IlanKonum.Margins.Bottom = 5;

  IlanKonum.SetclProSettings(IlanKonum.clProSettings);
}

void AdresEkle;
{
  IlanAdres = IlanForm.AddNewProLabel(IlanDesignerPanel, 'IlanAdres', 'Adres');
  IlanDesignerPanel.AddPanelObject(IlanAdres, clText);
  IlanAdres.Align = alBottom;
  IlanAdres.Margins.Bottom =5;
  IlanAdres.Properties.AutoSize = True;
  IlanAdres.clProSettings.FontSize = 14;
  IlanAdres.SetclProSettings(IlanAdres.clProSettings);
}


void FiyatEkle;
{
  IlanPrice = IlanForm.AddNewProLabel(IlanDesignerPanel, 'IlanPrice', 'Fiyat');
  IlanDesignerPanel.AddPanelObject(IlanPrice, clText4);
  IlanPrice.Align = alMostBottom;
  IlanPrice.Properties.AutoSize = True;
  IlanPrice.Margins.Bottom =5;
  IlanPrice.clProSettings.FontSize = 14;
  IlanPrice.clProSettings.TextSettings.Font.Style = [fsBold];
  IlanPrice.SetclProSettings(IlanPrice.clProSettings);
}

void PuanEkle;
{
  IlanPuan = IlanForm.AddNewProLabel(IlanDesignerPanel, 'IlanPuan', 'Puan');
  IlanDesignerPanel.AddPanelObject(IlanPuan, clText5);
  IlanPuan.Align = alBottom;
  IlanPuan.Margins.Top = 5;
  IlanPuan.Properties.AutoSize = True;
  IlanPuan.clProSettings.FontSize = 14;
  IlanPuan.SetclProSettings(IlanPuan.clProSettings);
}


void LoadIlanlarFromDatabase(CategoryFilter: string);
{
  try
  
    IlanQuery.Connection = Clomosy.DBSQLServerConnection;
    if (CategoryFilter == '') 
    {
      IlanQuery.SQL.Text = 'SELECT ResimURL as IlanPicture, Adres as IlanAdres, Konum as IlanKonum, Tarih as IlanTarih,  CONCAT(Fiyat, '' TL gece'') as IlanPrice, CONCAT(Puan, ''/5'') as IlanPuan  FROM Ilanlar';
    }
    else
    {
      IlanQuery.SQL.Text = 'SELECT ResimURL as IlanPicture, Adres as IlanAdres, Konum as IlanKonum, Tarih as IlanTarih,  CONCAT(Fiyat, '' TL gece'') as IlanPrice, CONCAT(Puan, ''/5'') as IlanPuan  FROM Ilanlar WHERE Kategori = ' + QuotedStr(CategoryFilter);
    }
    IlanQuery.Open;
    if (IlanQuery.Found)
    {
      IlanListView.ClLoadProListViewDataFromDataset(IlanQuery);
    }
    else
    {
      ShowMessage('Kayıt Bulunamadı!');
    } 
  finally
    IlanQuery.Close;
    IlanQuery.Free;
  }
  

void CategoryButtonClick;
{
  LoadIlanlarFromDatabase(TclProButton(IlanForm.Clsender).Hint);
}


{
  IlanForm = TclForm.Create(Self);
  
  IlanQuery = TClSqlQuery.Create(nil);
  Clomosy.DBSQLServerConnect('SQL Server', '192.168.68.106', 'SA', 'reallyStrongPwd123', 'Clomosy', 1433);

  TopPanel = IlanForm.AddNewProPanel(IlanForm, 'TopPanel');
  TopPanel.Align = alTop;
  TopPanel.Height = 150;
  TopPanel.Width = 300;
  TopPanel.Margins.Top = 10;
  TopPanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#070807');
  TopPanel.clProSettings.BorderWidth = 1;
  TopPanel.clProSettings.IsTransparent = True;
  TopPanel.SetclProSettings(TopPanel.clProSettings);

  // Arama Paneli oluşturma
  IlansearchPanel = IlanForm.AddNewProPanel(TopPanel, 'IlansearchPanel');
  IlansearchPanel.Align = alTop;
  IlansearchPanel.Height = 60;
  IlansearchPanel.Width = 300;
  IlansearchPanel.Margins.Left = 20;
  IlansearchPanel.Margins.Right = 20;
  IlansearchPanel.Margins.Top = 10;
  IlansearchPanel.clProSettings.RoundHeight = 30;
  IlansearchPanel.clProSettings.RoundWidth = 30;
  IlansearchPanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#070807');
  IlansearchPanel.clProSettings.BorderWidth = 1;
  IlansearchPanel.clProSettings.IsTransparent = True;
  IlansearchPanel.SetclProSettings(IlansearchPanel.clProSettings);

  // Arama Edit alanı oluşturma
  IlansearchEdit = IlanForm.AddNewProSearchEdit(IlansearchPanel, 'IlansearchEdit', 'Nereye gitmek istiyorsunuz?');
  IlansearchEdit.Align = alClient;
  IlansearchEdit.Margins.Top = 15;
  IlansearchEdit.Margins.Left = 15;
  IlansearchEdit.Margins.Right = 15;
  IlansearchEdit.Margins.Bottom = 10;
  IlansearchEdit.Height = 35;
  IlansearchEdit.SetclProSettings(IlansearchEdit.clProSettings);

  HorzPanel = IlanForm.AddNewProPanel(TopPanel, 'HorzPanel');
  HorzPanel.Align = alTop;
  HorzPanel.Height = 80; // Yüksekliği arttırarak buton ve etiket için alan bırakıyoruz
  HorzPanel.Width = 70;
  HorzPanel.Margins.Top = 10;
  HorzPanel.clProSettings.IsTransparent = True;
  HorzPanel.SetclProSettings(HorzPanel.clProSettings);

  // HorizontalScrollBox oluşturma
  CategoryScrollBox = IlanForm.AddNewHorzScrollBox(HorzPanel, 'CategoryScrollBox');
  CategoryScrollBox.Align = alClient;
  CategoryScrollBox.Height = 100;  // Yüksekliği arttırarak butonun altına label eklemek için alan bırakıyoruz
  CategoryScrollBox.Width = 300;

  // Resim URL'lerinin ve Kategori İsimlerinin tanımlanması
  ImageURLs[0] = ' https://i.imgur.com/rQOm9Uv.png" rel="nofollow - https://i.imgur.com/rQOm9Uv.png ';
  ImageURLs[1] = ' https://i.imgur.com/mOSXbt0.png" rel="nofollow - https://i.imgur.com/mOSXbt0.png ';
  ImageURLs[2] = ' https://i.imgur.com/i1YL3D3.png" rel="nofollow - https://i.imgur.com/i1YL3D3.png ';
  ImageURLs[3] = ' https://i.imgur.com/XGpNyoc.png" rel="nofollow - https://i.imgur.com/XGpNyoc.png ';
  ImageURLs[4] = ' https://i.imgur.com/rrL8Yhn.png" rel="nofollow - https://i.imgur.com/rrL8Yhn.png ';
  ImageURLs[5] = ' https://i.imgur.com/C2wBjUE.png" rel="nofollow - https://i.imgur.com/C2wBjUE.png ';
  ImageURLs[6] = ' https://i.imgur.com/bkxANR8.png" rel="nofollow - https://i.imgur.com/bkxANR8.png ';
  ImageURLs[7] = ' https://i.imgur.com/QZ8vfPg.png" rel="nofollow - https://i.imgur.com/QZ8vfPg.png ';
  ImageURLs[8] = ' https://i.imgur.com/PSbHzMr.png" rel="nofollow - https://i.imgur.com/PSbHzMr.png ';
  ImageURLs[9] = ' https://i.imgur.com/0Otuk1o.png" rel="nofollow - https://i.imgur.com/0Otuk1o.png ';
  ImageURLs[10] = ' https://i.imgur.com/FY0fFLU.png" rel="nofollow - https://i.imgur.com/FY0fFLU.png ';
  ImageURLs[11] = ' https://i.imgur.com/jMvyQaW.png" rel="nofollow - https://i.imgur.com/jMvyQaW.png ';

  CategoryNames[0] = 'Efsaneler';
  CategoryNames[1] = 'Muhteşem havuzlar';
  CategoryNames[2] = 'Denize sıfır';
  CategoryNames[3] = 'Üçgen evler';
  CategoryNames[4] = 'Tasarım';
  CategoryNames[5] = 'Kırsal';
  CategoryNames[6] = 'Güzel manzaralar';
  CategoryNames[7] = 'Küçük evler';
  CategoryNames[8] = 'Tekneler';
  CategoryNames[9] = 'Şatolar';
  CategoryNames[10] = 'Göl yakınında';
  CategoryNames[11] = 'Olağanüstü';

  for counter = 0 to 11 
  {
    // Panel oluşturma
    ButtonPanel = IlanForm.AddNewProPanel(CategoryScrollBox, 'ButtonPanel' + IntToStr(counter));
    ButtonPanel.Align = alLeft;
    ButtonPanel.Margins.Right = 5;
    ButtonPanel.Margins.Top = 2;
    ButtonPanel.Margins.Bottom = 2;
    ButtonPanel.Width = 90;
    ButtonPanel.Height = 180;
    ButtonPanel.clProSettings.IsTransparent = True;
    ButtonPanel.SetclProSettings(ButtonPanel.clProSettings);

    // Buton oluşturma
    CategoryButton = IlanForm.AddNewProButton(ButtonPanel, 'CategoryButton' + IntToStr(counter), '');
    CategoryButton.Align = alTop;
    CategoryButton.Width = 38;
    CategoryButton.Height = 38;
    CategoryButton.clProSettings.PictureSource = ImageURLs[counter];
    CategoryButton.clProSettings.PictureAutoFit = True;
    CategoryButton.clProSettings.PictureStretch = False;
    CategoryButton.clProSettings.IsTransparent = True;
    CategoryButton.Padding.Top = 30;
    CategoryButton.Padding.Right = 30;
    CategoryButton.Padding.Bottom = 30;
    CategoryButton.Padding.Left = 30;
    CategoryButton.Hint = CategoryNames[counter];
    CategoryButton.SetclProSettings(CategoryButton.clProSettings);
    IlanForm.AddNewEvent(CategoryButton, tbeOnClick, 'CategoryButtonClick');


    // Label oluşturma
    CategoryLabel = IlanForm.AddNewProLabel(ButtonPanel, 'CategoryLabel' + IntToStr(counter), CategoryNames[counter]);
    CategoryLabel.Align = alBottom;
    CategoryLabel.Margins.Top = 20;
    CategoryLabel.Margins.Bottom = 10;
    CategoryLabel.Width = 100;
    CategoryLabel.Height = 20;
    CategoryLabel.clProSettings.FontSize = 10;
    CategoryLabel.clProSettings.IsTransparent = True;
    CategoryLabel.clProSettings.FontHorzAlign = palCenter;
    CategoryLabel.Padding.Top = 2;    // Üst padding
    CategoryLabel.Padding.Right = 2;  // Sağ padding
    CategoryLabel.Padding.Bottom = 2; // Alt padding
    CategoryLabel.Padding.Left = 2;   // Sol padding
    CategoryLabel.SetclProSettings(CategoryLabel.clProSettings);
    
    
    
  }

  CreateIlanListView;
  CreateListDesignerPanel;
  
  ResimEkle;
  AdresEkle;
  KonumEkle;
  TarihEkle;
  FiyatEkle;

  PuanEkle;
  LoadIlanlarFromDatabase('');

  // Formu çalıştırma
  IlanForm.Run;

KODUN TAM HALİ


Mesajı Yazan: cafer kosker
Mesaj Tarihi: 08 Ağustos 2024 Saat 10:15
void CategoryButtonClick(Sender : Tobject);
{
 try
   LoadIlanlarFromDatabase(TclProButton(IlanForm.Clsender).Hint);
 except
   ShowMessage('Exception Class : ' + LastExceptionClassName + 'Exception Message : ' + LastExceptionMessage);
 }
}

Syntax hatasını çözdüm fakat uygulamaya girip herhangi bir butona tıkladıktan sonra uygulama donuyor.


Mesajı Yazan: Developer
Mesaj Tarihi: 08 Ağustos 2024 Saat 10:22
Merhaba Cafer,
Aşağıdaki kod ile değiştirir misin:
void CategoryButtonClick;
var
  btn:TclProButton;
{
  btn = TclProButton(IlanForm.Clsender);
  LoadIlanlarFromDatabase(btn.hint);
}


Mesajı Yazan: cafer kosker
Mesaj Tarihi: 08 Ağustos 2024 Saat 11:20
Butona tıklandığında donma sorunu devam ediyor.


Mesajı Yazan: cafer kosker
Mesaj Tarihi: 08 Ağustos 2024 Saat 11:29
void LoadIlanlarFromDatabase(CategoryFilter: string);
{
  try
  
    IlanQuery.Connection = Clomosy.DBSQLServerConnection;
    if (CategoryFilter == '') 
    {
      IlanQuery.SQL.Text = 'SELECT ResimURL as IlanPicture, Adres as IlanAdres, Konum as IlanKonum, Tarih as IlanTarih,  CONCAT(Fiyat, '' TL gece'') as IlanPrice, CONCAT(Puan, ''/5'') as IlanPuan  FROM Ilanlar';
    }
    else
    {
      IlanQuery.SQL.Text = 'SELECT ResimURL as IlanPicture, Adres as IlanAdres, Konum as IlanKonum, Tarih as IlanTarih,  CONCAT(Fiyat, '' TL gece'') as IlanPrice, CONCAT(Puan, ''/5'') as IlanPuan  FROM Ilanlar WHERE Kategori = ' + QuotedStr(CategoryFilter);
    }
    IlanQuery.Open;
    if (IlanQuery.Found)
    {
      IlanListView.ClLoadProListViewDataFromDataset(IlanQuery);
    }
    else
    {
      ShowMessage('Kayıt Bulunamadı!');
    } 
  finally
    IlanQuery.Close;
    //IlanQuery.Free; (Hata free den dolayı runtime error veriyormuş sildikten sonra çözüldü.)
  }
}


void CategoryButtonClick;
{
  CategoryButton = TclProButton(IlanForm.Clsender);
  LoadIlanlarFromDatabase(CategoryButton.Hint);
}
Hata çözüldü çok teşekkürler



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net