aşağıda attığım kodda ayların hangi gününün ilk gün olduğunu buluyor ve bu şekilde başlatıyor ama hepsini tek bir şekilde alRight yaparak eklediğimiz için ters oluyor ve gün sayısı da bu yüzden bozulabiliyor. Bunu çözmek için bence en başta takvimleri oluştururken bir kontrol eklemek iyi olabilir. Umarım yardımcı olur. İyi çalışmalar.
var
MyForm: TclForm;
MainPnl, habit1pnl, ustPanel,baslik1pnl,secimPanel,mypanel: TclProPanel;
butonlar: array[0..31] of TClProButton;
i, j: Integer;
baslik1btn:TClProButton;
gunSayisi, ilkGun, haftalikIndex: Integer;
hedefSatir: TclProPanel;
gunler: array[0..6] of String;
gunEtiketleri: array[0..6] of TclProLabel;
vScroll: TClVertScrollBox;
aylar: array[0..11] of String;
ayLabel: TClProLabel;
satir1Label, satir1, satir2, satir3, satir4, satir5: TclProPanel;
yilbaslik:tclprolabel;
elimage:tclproimage;
secimaliskanlikbtn1,secimaliskanlikbtn2,secimaliskanlikbtn3,secimaliskanlikbtn4:TClProButton;
Imagecircle,Imagecircle2,Imagecircle3,Imagecircle4:tclproimage;
secimkapatbtn:TClProButton;
mybuton1,mybuton2,mybuton3,mybuton4:TClProButton;
void mybuton3click
{
Clomosy.RunUnit('mybuton3');
}
void mybuton4click
{
Clomosy.RunUnit('mybuton4');
}
void aliskanlikclick
{
secimpanel.Visible = not secimpanel.Visible;
}
function GunSayisi(ay: Integer; yil: Integer): Integer
{
if ((ay == 1) || (ay == 3) || (ay == 5) || (ay == 7) || (ay == 8) || (ay == 10) || (ay == 12))
Result = 31
if ((ay == 4) || (ay == 6) || (ay == 9) || (ay == 11))
Result = 30
if ((yil mod 4 == 0) && ((yil mod 100 <> 0) || (yil mod 400 == 0)))
Result = 29
else
Result = 28
}
function AyIlkGunuHaftaninKaci(ay: Integer; yil: Integer): Integer
var
d, m, y, k, j, h,gun: Integer
{
d = 1
if ay < 3
{
ay = ay + 12
yil = yil - 1
}
m = ay
y = yil mod 100
j = yil div 100
h = (d + (13*(m + 1)) div 5 + y + (y div 4) + (j div 4) + 5*j) mod 7
gun = ((h + 5) mod 7) + 1
Result = gun
}
void TakvimCiz(ay,yil: Integer)
var
gunSayisi, ilkGun, i, haftalikIndex: Integer;
hedefSatir: TclProPanel;
gunEtiketi: TclProLabel;
{
gunSayisi = GunSayisi(ay, yil)
ilkGun = AyIlkGunuHaftaninKaci(ay, yil)
for i = 0 to gunSayisi - 1
{
haftalikIndex = i + ilkGun - 1
if (haftalikIndex < 7)
hedefSatir = satir1
else if (haftalikIndex < 14)
hedefSatir = satir2
else if (haftalikIndex < 21)
hedefSatir = satir3
else if (haftalikIndex < 28)
hedefSatir = satir4
else
hedefSatir = satir5
gunEtiketi = MyForm.AddNewProLabel(
hedefSatir,
'lblGun_' + IntToStr(ay) + '_' + IntToStr(i + 1),
IntToStr(i + 1)
)
gunEtiketi.Align = alRight
gunEtiketi.Margins.Right = 18
gunEtiketi.Margins.Left = 3
gunEtiketi.Width = 30
gunEtiketi.clProSettings.FontSize = 14
gunEtiketi.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000')
gunEtiketi.clProSettings.FontVertAlign = palLeading
gunEtiketi.clProSettings.FontHorzAlign = palcenter
gunEtiketi.SetclProSettings(gunEtiketi.clProSettings)
}
}
{
MyForm = TclForm.Create(Self);
MainPnl = myForm.AddNewProPanel(myForm, 'MainPnl');
MainPnl.Align = alClient;
MainPnl.Align=alCenter;
MainPnl.Height=630;
MainPnl.Width=400;
MainPnl.clProSettings.RoundHeight=40;
MainPnl.clProSettings.Roundwidth=40;
MainPnl.clProSettings.IsTransparent =False;
MainPnl.SetclProSettings(MainPnl.clProSettings);
habit1pnl = MyForm.AddNewProPanel(MainPnl, 'habit1pnl');
habit1pnl.Align = alClient;
habit1pnl.SetclProSettings(habit1pnl.clProSettings);
baslik1pnl = MyForm.AddNewProPanel(habit1pnl, 'baslik1pnl');
baslik1pnl.Align = alTop;
baslik1pnl.Margins.left=11;
baslik1pnl.Height = 100;
baslik1pnl.width = 200;
baslik1pnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#cccccc');
baslik1pnl.clProSettings.BorderWidth = 1;
baslik1pnl.SetclProSettings(baslik1pnl.clProSettings);
yilbaslik = myform.AddNewProLabel(baslik1pnl,'yilbaslik','YILLIK ALIŞKANLIK TAKİBİ');
yilbaslik.Align = altop;
yilbaslik.margins.left=60;
yilbaslik.Width = 300;
yilbaslik.Height = 30;
yilbaslik.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
yilbaslik.clProSettings.FontSize = 20;
yilbaslik.clProSettings.FontVertAlign = palcenter;
yilbaslik.clProSettings.FontHorzAlign = palLeading;
yilbaslik.clProSettings.TextSettings.Font.Style = [fsBold];
yilbaslik.clProSettings.IsFill = True;
yilbaslik.clProSettings.IsRound = True;
yilbaslik.SetclProSettings(yilbaslik.clProSettings);
baslik1btn = MyForm.AddNewProButton(baslik1pnl, 'baslik1btn', 'Alışkanlıklar');
baslik1btn.Align = alcenter;
baslik1btn.Width = 100;
baslik1btn.Height = 50;
baslik1btn.Margins.Right = 240;
baslik1btn.clProSettings.IsRound = True;
baslik1btn.clProSettings.FontSize = 14;
baslik1btn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ea9eff');
baslik1btn.clProSettings.BorderWidth = 2;
baslik1btn.SetclProSettings(baslik1btn.clProSettings);
MyForm.AddNewEvent(baslik1btn, tbeOnClick, 'aliskanlikclick');
////////////////////////////////////////////////////////////////////////////////
secimPanel=MyForm.AddNewProPanel(MainPnl,'secimPanel');
secimPanel.Align = AlCenter;
secimpanel.margins.right=170;
secimpanel.margins.bottom=200;
secimPanel.Width = 200;
secimPanel.Height =250;
secimPanel.clProSettings.IsRound = True;
secimPanel.visible=false;
secimPanel.SetclProSettings(secimPanel.clProSettings);
secimaliskanlikbtn1 = MyForm.AddNewProButton(secimPanel, 'secimaliskanlikbtn1', 'Alışkanlık1');
secimaliskanlikbtn1.Align = altop;
secimaliskanlikbtn1.margins.top=40;
secimaliskanlikbtn1.Width = 100;
secimaliskanlikbtn1.Height = 50;
secimaliskanlikbtn1.clProSettings.IsRound = True;
secimaliskanlikbtn1.clProSettings.FontSize = 14;
secimaliskanlikbtn1.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ea9eff');
secimaliskanlikbtn1.clProSettings.BorderWidth = 2;
secimaliskanlikbtn1.SetclProSettings(secimaliskanlikbtn1.clProSettings);
secimaliskanlikbtn2 = MyForm.AddNewProButton(secimPanel, 'secimaliskanlikbtn2', 'Alışkanlık2');
secimaliskanlikbtn2.Align = altop;
secimaliskanlikbtn2.margins.top=5;
secimaliskanlikbtn2.Width = 100;
secimaliskanlikbtn2.Height = 50;
secimaliskanlikbtn2.clProSettings.IsRound = True;
secimaliskanlikbtn2.clProSettings.FontSize = 14;
secimaliskanlikbtn2.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ea9eff');
secimaliskanlikbtn2.clProSettings.BorderWidth = 2;
secimaliskanlikbtn2.SetclProSettings(secimaliskanlikbtn2.clProSettings);
secimaliskanlikbtn3 = MyForm.AddNewProButton(secimPanel, 'secimaliskanlikbtn3', 'Alışkanlık3');
secimaliskanlikbtn3.Align = altop;
secimaliskanlikbtn3.margins.top=5;
secimaliskanlikbtn3.Width = 100;
secimaliskanlikbtn3.Height = 50;
secimaliskanlikbtn3.clProSettings.IsRound = True;
secimaliskanlikbtn3.clProSettings.FontSize = 14;
secimaliskanlikbtn3.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ea9eff');
secimaliskanlikbtn3.clProSettings.BorderWidth = 2;
secimaliskanlikbtn3.SetclProSettings(secimaliskanlikbtn3.clProSettings);
secimaliskanlikbtn4 = MyForm.AddNewProButton(secimPanel, 'secimaliskanlikbtn4', 'Alışkanlık4');
secimaliskanlikbtn4.Align = altop;
secimaliskanlikbtn4.margins.top=5;
secimaliskanlikbtn4.Width = 100;
secimaliskanlikbtn4.Height = 50;
secimaliskanlikbtn4.clProSettings.IsRound = True;
secimaliskanlikbtn4.clProSettings.FontSize = 14;
secimaliskanlikbtn4.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ea9eff');
secimaliskanlikbtn4.clProSettings.BorderWidth = 2;
secimaliskanlikbtn4.SetclProSettings(secimaliskanlikbtn4.clProSettings);
Imagecircle = myForm.AddNewProImage(secimaliskanlikbtn1, 'Imagecircle');
Imagecircle.Align = alcenter;
Imagecircle.margins.right=100;
Imagecircle.margins.top=5;
Imagecircle.Width = 25;
Imagecircle.Height = 24;
myForm.SetImage(Imagecircle, ' https://i.imgur.com/c7vyHfU.png" rel="nofollow - https://i.imgur.com/c7vyHfU.png ');
Imagecircle2 = myForm.AddNewProImage(secimaliskanlikbtn2, 'Imagecircle2');
Imagecircle2.Align = alcenter;
Imagecircle2.margins.right=100;
Imagecircle2.margins.top=5;
Imagecircle2.Width = 25;
Imagecircle2.Height = 24;
myForm.SetImage(Imagecircle2, ' https://i.imgur.com/c7vyHfU.png" rel="nofollow - https://i.imgur.com/c7vyHfU.png ');
Imagecircle3= myForm.AddNewProImage(secimaliskanlikbtn3, 'Imagecircle3');
Imagecircle3.Align = alcenter;
Imagecircle3.margins.right=100;
Imagecircle3.margins.top=5;
Imagecircle3.Width = 25;
Imagecircle3.Height = 24;
myForm.SetImage(Imagecircle3, ' https://i.imgur.com/c7vyHfU.png" rel="nofollow - https://i.imgur.com/c7vyHfU.png ');
Imagecircle4 = myForm.AddNewProImage(secimaliskanlikbtn4, 'Imagecircle4');
Imagecircle4.Align = alcenter;
Imagecircle4.margins.right=100;
Imagecircle4.margins.top=5;
Imagecircle4.Width = 25;
Imagecircle4.Height = 24;
myForm.SetImage(Imagecircle4, ' https://i.imgur.com/c7vyHfU.png" rel="nofollow - https://i.imgur.com/c7vyHfU.png ');
///////////////////////////////////////////////////////////////////////////////7
elImage = myForm.AddNewProImage(baslik1pnl, 'elImage');
elImage.Align = alcenter;
elimage.margins.right=140;
elImage.margins.top=25;
elImage.Width = 22;
elImage.Height = 24;
myForm.SetImage(elImage, ' https://i.imgur.com/4bxFXAo.png" rel="nofollow - https://i.imgur.com/4bxFXAo.png ');
//////////////////////////////////////////////////////////////////////////////////////7
vScroll = MyForm.AddNewVertScrollBox(habit1pnl, 'vScroll');
vScroll.Align = alClient;
aylar = ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'];
for (j = 0 to 11) {
ustPanel = MyForm.AddNewProPanel(vScroll, 'ustPanel' + IntToStr(j));
ustPanel.Align = alTop;
ustPanel.Height = 400;
ustPanel.width = 400;
ustPanel.Margins.Top = 10;
ustPanel.clProSettings.RoundHeight = 10;
ustPanel.clProSettings.RoundWidth = 10;
ustPanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#cccccc');
ustPanel.clProSettings.BorderWidth = 2;
ustPanel.SetclProSettings(ustPanel.clProSettings);
ayLabel = MyForm.AddNewProLabel(ustPanel, 'ayLabel' + IntToStr(j), aylar[j] + ', 2026');
ayLabel.Align = alTop;
aylabel.Margins.left=20;
ayLabel.Height = 50;
ayLabel.clProSettings.FontSize = 18;
ayLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
ayLabel.clProSettings.TextSettings.Font.Style = [fsBold];
ayLabel.SetclProSettings(ayLabel.clProSettings);
satir1Label = MyForm.AddNewProPanel(ustPanel, 'satir1Label' + IntToStr(j));
satir1Label.Align = alTop;
satir1Label.Height = 24;
gunler = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
for (i = 6 downto 0) {
gunEtiketleri = MyForm.AddNewProLabel(satir1Label, 'lblGun' + IntToStr(j) + '_' + IntToStr(i), gunler);
gunEtiketleri.Align = alRight;
gunEtiketleri.Margins.Right = 18;
gunEtiketleri.Margins.Left = 3;
gunEtiketleri.Width = 30;
gunEtiketleri.clProSettings.FontSize = 14;
gunEtiketleri.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
gunEtiketleri.clProSettings.FontVertAlign = palLeading;
gunEtiketleri.clProSettings.FontHorzAlign = palcenter;
gunEtiketleri.SetclProSettings(gunEtiketleri.clProSettings);
}
satir1 = MyForm.AddNewProPanel(ustPanel, 'satir1' + IntToStr(j)); satir1.Align = alTop;satir1.margins.right=12;satir1.Height = 40;
satir2 = MyForm.AddNewProPanel(ustPanel, 'satir2' + IntToStr(j)); satir2.Align = alTop;satir2.margins.right=12;satir2.Height = 40;
satir3 = MyForm.AddNewProPanel(ustPanel, 'satir3' + IntToStr(j)); satir3.Align = alTop;satir3.margins.right=12;satir3.Height = 40;
satir4 = MyForm.AddNewProPanel(ustPanel, 'satir4' + IntToStr(j)); satir4.Align = alTop;satir4.margins.right=12;satir4.Height = 40;
satir5 = MyForm.AddNewProPanel(ustPanel, 'satir5' + IntToStr(j)); satir5.Align = alTop;;satir5.margins.right=217; satir5.Height = 40;
///////////SOR SOR SOR SOR////////////////////////////////////////77
// Ayın gerçek gün sayısı ve ilk günü al
gunSayisi = GunSayisi(j + 1, 2026);
ilkGun = AyIlkGunuHaftaninKaci(j + 1, 2026);
// Gün butonlarını oluştur
for (i = 0 to gunSayisi - 1) {
haftalikIndex = i + ilkGun - 1;
if (haftalikIndex < 7) {
hedefSatir = satir1;
} else if (haftalikIndex < 14) {
hedefSatir = satir2;
} else if (haftalikIndex < 21) {
hedefSatir = satir3;
} else if (haftalikIndex < 28) {
hedefSatir = satir4;
} else {
hedefSatir = satir5;
}
butonlar = MyForm.AddNewProButton(hedefSatir, 'btn' + IntToStr(j) + '_' + IntToStr(i), IntToStr(i + 1));
butonlar.Align = alRight;
butonlar.Margins.Right = 2;
butonlar.Margins.Top = 4;
butonlar.Margins.Left = 4;
butonlar.Width = 45;
butonlar.Height = 32;
butonlar.clProSettings.PictureSource = ' https://i.imgur.com/exBB3ZA.png" rel="nofollow - https://i.imgur.com/exBB3ZA.png ';
butonlar.clProSettings.PictureAutoFit = true;
butonlar.clProSettings.IsRound = true;
butonlar.clProSettings.FontSize = 9;
butonlar.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
butonlar.SetclProSettings(butonlar.clProSettings);
}
}
mypanel=myForm.AddNewProPanel(MainPnl,'mypanel');
mypanel.Align=alMostBottom;
mypanel.Align=alHorizontal;
mypanel.Height=200;
mypanel.Width=300;
mypanel.clProSettings.RoundHeight=20;
mypanel.clProSettings.Roundwidth=20;
mypanel.clProSettings.IsTransparent =False;
mypanel.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ffffff');
mypanel.clProSettings.BorderWidth = 2;
mypanel.SetclProSettings(mypanel.clProSettings);
mybuton1=myForm.AddNewProButton(mypanel, 'mybuton1', '');
mybuton1.Align = alLeft;
mybuton1.margins.left=50;
mybuton1.margins.bottom=130;
mybuton1.Width = 40;
mybuton1.Height = 40;
mybuton1.clProSettings.IsRound = True;
mybuton1.clProSettings.RoundHeight = 10;
mybuton1.clProSettings.RoundWidth = 10;
mybuton1.SetclProSettings(mybuton1.clProSettings);
myForm.SetImage(mybuton1,' https://i.imgur.com/KcmLm4h.png" rel="nofollow - https://i.imgur.com/KcmLm4h.png ');
mybuton2=myForm.AddNewProButton(mypanel, 'mybuton2', '');
mybuton2.Align = alLeft;
mybuton2.margins.left=45;
mybuton2.margins.bottom=130;
mybuton2.Width = 40;
mybuton2.Height = 40;
mybuton2.clProSettings.IsRound = True;
mybuton2.clProSettings.RoundHeight = 10;
mybuton2.clProSettings.RoundWidth = 10;
mybuton2.SetclProSettings(mybuton2.clProSettings);
myForm.SetImage(mybuton2,' https://i.imgur.com/mcpG1Ot.png" rel="nofollow - https://i.imgur.com/mcpG1Ot.png ');
mybuton3=myForm.AddNewProButton(mypanel, 'mybuton3', '');
mybuton3.Align = alLeft;
mybuton3.margins.left=45;
mybuton3.margins.bottom=130;
mybuton3.Width = 40;
mybuton3.Height = 40;
mybuton3.clProSettings.IsRound = True;
mybuton3.clProSettings.RoundHeight = 10;
mybuton3.clProSettings.RoundWidth = 10;
mybuton3.SetclProSettings(mybuton3.clProSettings);
myForm.SetImage(mybuton3,' https://i.imgur.com/yOGrUe4.png" rel="nofollow - https://i.imgur.com/yOGrUe4.png ');
mybuton4=myForm.AddNewProButton(mypanel, 'mybuton4', '');
mybuton4.Align = alMostRight;
mybuton4.margins.right=50;
mybuton4.margins.bottom=130;
mybuton4.Width = 40;
mybuton4.Height = 40;
mybuton4.clProSettings.IsRound = True;
mybuton4.clProSettings.RoundHeight = 10;
mybuton4.clProSettings.RoundWidth = 10;
mybuton4.SetclProSettings(mybuton4.clProSettings);
myForm.SetImage(mybuton4,' https://i.imgur.com/dKnXBVF.png" rel="nofollow - https://i.imgur.com/dKnXBVF.png ');
myForm.AddNewEvent(mybuton3,tbeOnClick,'mybuton3click');
MyForm.AddNewEvent(mybuton4,tbeOnClick,'mybuton4click');
MyForm.Run;
}