Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Clomosy ile değişken kullanımı
  Aktif Konular Aktif Konular RSS - Pointer Hatası
  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.

Pointer Hatası

 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: 29
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: Pointer Hatası
    Gönderim Zamanı: 4 Saat 52 Dakika Önce Saat 13:33
Merhabalar,
Geliştirdiğim uygulamada  çalıştırdığım butonlar birkaç kullanımdan sonra 'Invalid pointer operation.' hatası veriyor . Hatanın sebebi ne olabilir?
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: 35
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Eren Ö. Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 3 Saat 50 Dakika Önce Saat 14:35
Merhaba Nevra,

Kodunuzu atarsanız inceleyip geri dönüş sağlayacağım.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
Nevra Nur Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 09 Şubat 2026
Konum: konya
Durum: Aktif Değil
Puanlar: 29
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 Gönderim Zamanı: 2 Saat 41 Dakika Önce Saat 15:44
var
  MainForm, AddForm, DetailForm, AddStepForm, ProgressForm: TclForm;
  HeaderPnl, FooterPnl, TopRowPnl: TclProPanel;
  AddTaskBtn, SaveBtn, SaveStepBtn, BtnAddStep, BtnAddDynamicStep, BtnSaveProgress: TclProButton;
  TaskScrollBox, StepScrollBox, DynamicStepScrollBox: TclVertScrollBox;
  d_LblTitle, d_LblDesc, d_LblDate, d_LblStatus, d_LblInfo: TclProLabel;
  d_SliderContainer, d_SliderBar, d_SliderKnob, d_HeaderContainer, d_InfoContainer, d_StepsContainer: TclProPanel;
  d_YuzdeLbl: TclProLabel;
  d_Surukleniyor: Boolean;
  d_HedefX: Integer;
  TaskNameEdt, TaskDescEdt, TaskControlEdt, TaskWorkerEdt,TmpNameEdt: TclEdit;
  StepNameEdt, ProgressEdit: TclEdit; 
  TaskDateEdt, StepDateEdt: TclDateEdit;
  TitleLbl, SubTitleLbl, LblStepsHeader: TclProLabel;
  TitleIcon: TclProImage;
  selID, selStepID, queryStr: string;
  isEditMode, isStepEditMode: Boolean; 
  AddedStepCount: Integer;

void RefreshTaskList; forward;
void RefreshStepList; forward;
void OpenProgressForm; forward;
void SaveManualProgress; forward;
void AddNewStepClick; forward;
void OpenAddStepForm; forward;
void SaveStepToDB; forward;
void DeleteStep; forward;
void EditStepClick; forward;
void OpenDetailForm; forward;
void OpenStepProgressClick; forward;
void CalculateTaskAverage; forward; 

void SetupDatabase;
{
  try
    Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'Database.db3', '');
    
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'CREATE TABLE IF NOT EXISTS MyTasks (' +
      'id INTEGER PRIMARY KEY AUTOINCREMENT,' +
      'task_name TEXT, task_desc TEXT, task_worker TEXT, ' +
      'task_control TEXT, task_date TEXT, task_progress INTEGER DEFAULT 0)';
    Clomosy.DBSQLiteQuery.OpenOrExecute;
    
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'CREATE TABLE IF NOT EXISTS TaskSteps (' +
      'step_id INTEGER PRIMARY KEY AUTOINCREMENT,' +
      'task_id INTEGER,' + 
      'step_title TEXT, step_date TEXT, step_is_done INTEGER DEFAULT 0)';
    Clomosy.DBSQLiteQuery.OpenOrExecute;

  except
    ShowMessage('Veritabanı Hatası: ' + LastExceptionMessage);
  }
}

// --- ort hesaplama ---
void CalculateTaskAverage;
var
  AvgVal: Float;
  AvgInt: Integer;
{

  Clomosy.DBSQLiteQuery.SQL.Text = 'SELECT AVG(step_is_done) as avg_val FROM TaskSteps WHERE task_id = ' + selID;
  Clomosy.DBSQLiteQuery.OpenOrExecute;
  
  if (Clomosy.DBSQLiteQuery.FieldByName('avg_val').AsString == '') 
  {
    AvgInt = 0;
  }
  else
  {
    AvgVal = Clomosy.DBSQLiteQuery.FieldByName('avg_val').AsFloat;
    AvgInt = Round(AvgVal); 
  }
 
  Clomosy.DBSQLiteQuery.SQL.Text = 'UPDATE MyTasks SET task_progress = ' + IntToStr(AvgInt) + ' WHERE id = ' + selID;
  Clomosy.DBSQLiteQuery.OpenOrExecute;

  if (d_YuzdeLbl <> nil)
    d_YuzdeLbl.Text = '%' + IntToStr(AvgInt);
}

void AddDynamicStepRow;//yeni görev ekle sayfasındaki adımlerı eklediğim kısım
var
  NewStepPnl: TclProPanel;
  NewNameEdt, NewDateEdt: TclEdit;
{
  AddedStepCount = AddedStepCount + 1;

  NewStepPnl = AddForm.AddNewProPanel(DynamicStepScrollBox, 'DynStepPnl_' + IntToStr(AddedStepCount));
  NewStepPnl.Align = alTop;
  NewStepPnl.Height = 110; 
  NewStepPnl.Margins.Top = 10;
  NewStepPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#E5E7EB');
  NewStepPnl.clProSettings.BorderWidth = 1;
  NewStepPnl.clProSettings.RoundHeight = 10;
  NewStepPnl.clProSettings.BackgroundColor = clAlphaColor.clWhite;
  NewStepPnl.SetclProSettings(NewStepPnl.clProSettings);

  NewNameEdt = AddForm.AddNewProEdit(NewStepPnl, 'DynStepName_' + IntToStr(AddedStepCount), 'Adım ' + IntToStr(AddedStepCount) + ' Başlığı');
  NewNameEdt.Align = alTop;
  NewNameEdt.Height = 45;
  NewNameEdt.Margins.Left = 5;
  NewNameEdt.Margins.Right =5;
  NewNameEdt.Margins.Top = 5;

  NewDateEdt = AddForm.AddNewProEdit(NewStepPnl, 'DynStepDate_' + IntToStr(AddedStepCount), 'Tarih (GG.AA.YYYY)');
  NewDateEdt.Align = alTop;
  NewDateEdt.Height = 45;
  NewDateEdt.Margins.Left = 5;
  NewDateEdt.Margins.Right = 5;
  NewDateEdt.Margins.Top = 5;
}

void SaveStepToDB;//adımalrı kaydetme
{
  if(StepNameEdt.Text=='')
  {
    ShowMessage('Adım başlığını giriniz:'); 
    exit;
  }
  try
    if (isStepEditMode) 
    {
       Clomosy.DBSQLiteQuery.SQL.Text = 'UPDATE TaskSteps SET step_title = '''+StepNameEdt.Text+''', step_date = '''+StepDateEdt.Text+''' WHERE step_id = ' + selStepID;
    }
    else 
    {
       Clomosy.DBSQLiteQuery.SQL.Text = 'INSERT INTO TaskSteps (task_id, step_title, step_date, step_is_done) VALUES ('+selID+', '''+StepNameEdt.Text+''', '''+StepDateEdt.Text+''', 0)';
    }
    
    Clomosy.DBSQLiteQuery.OpenOrExecute;
    
    // Yeni adım eklendiğinde ortalamayı tekrar hesapla
    CalculateTaskAverage;
    
    AddStepForm.clHide;
    RefreshStepList;
  except
    ShowMessage('İşlem yapılamadı: ' + LastExceptionMessage);
  }
}

void OpenAddStepForm;//yeni adımı ekleme düzen pencereli
{
  if (AddStepForm <> nil) {
    AddStepForm.Free;
    AddStepForm = nil;
  }
  AddStepForm = TclForm.Create(Self);
  if (isStepEditMode) AddStepForm.clSetCaption('Adımı Düzenle');
  else AddStepForm.clSetCaption('Yeni Adım Ekle');
  
  AddStepForm.SetFormColor('#FFFFFF', '', clGNone);
 
  StepNameEdt = AddStepForm.AddNewProEdit(AddStepForm, 'StepNameEdt', 'Adım');
  StepNameEdt.Align = alTop;
  StepNameEdt.Height = 50; 
  StepNameEdt.Margins.Top=20;
  
  StepDateEdt = AddStepForm.AddNewProEdit(AddStepForm, 'StepDateEdt', 'Tarih (GG.AA.YYYY)');
  StepDateEdt.Align = alTop; 
  StepDateEdt.Height = 50;
  
  if (isStepEditMode) {
     Clomosy.DBSQLiteQuery.SQL.Text = 'SELECT * FROM TaskSteps WHERE step_id = ' + selStepID;
     Clomosy.DBSQLiteQuery.OpenOrExecute;
     StepNameEdt.Text = Clomosy.DBSQLiteQuery.FieldByName('step_title').AsString;
     StepDateEdt.Text = Clomosy.DBSQLiteQuery.FieldByName('step_date').AsString;
  }

  SaveStepBtn = AddStepForm.AddNewProButton(AddStepForm, 'SaveStepBtn', 'Kaydet');
  SaveStepBtn.Align = alBottom; 
  SaveStepBtn.Height = 50;
  clComponent.SetupComponent(SaveStepBtn, '{"BackgroundColor":"#f0e1fe", "TextColor":"#6302c5", "RoundHeight":10}');
  AddStepForm.AddNewEvent(SaveStepBtn, tbeOnClick, 'SaveStepToDB');
  
  AddStepForm.Run;
}

void EditStepClick;//düzenleye bastığımda  bastığımın Id yi tutuyor
{
  selStepID = TclProButton(DetailForm.clSender).clTagStr;
  isStepEditMode = True;
  OpenAddStepForm; //giriş pencersini aç
}

void AddNewStepClick;// yeni adım ekleme 
{
  isStepEditMode = False;
  OpenAddStepForm;
}


void OpenStepProgressClick;// Adım ilerleme butonuna tıklanınca
{
  selStepID = TclProButton(DetailForm.clSender).clTagStr;
  OpenProgressForm;
}

void DeleteStep;//adım silme
{
  selStepID = TclProButton(DetailForm.clSender).clTagStr;
  if (Clomosy.Ask('Bu adımı silmek istiyor musunuz?')) {
    Clomosy.DBSQLiteQuery.SQL.Text = 'DELETE FROM TaskSteps WHERE step_id = ' + selStepID;
    Clomosy.DBSQLiteQuery.OpenOrExecute;
    
    // Adım silinince gebel ortalamayı tekrar hesaplamak için
    CalculateTaskAverage;
    
    RefreshStepList;
  }
}

void RefreshStepList;//  ana ekrandaki görev listesi
var 
  StepCard, StepInfoPnl: TclProPanel;
  LblStepName, LblStepDate, LblStepStatus: TclProLabel;
  BtnCheck, BtnDelStep, BtnEditStep, BtnProgStep: TclProButton;
  isDone, DaysDiff: Integer;
  StatusColor, StatusIcon, DaysText, BandColor,InfoStr: String;
{
  if (StepScrollBox <> nil) { StepScrollBox.Free; StepScrollBox = nil; }
  
  StepScrollBox = DetailForm.AddNewVertScrollBox(d_StepsContainer, 'StepScrollBox');
  StepScrollBox.Align = alClient;
  
  Clomosy.DBSQLiteQuery.Close;
  Clomosy.DBSQLiteQuery.SQL.Text = 
    'SELECT *, CAST(julianday(substr(step_date,7,4) || ''-'' || substr(step_date,4,2) || ''-'' || substr(step_date,1,2)) - julianday(''now'') AS INTEGER) as days_left ' +
    'FROM TaskSteps WHERE task_id = ' + selID + ' ORDER BY step_id DESC';
  Clomosy.DBSQLiteQuery.OpenOrExecute;
  
  while (not Clomosy.DBSQLiteQuery.Eof)
  {
    isDone = Clomosy.DBSQLiteQuery.FieldByName('step_is_done').AsInteger;
    
    StepCard = DetailForm.AddNewProPanel(StepScrollBox, 'StpCrd_' + Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString);
    StepCard.Align = alTop;
    StepCard.Height = 85;
    StepCard.Margins.Top = 10; 
    StepCard.Margins.Left = 10; 
    StepCard.Margins.Right = 10;
    StepCard.clProSettings.RoundHeight = 10;
    StepCard.clProSettings.RoundWidth = 10;
    StepCard.clProSettings.BorderColor = clAlphaColor.clHexToColor('#E5E7EB');
    StepCard.clProSettings.BorderWidth = 1;
    StepCard.clProSettings.BackgroundColor = clAlphaColor.clWhite;
    StepCard.SetclProSettings(StepCard.clProSettings);
    
    // Silme Buton
    BtnDelStep = DetailForm.AddNewProButton(StepCard, 'DelStp_' + Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString, 'Sil');
    BtnDelStep.Align = alRight;
    BtnDelStep.Width = 40; 
    BtnDelStep.Margins.Right=5;
    BtnDelStep.Margins.Top=20; 
    BtnDelStep.Margins.Bottom=20;
    BtnDelStep.clTagStr = Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString;
    clComponent.SetupComponent(BtnDelStep, '{"BackgroundColor":"#ffcccc", "TextColor":"#ff0000", "TextSize":11, "RoundHeight":10, "RoundWidth":10, "TextBold":"yes"}');
    DetailForm.AddNewEvent(BtnDelStep, tbeOnClick, 'DeleteStep');
    
    // Düzenle Butonu
    BtnEditStep = DetailForm.AddNewProButton(StepCard, 'EdtStp_' + Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString, 'Düzenle');
    BtnEditStep.Align = alRight;
    BtnEditStep.Width = 40; 
    BtnEditStep.Margins.Right=5;
    BtnEditStep.Margins.Top=20; 
    BtnEditStep.Margins.Bottom=20;
    BtnEditStep.clTagStr = Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString;
    clComponent.SetupComponent(BtnEditStep, '{"BackgroundColor":"#e0f2fe", "TextColor":"#0284c7", "TextSize":11, "RoundHeight":10, "RoundWidth":10, "TextBold":"yes"}');
    DetailForm.AddNewEvent(BtnEditStep, tbeOnClick, 'EditStepClick');
    
    //İlerleme Butonu 
    BtnProgStep = DetailForm.AddNewProButton(StepCard, 'PrgStp_' + Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString, '%');
    BtnProgStep.Align = alRight;
    BtnProgStep.Width = 40; 
    BtnProgStep.Margins.Right=5;
    BtnProgStep.Margins.Top=20; 
    BtnProgStep.Margins.Bottom=20;
    BtnProgStep.clTagStr = Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString;
    clComponent.SetupComponent(BtnProgStep, '{"BackgroundColor":"#fee1f6", "TextColor":"#c50256", "TextSize":13, "RoundHeight":10, "RoundWidth":10, "TextBold":"yes"}');
    DetailForm.AddNewEvent(BtnProgStep, tbeOnClick, 'OpenStepProgressClick');
    
    StepInfoPnl = DetailForm.AddNewProPanel(StepCard, 'InfPnl_' + Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString);
    StepInfoPnl.Align = alClient; 
    StepInfoPnl.clProSettings.BackgroundColor = clAlphaColor.clWhite; 
    StepInfoPnl.SetclProSettings(StepInfoPnl.clProSettings);
    
    LblStepName = DetailForm.AddNewProLabel(StepInfoPnl, 'StpNm_' + Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString, Clomosy.DBSQLiteQuery.FieldByName('step_title').AsString);
    LblStepName.Align = alTop;
    LblStepName.Height = 25;
    LblStepName.Margins.Left = 10;
    LblStepName.Margins.Top=10;
    clComponent.SetupComponent(LblStepName, '{"TextSize":13, "TextColor":"#1F2937", "TextBold":"yes"}');
    
    // Tarih ve Durum 
    DaysDiff = Clomosy.DBSQLiteQuery.FieldByName('days_left').AsInteger;
    if (DaysDiff < 0) DaysText = 'Süre Doldu'; 
    else DaysText = IntToStr(DaysDiff) + ' gün kaldı';
  
    InfoStr = '📅 ' + Clomosy.DBSQLiteQuery.FieldByName('step_date').AsString + ' | ' + DaysText;
    
    if (isDone > 0) 
    {
       InfoStr = InfoStr + ' | %' + IntToStr(isDone) + ' Tamamlandı';
    }
    if (isDone == 100) 
    {
       InfoStr = InfoStr + ' ✅'; 
    }

    LblStepDate = DetailForm.AddNewProLabel(StepInfoPnl, 'StpDt_' + Clomosy.DBSQLiteQuery.FieldByName('step_id').AsString, InfoStr);
    LblStepDate.Align = alTop; LblStepDate.Margins.Left = 10;
    clComponent.SetupComponent(LblStepDate, '{"TextSize":11, "TextColor":"#6B7280"}');
    
    Clomosy.DBSQLiteQuery.Next;//döngüyü başa al sıradaki veri için 
  }
}

void SaveManualProgress//görev adımı için girilen yüzdeyi kaydet
var
  NewProgInt: Integer;
{
  NewProgInt = StrToIntDef(ProgressEdit.Text, -1);
  if ((NewProgInt >= 0) && (NewProgInt <= 100)) {

    Clomosy.DBSQLiteQuery.SQL.Text = 'UPDATE TaskSteps SET step_is_done = ' + IntToStr(NewProgInt) + ' WHERE step_id = ' + selStepID;
    Clomosy.DBSQLiteQuery.OpenOrExecute;
    
    CalculateTaskAverage;//bağlı olduğu yüzdeliğin tekrar hesaplanması
    
    ShowMessage('Adım ilerlemesi güncellendi. Genel durum yenilendi.');
    ProgressForm.clHide; 
    RefreshStepList;
  } else {
    ShowMessage('Lütfen 0 ile 100 arasında bir sayı giriniz.');
  }
}

void OpenProgressForm;//yüzde kaydı
{
  if (ProgressForm <> nil) {
    ProgressForm.Free;
    ProgressForm = nil;
  }
  ProgressForm = TclForm.Create(Self);
  ProgressForm.clSetCaption('İlerleme Girişi');
  ProgressForm.SetFormColor('#FFFFFF', '', clGNone);
  
  ProgressEdit = ProgressForm.AddNewProEdit(ProgressForm, 'ProgressEdit', 'Yüzde (0-100)');
  ProgressEdit.Align = alTop;
  ProgressEdit.Height = 50; 
  ProgressEdit.Margins.Top = 30;
  ProgressEdit.Margins.Left = 20;
  ProgressEdit.Margins.Right = 20;
  clComponent.SetupComponent(ProgressEdit, '{"TextType":"number"}'); 

  BtnSaveProgress = ProgressForm.AddNewProButton(ProgressForm, 'BtnSaveProgress', 'Kaydet');
  BtnSaveProgress.Align = alBottom; 
  BtnSaveProgress.Height = 50;
  clComponent.SetupComponent(BtnSaveProgress, '{"BackgroundColor":"#f0e1fe", "TextColor":"#6302c5", "RoundHeight":10}');
  
  ProgressForm.AddNewEvent(BtnSaveProgress, tbeOnClick, 'SaveManualProgress');
  
  ProgressForm.Run;
}

void OpenDetailForm;
var CurrentProgress, MaxWidth: Integer;
  if (DetailForm <> nil) {
    DetailForm.Free;
    DetailForm = nil;
  }
  
  DetailForm = TclForm.Create(Self);
  DetailForm.clSetCaption('Görev Detayı');
  DetailForm.SetFormColor('#F9FAFB', '', clGNone);
  
  Clomosy.DBSQLiteQuery.Close;
  Clomosy.DBSQLiteQuery.SQL.Text = 'SELECT * FROM MyTasks WHERE id = ' + selID;
  Clomosy.DBSQLiteQuery.OpenOrExecute;
  
  d_HeaderContainer = DetailForm.AddNewProPanel(DetailForm, 'd_HeaderContainer');
  d_HeaderContainer.Align = alTop; 
  d_HeaderContainer.Height = 120; 
  d_HeaderContainer.clProSettings.BackgroundColor = clAlphaColor.clWhite; 
  d_HeaderContainer.SetclProSettings(d_HeaderContainer.clProSettings);

  d_LblTitle = DetailForm.AddNewProLabel(d_HeaderContainer, 'd_LblTitle', Clomosy.DBSQLiteQuery.FieldByName('task_name').AsString);
  d_LblTitle.Align = alTop;
  d_LblTitle.Margins.Top = 10; 
  d_LblTitle.Margins.Left = 20; 
  d_LblTitle.Height = 30; 
  d_LblTitle.clProSettings.FontSize = 22; 
  d_LblTitle.clProSettings.FontColor = clAlphaColor.clBlack; 
  d_LblTitle.clProSettings.TextSettings.Font.Style = [fsBold];
  d_LblTitle.SetclProSettings(d_LblTitle.clProSettings);
  
  d_LblDesc = DetailForm.AddNewProLabel(d_HeaderContainer, 'd_LblDesc', Clomosy.DBSQLiteQuery.FieldByName('task_desc').AsString);
  d_LblDesc.Align = alClient;
  d_LblDesc.Margins.Left = 20;
  d_LblDesc.Margins.Top = 5;
  d_LblDesc.clProSettings.FontSize = 14; 
  d_LblDesc.clProSettings.FontColor = clAlphaColor.clGray; 
  d_LblDesc.SetclProSettings(d_LblDesc.clProSettings);

  d_InfoContainer = DetailForm.AddNewProPanel(DetailForm, 'd_InfoContainer');
  d_InfoContainer.Align = alTop; d_InfoContainer.Height = 120; 
  d_InfoContainer.Margins.Top = 10;
  d_InfoContainer.clProSettings.BackgroundColor = clAlphaColor.clWhite; 
  d_InfoContainer.SetclProSettings(d_InfoContainer.clProSettings);

  d_LblDate = DetailForm.AddNewProLabel(d_InfoContainer, 'd_LblDate', 'Teslim: ' + Clomosy.DBSQLiteQuery.FieldByName('task_date').AsString);
  d_LblDate.Align = alTop; 
  d_LblDate.Margins.Top=10;
  d_LblDate.Margins.Left=20; 
  d_LblDate.Height=25;
  d_LblDate.clProSettings.FontSize = 16; 
  d_LblDate.clProSettings.FontColor = clAlphaColor.clHexToColor('#059669'); 
  d_LblDate.SetclProSettings(d_LblDate.clProSettings);
  
  d_LblInfo = DetailForm.AddNewProLabel(d_InfoContainer, 'd_LblInfo', 'Sorumlu: ' + Clomosy.DBSQLiteQuery.FieldByName('task_worker').AsString + #13 + 'Kontrol: ' + Clomosy.DBSQLiteQuery.FieldByName('task_control').AsString);
  d_LblInfo.Align = alClient; 
  d_LblInfo.Margins.Left=20; 
  d_LblInfo.Margins.Top=5;
  d_LblInfo.clProSettings.FontSize = 14; 
  d_LblInfo.clProSettings.FontColor = clAlphaColor.clHexToColor('#374151');
  d_LblInfo.SetclProSettings(d_LblInfo.clProSettings);

  d_YuzdeLbl = DetailForm.AddNewProLabel(d_InfoContainer, 'd_YuzdeLbl', '%0');
  d_YuzdeLbl.Align = alRight; 
  d_YuzdeLbl.Width = 80;
  d_YuzdeLbl.Margins.Right=20;
  d_YuzdeLbl.Margins.Top = 10;
  clComponent.SetupComponent(d_YuzdeLbl, '{"TextHorizontalAlign":"right", "FontSize":24, "TextColor":"#2563EB", "TextBold":"yes"}');
  
  CurrentProgress = Clomosy.DBSQLiteQuery.FieldByName('task_progress').AsInteger;
  d_YuzdeLbl.Text = '%' + IntToStr(CurrentProgress);

  d_StepsContainer = DetailForm.AddNewProPanel(DetailForm, 'd_StepsContainer');
  d_StepsContainer.Align = alClient;
  d_StepsContainer.Margins.Top = 15;
  d_StepsContainer.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#F3F4F6');
  d_StepsContainer.SetclProSettings(d_StepsContainer.clProSettings);
  
  LblStepsHeader = DetailForm.AddNewProLabel(d_StepsContainer, 'LblStepsHeader', 'Görev Adımları');
  LblStepsHeader.Align = alTop;
  LblStepsHeader.Height = 40;
  LblStepsHeader.Margins.Left = 20;
  LblStepsHeader.Margins.Top = 10;
  clComponent.SetupComponent(LblStepsHeader, '{"FontSize":16, "TextColor":"#111827", "TextBold":"yes"}');
  
  BtnAddStep = DetailForm.AddNewProButton(d_StepsContainer, 'BtnAddStep', '+ Adım Ekle');
  BtnAddStep.Align = alTop; 
  BtnAddStep.Height = 40; 
  BtnAddStep.Margins.Left=20; 
  BtnAddStep.Margins.Right=20;
  clComponent.SetupComponent(BtnAddStep, '{"BackgroundColor":"#FFFFFF", "TextColor":"#2563EB", "BorderColor":"#2563EB", "BorderWidth":1, "RoundHeight":10}');
  DetailForm.AddNewEvent(BtnAddStep, tbeOnClick, 'AddNewStepClick');
  
  RefreshStepList;
  
  DetailForm.Run;
}

void SaveTask;//görev verilerini kaydt
var
  i, LastTaskID: Integer;
  TmpNameEdt, TmpDateEdt: TclEdit;
  StepText, StepDateStr: String;
{
  if (TaskNameEdt.Text == '') { ShowMessage('Lütfen görev adı giriniz.'); exit; }

  try

    Clomosy.DBSQLiteQuery.Close; 
    if (isEditMode) {
      queryStr = 'UPDATE MyTasks SET task_name='''+TaskNameEdt.Text+''', task_desc='''+TaskDescEdt.Text+''', task_worker='''+TaskWorkerEdt.Text+''', task_control='''+TaskControlEdt.Text+''', task_date='''+TaskDateEdt.Text+''' WHERE id='+selID;
    } else {
      queryStr = 'INSERT INTO MyTasks (task_name, task_desc, task_worker, task_control, task_date, task_progress) VALUES ('''+TaskNameEdt.Text+''','''+TaskDescEdt.Text+''','''+TaskWorkerEdt.Text+''','''+TaskControlEdt.Text+''','''+TaskDateEdt.Text+''', 0)';
    }
    
    Clomosy.DBSQLiteQuery.SQL.Text = queryStr;
    Clomosy.DBSQLiteQuery.OpenOrExecute;
    
    if (not isEditMode) 
    {
        Clomosy.DBSQLiteQuery.Close; 
        Clomosy.DBSQLiteQuery.SQL.Text = 'SELECT MAX(id) as last_id FROM MyTasks';//eklenen ana görevin ıdsi
        Clomosy.DBSQLiteQuery.OpenOrExecute;
        LastTaskID = Clomosy.DBSQLiteQuery.FieldByName('last_id').AsInteger;
        Clomosy.DBSQLiteQuery.Close; 

        for (i = 1 to AddedStepCount)//kullanıcının oluşturduğu adım kadar
        {
          TmpNameEdt = TclEdit(AddForm.clFindComponent('DynStepName_' + IntToStr(i)));
          TmpDateEdt = TclEdit(AddForm.clFindComponent('DynStepDate_' + IntToStr(i)));
          
          if (TmpNameEdt <> nil) 
          {
            StepText = TmpNameEdt.Text;
            if (StepText <> '') 
            {
               if (TmpDateEdt.Text <> '') StepDateStr = TmpDateEdt.Text;
               else StepDateStr = TaskDateEdt.Text;

               Clomosy.DBSQLiteQuery.Close; 
               Clomosy.DBSQLiteQuery.SQL.Text = 'INSERT INTO TaskSteps (task_id, step_title, step_date, step_is_done) VALUES ('+IntToStr(LastTaskID)+', '''+StepText+''', '''+StepDateStr+''', 0)';
               Clomosy.DBSQLiteQuery.OpenOrExecute;
            }
          }
        }
    }
    
    AddForm.clHide;
    RefreshTaskList; 
  except
    ShowMessage('Hata: ' + LastExceptionMessage);
  }
}
void OpenAddTaskForm; // görev formunu oluşturma
var
  LblStartSteps: TclProLabel;
{
  if (AddForm <> nil) 
  {
    AddForm.Free;
    AddForm = nil;
  }
  AddForm = TclForm.Create(Self);
  AddForm.clSetCaption('Görev Formu');
  
  TaskNameEdt = AddForm.AddNewProEdit(AddForm, 'TaskNameEdt', 'Görev Adı'); TaskNameEdt.Align = alTop; TaskNameEdt.Height=50;
  TaskDescEdt = AddForm.AddNewProEdit(AddForm, 'TaskDescEdt', 'Açıklama'); TaskDescEdt.Align = alTop; TaskDescEdt.Height=50;
  TaskDateEdt = AddForm.AddNewProEdit(AddForm, 'TaskDateEdt', 'Tarih (GG.AA.YYYY)'); TaskDateEdt.Align = alTop; TaskDateEdt.Height=50;
  TaskControlEdt = AddForm.AddNewProEdit(AddForm, 'TaskControlEdt', 'Kontrolör'); TaskControlEdt.Align = alTop; TaskControlEdt.Height=50;
  TaskWorkerEdt = AddForm.AddNewProEdit(AddForm, 'TaskWorkerEdt', 'Yapan Kişi'); TaskWorkerEdt.Align = alTop; TaskWorkerEdt.Height=50;

  if (not isEditMode)
  {
      LblStartSteps = AddForm.AddNewProLabel(AddForm, 'LblStartSteps', 'Başlangıç Adımları (Opsiyonel)');
      LblStartSteps.Align = alTop;
      LblStartSteps.Margins.Top = 15;
      LblStartSteps.Margins.Left = 10;
      LblStartSteps.Height = 25;
      clComponent.SetupComponent(LblStartSteps, '{"TextBold":"yes", "TextColor":"#374151"}');
      
      DynamicStepScrollBox = AddForm.AddNewVertScrollBox(AddForm, 'DynamicStepScrollBox');
      DynamicStepScrollBox.Align = alClient; 
      DynamicStepScrollBox.Margins.Bottom = 60; 

      BtnAddDynamicStep = AddForm.AddNewProButton(DynamicStepScrollBox, 'BtnAddDynamicStep', '+ Adım Ekle');
      BtnAddDynamicStep.Align = alTop;
      BtnAddDynamicStep.Height = 40;
      BtnAddDynamicStep.Margins.Top = 10;
      BtnAddDynamicStep.Margins.Left = 20;
      BtnAddDynamicStep.Margins.Right = 20;
      clComponent.SetupComponent(BtnAddDynamicStep, '{"BackgroundColor":"#FFFFFF", "TextColor":"#2563EB", "BorderColor":"#2563EB", "BorderWidth":1, "BorderType":"dash", "RoundHeight":10}');
      AddForm.AddNewEvent(BtnAddDynamicStep, tbeOnClick, 'AddDynamicStepRow');
      
      AddedStepCount = 0;
      AddDynamicStepRow;
  }

  SaveBtn = AddForm.AddNewProButton(AddForm, 'SaveBtn', 'KAYDET'); 
  SaveBtn.Align = alBottom; 
  SaveBtn.Height=50;
  clComponent.SetupComponent(SaveBtn, '{"BackgroundColor":"#f0e1fe", "TextColor":"#6302c5", "RoundHeight":10}');
  AddForm.AddNewEvent(SaveBtn, tbeOnClick, 'SaveTask');
  
  AddForm.Run;
}

void BtnEditClick;
{
  selID = TclProButton(MainForm.clSender).clTagStr; 
  isEditMode = True;
  OpenAddTaskForm;
  
  Clomosy.DBSQLiteQuery.SQL.Text = 'SELECT * FROM MyTasks WHERE id = ' + selID;
  Clomosy.DBSQLiteQuery.OpenOrExecute;
  TaskNameEdt.Text = Clomosy.DBSQLiteQuery.FieldByName('task_name').AsString;
  TaskDescEdt.Text = Clomosy.DBSQLiteQuery.FieldByName('task_desc').AsString;
  TaskWorkerEdt.Text = Clomosy.DBSQLiteQuery.FieldByName('task_worker').AsString;
  TaskControlEdt.Text = Clomosy.DBSQLiteQuery.FieldByName('task_control').AsString;
  TaskDateEdt.Text = Clomosy.DBSQLiteQuery.FieldByName('task_date').AsString;
  AddForm.Run;
}

void BtnDeleteClick;
var
  ClickedBtn: TclProButton;
  ParentLayout, ParentCard: TclProPanel;
{
  ClickedBtn = TclProButton(MainForm.clSender);
  selID = ClickedBtn.clTagStr;
  
  try
    if (Clomosy.Ask('Görevi silmek istiyor musunuz?')) {
        Clomosy.DBSQLiteQuery.SQL.Text = 'DELETE FROM MyTasks WHERE id = ' + selID;
        Clomosy.DBSQLiteQuery.OpenOrExecute;
        Clomosy.DBSQLiteQuery.SQL.Text = 'DELETE FROM TaskSteps WHERE task_id = ' + selID;
        Clomosy.DBSQLiteQuery.OpenOrExecute;
        
        ParentLayout = TclProPanel(ClickedBtn.Parent);
        ParentCard = TclProPanel(ParentLayout.Parent);
        
        ParentCard.Height = 0;
        ParentCard.Visible = False;
        
        ShowMessage('Görev silindi.');
    }
  except
    ShowMessage('Silinemedi: ' + LastExceptionMessage);
  }
}
void BtnDetailClick; 
var
  ClickedBtn: TclProButton;
{
  ClickedBtn = TclProButton(MainForm.clSender);
  
  if (ClickedBtn <> nil) 
  {
      selID = ClickedBtn.clTagStr;
      if (selID <> '') 
      {
         OpenDetailForm;
      }
      else
      {
         ShowMessage('Hata: Görev ID bulunamadı.');
      }
  }
}
void newTaskClick;
{
  isEditMode = False;
  OpenAddTaskForm;
  AddForm.Run;
}
//ana ekrandaki
void RefreshTaskList; 
var
  CardPnl, TopLayout, DateBandPnl, BottomLayout: TclProPanel;
  LblName, LblDateTxt, LblDaysLeft, LblWorker, LblPercent, LblDesc: TclProLabel;
  BtnEdit, BtnDel, BtnDet: TclProButton;
  ProgBarBack, ProgBarFront: TclProPanel;
  CurrentProg, DaysDiff: Integer;
  DaysText, BandColor, TextColor: String;
{
  if (TaskScrollBox <> nil) {
    TaskScrollBox.Free;
    TaskScrollBox = nil;
  }
  
  TaskScrollBox = MainForm.AddNewVertScrollBox(FooterPnl, 'TaskScrollBox');
  TaskScrollBox.Align = alClient;
  
  Clomosy.DBSQLiteQuery.Close; 
  Clomosy.DBSQLiteQuery.SQL.Text = 
    'SELECT *, CAST(julianday(substr(task_date,7,4) || ''-'' || substr(task_date,4,2) || ''-'' || substr(task_date,1,2)) - julianday(''now'') AS INTEGER) as days_left ' +
    'FROM MyTasks ORDER BY id DESC';
  Clomosy.DBSQLiteQuery.OpenOrExecute;
  
  while (not Clomosy.DBSQLiteQuery.Eof)
  {
    CardPnl = MainForm.AddNewProPanel(TaskScrollBox, 'Card_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString);
    CardPnl.Align = alTop;
    CardPnl.Height = 280; 
    CardPnl.Margins.Top = 20; 
    CardPnl.Margins.Left = 15; 
    CardPnl.Margins.Right = 15;
    CardPnl.clProSettings.BackgroundColor = clAlphaColor.clWhite;
    CardPnl.clProSettings.RoundHeight = 15;
    CardPnl.clProSettings.RoundWidth = 15;
    CardPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#E2E8F0');
    CardPnl.clProSettings.BorderWidth = 1;
    CardPnl.SetclProSettings(CardPnl.clProSettings);
    
    TopLayout = MainForm.AddNewProPanel(CardPnl, 'Top_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString);
    TopLayout.Align = alTop;
    TopLayout.Height = 40; 
    TopLayout.Margins.Top=20;
    TopLayout.clProSettings.BackgroundColor = clAlphaColor.clWhite; 
    TopLayout.SetclProSettings(TopLayout.clProSettings);
    
    LblDesc = MainForm.AddNewProLabel(CardPnl, 'Desc_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, Clomosy.DBSQLiteQuery.FieldByName('task_desc').AsString);
    LblDesc.Align = alTop; LblDesc.Height = 40; 
    LblDesc.Margins.Left = 10; 
    LblDesc.Margins.Right = 10;
    LblDesc.Margins.Top=10;
    clComponent.SetupComponent(LblDesc, '{"TextColor":"#64748B", "TextSize":13, "TextVerticalAlign":"top"}');
    
    LblName = MainForm.AddNewProLabel(TopLayout, 'Lbl_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, Clomosy.DBSQLiteQuery.FieldByName('task_name').AsString);
    LblName.Align = alLeft; 
    LblName.Width = 200; 
    LblName.Margins.Left = 10;
    LblName.clProSettings.FontSize = 18; 
    LblName.clProSettings.FontColor = clAlphaColor.clHexToColor('#1E293B'); 
    LblName.clProSettings.TextSettings.Font.Style = [fsBold];
    LblName.SetclProSettings(LblName.clProSettings);
    
    DaysDiff = Clomosy.DBSQLiteQuery.FieldByName('days_left').AsInteger;
    if (DaysDiff < 3) { 
        DaysText = IntToStr(DaysDiff) + ' gün kaldı!'; 
        BandColor = '#FEE2E2'; 
        TextColor = '#DC2626'; 
    } else { 
        DaysText = IntToStr(DaysDiff) + ' gün kaldı'; 
        BandColor = '#DCFCE7'; 
        TextColor = '#15803D'; 
    }
    if (DaysDiff < 0) { DaysText = 'Süre Doldu'; BandColor = '#FECACA'; TextColor = '#B91C1C'; }

    DateBandPnl = MainForm.AddNewProPanel(CardPnl, 'DBand_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString);
    DateBandPnl.Align = alTop; 
    DateBandPnl.Height = 30; 
    DateBandPnl.Margins.Left = 10;
    DateBandPnl.Margins.Right = 10; 
    DateBandPnl.Margins.Top = 0;
    DateBandPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(BandColor);
    DateBandPnl.clProSettings.RoundHeight = 8; 
    DateBandPnl.clProSettings.RoundWidth = 8;
    DateBandPnl.SetclProSettings(DateBandPnl.clProSettings);
  
    LblDateTxt = MainForm.AddNewProLabel(DateBandPnl, 'DtTxt_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, '📅 ' + Clomosy.DBSQLiteQuery.FieldByName('task_date').AsString);
    LblDateTxt.Align = alLeft; LblDateTxt.Width = 120; 
    LblDateTxt.Margins.Left = 10;
    LblDateTxt.Margins.Top=5;
    clComponent.SetupComponent(LblDateTxt, '{"TextColor":"'+TextColor+'", "TextSize":12, "TextBold":"yes"}');
    
    LblDaysLeft = MainForm.AddNewProLabel(DateBandPnl, 'DLft_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, DaysText);
    LblDaysLeft.Align = alRight; LblDaysLeft.Width = 100; 
    LblDaysLeft.Margins.Right = 10;
    LblDaysLeft.Margins.Top=5;
    clComponent.SetupComponent(LblDaysLeft, '{"TextHorizontalAlign":"right", "TextColor":"'+TextColor+'", "TextSize":12, "TextBold":"yes"}');
    
    LblWorker = MainForm.AddNewProLabel(CardPnl, 'Wrk_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, 
        'Sorumlu: ' + Clomosy.DBSQLiteQuery.FieldByName('task_worker').AsString + ' | Kontrol: ' + Clomosy.DBSQLiteQuery.FieldByName('task_control').AsString);
    LblWorker.Align = alTop; 
    LblWorker.Height=25; 
    LblWorker.Margins.Left=10; 
    LblWorker.Margins.Top=5;
    clComponent.SetupComponent(LblWorker, '{"TextColor":"#475569", "TextSize":11}');

    ProgBarBack = MainForm.AddNewProPanel(CardPnl, 'PbBack_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString);
    ProgBarBack.Align = alTop; 
    ProgBarBack.Height = 8; 
    ProgBarBack.Margins.Top=5; 
    ProgBarBack.Margins.Left=10;
    ProgBarBack.Margins.Right=10;
    ProgBarBack.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#F1F5F9'); 
    ProgBarBack.clProSettings.RoundHeight=4; 
    ProgBarBack.clProSettings.RoundWidth=4;
    ProgBarBack.SetclProSettings(ProgBarBack.clProSettings);
    
    CurrentProg = Clomosy.DBSQLiteQuery.FieldByName('task_progress').AsInteger;
    ProgBarFront = MainForm.AddNewProPanel(ProgBarBack, 'PbFront_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString);
    ProgBarFront.Align = alLeft; 
    ProgBarFront.Width = (CurrentProg * 3); 
    ProgBarFront.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#e66700'); 
    ProgBarFront.clProSettings.RoundHeight=4; 
    ProgBarFront.clProSettings.RoundWidth=4;
    ProgBarFront.SetclProSettings(ProgBarFront.clProSettings);
    
    LblPercent = MainForm.AddNewProLabel(CardPnl, 'Prc_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, '%'+IntToStr(CurrentProg));
    LblPercent.Align = alTop; 
    LblPercent.Height=15
    LblPercent.Margins.Right=15;
    clComponent.SetupComponent(LblPercent, '{"TextHorizontalAlign":"right", "TextColor":"#2563EB", "TextSize":10, "TextBold":"yes"}');

    BottomLayout = MainForm.AddNewProPanel(CardPnl, 'Btns_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString);
    BottomLayout.Align = alBottom;
    BottomLayout.Height = 45; 
    BottomLayout.Margins.Bottom = 10;
    BottomLayout.clProSettings.BackgroundColor = clAlphaColor.clWhite; 
    BottomLayout.SetclProSettings(BottomLayout.clProSettings);
    
    BtnDet = MainForm.AddNewProButton(BottomLayout, 'Det_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, 'Detay');
    BtnDet.Align = alLeft;
    BtnDet.Width = 70; 
    BtnDet.Margins.Left = 10; 
    BtnDet.clTagStr = Clomosy.DBSQLiteQuery.FieldByName('id').AsString;
    clComponent.SetupComponent(BtnDet, '{"BackgroundColor":"#cce2ff", "TextColor":"#006cfa", "RoundHeight":8, "RoundWidth":8, "TextSize":11, "TextBold":"yes"}');
    MainForm.AddNewEvent(BtnDet, tbeOnClick, 'BtnDetailClick');

    BtnDel = MainForm.AddNewProButton(BottomLayout, 'Del_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, 'Sil');
    BtnDel.Align = alRight; 
    BtnDel.Width = 60;
    BtnDel.Margins.Right = 10;
    BtnDel.clTagStr = Clomosy.DBSQLiteQuery.FieldByName('id').AsString;
    clComponent.SetupComponent(BtnDel, '{"BackgroundColor":"#ffcccc", "TextColor":"#ff0000", "RoundHeight":8, "RoundWidth":8, "TextSize":11, "TextBold":"yes"}');
    MainForm.AddNewEvent(BtnDel, tbeOnClick, 'BtnDeleteClick');

    BtnEdit = MainForm.AddNewProButton(BottomLayout, 'Edt_' + Clomosy.DBSQLiteQuery.FieldByName('id').AsString, 'Düzenle');
    BtnEdit.Align = alRight; 
    BtnEdit.Width = 70; 
    BtnEdit.Margins.Right = 5;
    BtnEdit.clTagStr = Clomosy.DBSQLiteQuery.FieldByName('id').AsString;
    clComponent.SetupComponent(BtnEdit, '{"BackgroundColor":"#ccffe5", "TextColor":"#00b859", "RoundHeight":8, "RoundWidth":8, "TextSize":11, "TextBold":"yes"}');
    MainForm.AddNewEvent(BtnEdit, tbeOnClick, 'BtnEditClick');

    Clomosy.DBSQLiteQuery.Next;
  }
}

{
  MainForm = TclForm.Create(Self);
  SetupDatabase;
  
  HeaderPnl = MainForm.AddNewProPanel(MainForm, 'HeaderPnl');
  HeaderPnl.Align = alTop; 
  HeaderPnl.Height = 80; 
  HeaderPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#FFFFFF');
  HeaderPnl.SetclProSettings(HeaderPnl.clProSettings);
  
  TitleIcon = MainForm.AddNewProImage(HeaderPnl, 'TitleIcon');
  TitleIcon.Align = alLeft; 
  TitleIcon.Width = 40; 
  TitleIcon.Height = 40; 
  TitleIcon.Margins.Left = 20; 
  TitleIcon.Margins.Top = 20;

  TitleLbl = MainForm.AddNewProLabel(HeaderPnl, 'TitleLbl', 'Görev Yöneticisi');
  TitleLbl.Align = alLeft; 
  TitleLbl.Margins.Left=10; 
  TitleLbl.Margins.Top=25; 
  TitleLbl.Width=150;
  TitleLbl.clProSettings.FontSize=18; 
  TitleLbl.clProSettings.FontColor=clAlphaColor.clHexToColor('#111827'); 
  TitleLbl.clProSettings.TextSettings.Font.Style=[fsBold];
  TitleLbl.SetclProSettings(TitleLbl.clProSettings);
  
  AddTaskBtn = MainForm.AddNewProButton(HeaderPnl, 'AddTaskBtn', '+ Yeni');
  AddTaskBtn.Align = alRight;
  AddTaskBtn.Width=80; 
  AddTaskBtn.Height=40; 
  AddTaskBtn.Margins.Right=40; 
  AddTaskBtn.Margins.Top=20;
  clComponent.SetupComponent(AddTaskBtn, '{"BackgroundColor":"#f9fee1", "TextColor":"#c57d02", "RoundHeight":10}');
  
  
  MainForm.AddNewEvent(AddTaskBtn, tbeOnClick, 'newTaskClick');
  
  FooterPnl = MainForm.AddNewProPanel(MainForm, 'FooterPnl');
  FooterPnl.Align = alClient;
  FooterPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#F1F5F9'); 
  FooterPnl.SetclProSettings(FooterPnl.clProSettings);
  
  RefreshTaskList;
  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
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif
Puanlar: 664
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Dakika Önce Saat 18:14
Merhaba, 
Gelen hata masaüstü .exe de çalışırken mi geliyor 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.