kodumda 1.buton ve labellar olması gereken yere gelmiyor bide yeni buton eklediğimde öncekinin üstüne bindi nasıl düzeltebilirim ?
kod:var mainform: TCLForm; AtistirmaliklarPage: TclProPanel; Button: TClProButton; ProductID: Integer; ProductName: string; ProductPrice: Double; ProductImageURL: string; ProductQuery: TclSqlQuery; pricelabel, namelabel: TClProLabel; TopOffset, i, previousButtonTop, previousButtonLeft: Integer;
procedure SetupDatabaseConnection; begin try Clomosy.DBSQLServerConnect('SQL Server', 'su-db.database.windows.net','dbAdmin','Azure1234','suDb', 1433); ShowMessage('Veritabanı bağlantısı başarıyla kuruldu!'); except ShowMessage('Veritabanı bağlantısı kurulamadı: '); end; end;
procedure LoadProductsToPage; begin ProductQuery := TclSqlQuery.Create(nil); try ProductQuery.Connection := Clomosy.DBSQLServerConnection; ProductQuery.SQL.Text := 'SELECT ProductID, ProductName, ProductPrice, ProductImageURL FROM Products'; try ProductQuery.Open; except ShowMessage('Ürün sorgusu açılamadı: '); end;
previousButtonLeft := 10; // İlk butonun sol kenardan uzaklığı previousButtonTop := 10; // İlk butonun üst kenardan uzaklığı i := 0;
while not ProductQuery.Eof do begin try ProductID := ProductQuery.FieldByName('ProductID').AsInteger; ProductName := ProductQuery.FieldByName('ProductName').AsString; ProductPrice := ProductQuery.FieldByName('ProductPrice').AsFloat; ProductImageURL := ProductQuery.FieldByName('ProductImageURL').AsString;
// Yeni buton oluşturma Button := mainform.AddNewProButton(AtistirmaliklarPage, 'Button' + IntToStr(i), ''); Inc(i); // i'yi 1 artır
// Buton boyut ve pozisyon Button.Width := 150; Button.Height := 150; // Butonun yerleşimi (yatay ve dikey) if (ProductID mod 2 = 1) then begin // Tek butonlar, sol tarafa hizalanacak Button.Margins.Bottom := previousButtonTop; // Önceki butonun altına yerleştirmek için Button.Margins.Right := 0; // Sol tarafa hizalanacak Button.Margins.Left := 10;
// Sonraki butonun üst mesafesini güncelle previousButtonTop := Button.Top + Button.Height + 40; end else begin // Çift butonlar, teklerin yanında yer alacak Button.Margins.Bottom := previousButtonTop; // Önceki butonla aynı hizaya yerleştirmek için Button.Margins.Right := 300; // Teklerin yanında olacak Button.Margins.Left := previousButtonLeft;
// Sonraki butonun sol mesafesini güncelle previousButtonLeft := Button.Left + Button.Width + 20; end;
// Ürün resmini butona ekleme if Assigned(mainform) then mainform.SetImage(Button, ProductImageURL);
// Ürün adını göstermek için etiket oluşturma namelabel := mainform.AddNewProLabel(AtistirmaliklarPage, 'namelabel' + IntToStr(i), ''); namelabel.Top := Button.Top + Button.Height + 5; // Butonun hemen altında namelabel.Left := Button.Left; // Butonla hizalı namelabel.Text := ProductName;
// Ürün fiyatını göstermek için etiket oluşturma pricelabel := mainform.AddNewProLabel(AtistirmaliklarPage, 'pricelabel' + IntToStr(i), ''); pricelabel.Top := namelabel.Top + namelabel.Height + 5; // Ürün adının altında pricelabel.Left := Button.Left; // Butonla hizalı pricelabel.Text := Format('Fiyat: %.2f TL', [ProductPrice]);
ProductQuery.Next; except ShowMessage('Ürün bilgileri işlenirken hata: '); end; end; finally ProductQuery.Close; ProductQuery.Free; end; end;
procedure AddProductPage; begin try AtistirmaliklarPage := mainform.AddNewProPanel(mainform, 'AtistirmaliklarPage'); if Assigned(AtistirmaliklarPage) then begin AtistirmaliklarPage.Align := alNone; // Manuel hizalama AtistirmaliklarPage.Width := 600; // Panel genişliği AtistirmaliklarPage.Height := 800; // Panel yüksekliği AtistirmaliklarPage.Left := 50; // Panelin sol kenardan uzaklığı AtistirmaliklarPage.Top := 50; // Panelin üst kenardan uzaklığı AtistirmaliklarPage.Margins.Left := 10; AtistirmaliklarPage.Margins.Right := 10; AtistirmaliklarPage.Margins.Top := 5; AtistirmaliklarPage.Margins.Bottom := 10; AtistirmaliklarPage.clProSettings.BackgroundColor := clAlphaColor.clHexToColor('#ffffff'); AtistirmaliklarPage.SetclProSettings(AtistirmaliklarPage.clProSettings);
// Ürünleri sayfaya yükle try LoadProductsToPage; except ShowMessage('Ürünleri sayfaya yüklerken hata: '); end; end else ShowMessage('Atıştırmalıklar sayfası oluşturulamadı'); except ShowMessage('Panel oluşturulurken hata: '); end; end;
begin mainform := TCLForm.Create(nil); try mainform.SetFormColor('#CBEDD5', '', clGNone); SetupDatabaseConnection; try AddProductPage; except ShowMessage('Ana form çalıştırılırken hata: '); end; mainform.Run; except ShowMessage('Ana form çalıştırılırken hata: '); end; end.
|