![]() |
| 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. |
For Döngüsü İçerisinde Değişken Oluşturma |
Yanıt Yaz
|
| Yazar | |
Eren Ö.
Yeni Üye
Kayıt Tarihi: 25 Eylül 2025 Durum: Aktif Değil Puanlar: 19 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Konu: For Döngüsü İçerisinde Değişken OluşturmaGönderim Zamanı: 30 Ekim 2025 Saat 14:28 |
|
Mantık hatasından dolayı düzeltemedim. Yapmaya çalıştığım olay:
Edit2'den gelen sayıyı alıp, O sayı kadar VertScrollBar'a masa eklemek istiyorum. Bu masaları kapsayacak panelin sadece 3 tane masa almasını istiyorum. 3 tane masayı geçince yeni bir panel oluşturup altına getirmesini istiyorum. 2 tane olursa eğer masa sayısı, bir panel daha oluşturup 2'sini sola hızalayıp verilmeyen masanın yerini boş bırakmasını istiyorum. var MainForm: TClForm; TestPnl: TclProPanel; TestBtn: TClProButton; TestEdit, TestEdit2: TclProEdit; vScroll: TCLVertScrollBox; void SetObjectMargins(AObject,AValue){ AObject.Margins.Top = AValue; AObject.Margins.Bottom = AValue; AObject.Margins.Left = AValue; AObject.Margins.Right = AValue; } function IconSelect(IconUI):String var Output: String; { case IconUI of { 'ClosmosyLogo':Output = 'https://resmim.net/cdn/2025/10/22/jV6v6Q.png'; 'AdminManagementBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju0eoT.png'; 'BackArrowBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1STG.png'; 'HomePageBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1fIT.png'; 'ItemsBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1mZL.png'; 'ManagementBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1Tqh.png'; 'OrderChecklistBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1jdK.png'; 'OrdersBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1CGQ.png'; 'QRBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1kI7.png'; 'SaveBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1gBc.png'; 'ShiftBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju18QR.png'; 'ShiftsBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1Bzj.png'; 'SortBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1rXI.png'; 'StocksBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju15f6.png'; 'TablesBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1RK8.png'; 'TablesIconUI':Output = 'https://resmim.net/cdn/2025/10/30/jJABcF.png'; else{ ShowMessage('Tınne'); } } Result = Output; } void TestBtnV var TestLbl: TClProLabel; TestImage: TClProImage; MasaHarfi, MasaAdeti, Topla: String; I, k, TempMod: Integer; { SetObjectMargins(TestEdit,6); MasaHarfi = TestEdit.Text; MasaAdeti = TestEdit2.Text; Topla = MasaHarfi + ' ' + MasaAdeti; for (k = 1 to IntToStr(MasaAdeti)) { TempMod = k Mod 3; ShowMessage('TempMod :' + IntToStr(TempMod) + ' ' + 'K :' + IntToStr(k)); if (TempMod < 3) { ShowMessage('1. if '+IntToStr(TempMod)); TestPnl = MainForm.AddNewProPanel(vScroll,'TestPnl'+IntToStr(k)); TestPnl.Align = alCenter; TestPnl.Height = (MainForm.clHeight*200)/100; TestPnl.Width = (MainForm.clWidth*200)/100; TestPnl.Margins.Top = -60; TestPnl.Margins.Left = -10; TestPnl.Margins.Right = -10; TestPnl.clProSettings.BorderWidth = 3; TestPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a'); TestPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50'); TestPnl.SetclProSettings(TestPnl.clProSettings); ShowMessage('Panel Oluştu'+IntToStr(k)); for (I = 1 to 3) { if (k > StrToInt(MasaAdeti)) Break; { TestLbl = MainForm.AddNewProLabel(TestPnl,'TestBtn'+IntToStr(k), Topla); TestLbl.Align = alCenter; TestLbl.Width = 400; TestLbl.Height = 600; TestLbl.Margins.Bottom = 60; TestLbl.clProSettings.FontSize = 35; TestLbl.clProSettings.FontVertAlign = palcenter; TestLbl.clProSettings.FontHorzAlign = palcenter; TestLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff'); TestLbl.clProSettings.TextSettings.Font.Style = [fsBold]; TestLbl.SetclProSettings(TestLbl.clProSettings); TestImage = MainForm.AddNewProImage(TestPnl,'TestImage'+IntToStr(k)); TestImage.Align = alCenter; TestImage.Height = (TestPnl.Height*40)/100; TestImage.Width = (TestPnl.Width*40)/100; TestImage.Margins.Top = 50; TestImage.clProSettings.PictureSource = IconSelect('TablesIconUI'); TestImage.clProSettings.PictureAutoFit = True; TestImage.SetclProSettings(TestImage.clProSettings); Inc(k); } } } } } void MainPnlV { vScroll = MainForm.AddNewVertScrollBox(MainForm,'vScroll'); vScroll.Align = alCenter; vScroll.Height = (MainForm.clHeight*45)/100; vScroll.Width = (MainForm.clWidth*88)/100; vScroll.Margins.Bottom=270; } { MainForm = tclform.Create(self); MainForm.clSetWindowState(fwsMaximized); TestEdit = MainForm.AddNewProEdit(MainForm, 'TestEdit', ''); TestEdit2 = MainForm.AddNewProEdit(MainForm, 'TestEdit2', ''); TestEdit.Align = alMostTop; TestEdit2.Align = alTop; TestBtn = MainForm.AddNewProButton(MainForm,'TestBtn','Test'); TestBtn.Align = alBottom; TestBtn.Height = 45; TestBtn.Width = 180; TestBtn.Margins.Top=20; TestBtn.Margins.Left=10; TestBtn.Margins.Right=10; TestBtn.clProSettings.BorderWidth = 1; TestBtn.clProSettings.RoundHeight = 4; TestBtn.clProSettings.RoundWidth = 4; TestBtn.clProSettings.FontSize = 27; TestBtn.clProSettings.FontVertAlign = palcenter; TestBtn.clProSettings.FontHorzAlign = palcenter; TestBtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a'); TestBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8e3e3'); TestBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50'); TestBtn.clProSettings.TextSettings.Font.Style = [fsBold]; TestBtn.SetclProSettings(TestBtn.clProSettings); MainForm.AddNewEvent(TestBtn,tbeOnClick,'TestBtnV'); MainPnlV; TestBtnV; MainForm.SetFormColor('#121212','',clGNone); MainForm.FormWaiting.Visible = False; MainForm.BtnFormMenu.Visible = False; MainForm.BtnGoBack.Visible = False; MainForm.run; } |
|
![]() |
|
Emr.Erkmn
Moderatör
Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Değil Puanlar: 362 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 22 Saat 51 Dakika Önce Saat 14:19 |
|
Merhaba Eren,
İki farklı çözüm yolu bırakıyorum aşağıya incelemeni istiyorum. Kullandığım bileşen; TclFlowLayout *****************1. Örnek****************** var MainForm: TClForm; MasaHarfiEdit: TclProEdit; MasaNumaraEdit: TclProEdit; flowLayout: TclFlowLayout; buttonCounter: Integer; numaraLabel, harfLabel : TClProLabel; TemizleBtn :TClProButton; void MasaEkle var masaHarfi: String; masaAdeti: Integer; masaButton: TCLProButton; masaAdi: String; i: Integer; { // Edit'lerden değerleri al masaHarfi = MasaHarfiEdit.Text; // Boş kontrolü if ((masaHarfi == '') || (MasaNumaraEdit.Text == '')) { Exit; } // Masa numarasını sayıya çevir Try masaAdeti = StrToInt(MasaNumaraEdit.Text); except ShowMessage('Lütfen geçerli bir sayı giriniz!'); Exit; } if (masaAdeti <= 0) { ShowMessage('Masa adedi 1 veya daha büyük olmalı!'); Exit; } // FlowLayout kontrolü if (flowLayout == nil) { ShowMessage('FlowLayout bulunamadı!'); Exit; } // Girilen sayı kadar masa butonu oluştur for (i = 1 to masaAdeti) { Try // Masa adını oluştur (harf + numara: A1, A2, A3...) masaAdi = masaHarfi + IntToStr(i); buttonCounter = buttonCounter + 1; masaButton = MainForm.AddNewProButton(flowLayout, 'MasaButton_' + IntToStr(buttonCounter), masaAdi); masaButton.Width = 150; masaButton.Height = 100; masaButton.clProSettings.FontSize = 16; masaButton.clProSettings.FontVertAlign = palcenter; masaButton.clProSettings.FontHorzAlign = palcenter; masaButton.clProSettings.RoundHeight = 8; masaButton.clProSettings.RoundWidth = 8; masaButton.clProSettings.PictureSource = 'https://resmim.net/cdn/2025/10/30/jJABcF.png' masaButton.SetclProSettings(masaButton.clProSettings) except ShowMessage('Buton oluşturulurken hata: ' + LastExceptionMessage + ' (Masa: ' + masaAdi + ')'); } } // Edit'leri temizle - yeni masa grubu için hazır MasaHarfiEdit.Text = ''; MasaNumaraEdit.Text = ''; } void MasaEkleHarfi { // Masa harfi girildiğinde tetikle // Sadece numara da girilmişse buton ekle if ((MasaHarfiEdit.Text <> '') && (MasaNumaraEdit.Text <> '')) { MasaEkle; } } void MasaEkleNumara { // Masa numarası girildiğinde tetikle // Sadece harf de girilmişse buton ekle if ((MasaHarfiEdit.Text <> '') && (MasaNumaraEdit.Text <> '')) { MasaEkle; } } void ButonlariTemizle var i: Integer; existingButton: TCLButton; { // Tüm buton'ları temizle for (i = 1 to buttonCounter) { existingButton = MainForm.FindComponent('MasaButton_' + IntToStr(i)) as TCLProButton; if (existingButton <> nil) { Try existingButton = nil; except } } } buttonCounter = 0; } { MainForm = TClForm.Create(self); MainForm.clSetWindowState(fwsMaximized); MainForm.SetFormColor('#F5F5F5', '', clGNone); MainForm.FormWaiting.Visible = False; MainForm.BtnFormMenu.Visible = False; MainForm.BtnGoBack.Visible = False; buttonCounter = 0; // Masa Harfi Edit oluştur harfLabel = MainForm.AddNewProLabel(MainForm, 'HarfLabel', 'Masa Harfi:'); harfLabel.Align = alTop; harfLabel.Height = 30; harfLabel.Margins.Top = 20; harfLabel.Margins.Left = 20; harfLabel.clProSettings.FontSize = 16; harfLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#333333'); harfLabel.SetclProSettings(harfLabel.clProSettings); MasaHarfiEdit = MainForm.AddNewProEdit(MainForm, 'MasaHarfiEdit', ''); MasaHarfiEdit.Align = alTop; MasaHarfiEdit.Height = 50; MasaHarfiEdit.Margins.Top = 5; MasaHarfiEdit.Margins.Left = 20; MasaHarfiEdit.Margins.Right = 20; MasaHarfiEdit.clProSettings.FontSize = 18; MasaHarfiEdit.clProSettings.BorderColor = clAlphaColor.clHexToColor('#CCCCCC'); MasaHarfiEdit.clProSettings.RoundHeight = 8; MasaHarfiEdit.clProSettings.RoundWidth = 8; MasaHarfiEdit.SetclProSettings(MasaHarfiEdit.clProSettings); MainForm.AddNewEvent(MasaHarfiEdit, tbeOnChange, 'MasaEkleHarfi'); // Masa Numarası Edit oluştur numaraLabel = MainForm.AddNewProLabel(MainForm, 'NumaraLabel', 'Masa Numarası:'); numaraLabel.Align = alTop; numaraLabel.Height = 30; numaraLabel.Margins.Top = 10; numaraLabel.Margins.Left = 20; numaraLabel.clProSettings.FontSize = 16; numaraLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#333333'); numaraLabel.SetclProSettings(numaraLabel.clProSettings); MasaNumaraEdit = MainForm.AddNewProEdit(MainForm, 'MasaNumaraEdit', ''); MasaNumaraEdit.Align = alTop; MasaNumaraEdit.Height = 50; MasaNumaraEdit.Margins.Top = 5; MasaNumaraEdit.Margins.Left = 20; MasaNumaraEdit.Margins.Right = 20; MasaNumaraEdit.clProSettings.FontSize = 18; MasaNumaraEdit.clProSettings.BorderColor = clAlphaColor.clHexToColor('#CCCCCC'); MasaNumaraEdit.clProSettings.RoundHeight = 8; MasaNumaraEdit.clProSettings.RoundWidth = 8; MasaNumaraEdit.SetclProSettings(MasaNumaraEdit.clProSettings); MainForm.AddNewEvent(MasaNumaraEdit, tbeOnChange, 'MasaEkleNumara'); // Temizle butonu TemizleBtn = MainForm.AddNewProButton(MainForm, 'TemizleBtn', 'Tümünü Temizle'); TemizleBtn.Align = alTop; TemizleBtn.Height = 50; TemizleBtn.Margins.Top = 10; TemizleBtn.Margins.Left = 20; TemizleBtn.Margins.Right = 20; TemizleBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#E74C3C'); TemizleBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF'); TemizleBtn.clProSettings.FontSize = 16; TemizleBtn.clProSettings.FontVertAlign = palcenter; TemizleBtn.clProSettings.FontHorzAlign = palcenter; TemizleBtn.clProSettings.RoundHeight = 8; TemizleBtn.clProSettings.RoundWidth = 8; TemizleBtn.SetclProSettings(TemizleBtn.clProSettings); MainForm.AddNewEvent(TemizleBtn, tbeOnClick, 'ButonlariTemizle'); // FlowLayout oluştur - Form üzerine direkt flowLayout = MainForm.AddNewFlowLayout(MainForm, 'flowLayout'); flowLayout.Align = alClient; flowLayout.JustifyText = 'Justify'; flowLayout.JustifyLastLineText = 'Center'; flowLayout.FlowDirectionText = 'LeftToRight'; flowLayout.HorizontalGap = 15; flowLayout.VerticalGap = 15; flowLayout.Margins.Left = 20; flowLayout.Margins.Right = 20; flowLayout.Margins.Top = 10; flowLayout.Margins.Bottom = 20; MainForm.Run; } ********************2. örnek ************************
var MainForm: TClForm; TestBtn: TClProButton; TestEdit, TestEdit2: TclProEdit; vScroll: TCLVertScrollBox; TableLayout: TclFlowLayout; function IconSelect(IconUI):String var Output: String; { Output = ''; case IconUI of { 'ClosmosyLogo':Output = 'https://resmim.net/cdn/2025/10/22/jV6v6Q.png'; 'AdminManagementBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju0eoT.png'; 'BackArrowBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1STG.png'; 'HomePageBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1fIT.png'; 'ItemsBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1mZL.png'; 'ManagementBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1Tqh.png'; 'OrderChecklistBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1jdK.png'; 'OrdersBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1CGQ.png'; 'QRBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1kI7.png'; 'SaveBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1gBc.png'; 'ShiftBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju18QR.png'; 'ShiftsBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1Bzj.png'; 'SortBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1rXI.png'; 'StocksBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju15f6.png'; 'TablesBtnUI':Output = 'https://resmim.net/cdn/2025/10/24/ju1RK8.png'; 'TablesIconUI':Output = 'https://resmim.net/cdn/2025/10/30/jJABcF.png'; else{ ShowMessage('HATA: IconSelect fonksiyonunda bulunamayan ikon: ' + IconUI); } } Result = Output; } function CreateTableCell(AParent; ACaption: String; AName: String): TclProPanel var Cell: TclProPanel; Img: TClProImage; Lbl: TClProLabel; { Cell = MainForm.AddNewProPanel(AParent, AName); Cell.Width = 400; Cell.Height = (MainForm.clHeight*200)/100; Cell.Margins.Left = 10; Cell.Margins.Right = 10; Cell.Margins.Top = 5; Cell.Margins.Bottom = 5; Cell.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50'); Cell.clProSettings.BorderWidth = 3; Cell.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a'); Cell.clProSettings.RoundHeight = 10; Cell.clProSettings.RoundWidth = 10; Cell.SetclProSettings(Cell.clProSettings); Img = MainForm.AddNewProImage(Cell, 'Img_' + AName); Img.Align = alTop; Img.Height = (Cell.Height * 40) / 100; Img.Margins.Top = 10; Img.clProSettings.PictureSource = IconSelect('TablesIconUI'); Img.clProSettings.PictureAutoFit = True; Img.SetclProSettings(Img.clProSettings); Lbl = MainForm.AddNewProLabel(Cell, 'Lbl_' + AName, ACaption); Lbl.Align = alClient; Lbl.Margins.Top = 6; Lbl.Margins.Bottom = 12; Lbl.Margins.Left = 12; Lbl.Margins.Right = 12; Lbl.clProSettings.FontSize = 35; Lbl.clProSettings.FontVertAlign = palcenter; Lbl.clProSettings.FontHorzAlign = palcenter; Lbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF'); Lbl.clProSettings.TextSettings.Font.Style = [fsBold]; Lbl.SetclProSettings(Lbl.clProSettings); Result = Cell; } void MainPnlV { vScroll = MainForm.AddNewVertScrollBox(MainForm,'vScroll'); vScroll.Align = alCenter; vScroll.Height = (MainForm.clHeight*45)/100; vScroll.Width = (MainForm.clWidth*98)/100; vScroll.Margins.Bottom = 270; TableLayout = MainForm.AddNewFlowLayout(vScroll, 'TableLayout'); TableLayout.Align = alTop; TableLayout.JustifyText = 'Justify'; TableLayout.HorizontalGap = 7; TableLayout.VerticalGap = 5; } void TestBtnV var MasaHarfi, Topla, CellName: String; MasaAdeti_Int, k, i: Integer; { // === GÜVENLİK KONTROLÜ === if ((not Assigned(MainForm)) || (not Assigned(TableLayout)) || (not Assigned(TestEdit)) || (not Assigned(TestEdit2))) { Exit; } for (i = TableLayout.ComponentCount - 1 downto 0) { TableLayout.Components.Free; } MasaHarfi = TestEdit.Text; try MasaAdeti_Int = StrToInt(TestEdit2.Text); except ShowMessage('Lütfen geçerli bir masa adeti (sayı) girin.'); TestEdit2.SetFocus; Exit; } if (MasaHarfi == '') { ShowMessage('Lütfen Masa Harfini girin.'); TestEdit.SetFocus; Exit; } if (MasaAdeti_Int <= 0) Exit; // 0 veya negatif sayıysa çık // DÖNGÜ İLE YENİ MASALARI OLUŞTUR for (k = 1 to MasaAdeti_Int) { // A 1, A 2 şeklinde metin oluştur Topla = MasaHarfi + ' ' + IntToStr(k); // ("Masa_A_1") CellName = 'Masa_' + clGetStringReplace(Topla, ' ', '_'); // Masayı direkt olarak TableLayout'a ekle. CreateTableCell(TableLayout, Topla, CellName); } TestEdit2.Text = ''; TestEdit.SetFocus; } { MainForm = tclform.Create(self); MainForm.clSetWindowState(fwsMaximized); TestEdit = MainForm.AddNewProEdit(MainForm, 'TestEdit', 'Masa Harfi'); TestEdit2 = MainForm.AddNewProEdit(MainForm, 'TestEdit2', 'Masa Numarası'); TestEdit.Align = alMostTop; TestEdit2.Align = alTop; TestBtn = MainForm.AddNewProButton(MainForm,'TestBtn','Test'); TestBtn.Align = alBottom; TestBtn.Height = 45; TestBtn.Width = 180; TestBtn.Margins.Top = 20; TestBtn.Margins.Left = 10; TestBtn.Margins.Right = 10; TestBtn.clProSettings.BorderWidth = 1; TestBtn.clProSettings.RoundHeight = 4; TestBtn.clProSettings.RoundWidth = 4; TestBtn.clProSettings.FontSize = 27; TestBtn.clProSettings.FontVertAlign = palcenter; TestBtn.clProSettings.FontHorzAlign = palcenter; TestBtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a'); TestBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8e3e3'); TestBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50'); TestBtn.clProSettings.TextSettings.Font.Style = [fsBold]; TestBtn.SetclProSettings(TestBtn.clProSettings); MainPnlV; MainForm.AddNewEvent(TestBtn, tbeOnClick, 'TestBtnV'); MainForm.SetFormColor('#121212','',clGNone); MainForm.FormWaiting.Visible = False; MainForm.BtnFormMenu.Visible = False; MainForm.BtnGoBack.Visible = False; MainForm.run; } |
|
![]() |
|
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 |