Sayfayı Yazdır | Pencereyi Kapat

Pointer Hatası

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Clomosy ile değişken kullanımı
Forum Tanımlaması: TRObject dili ile değişken tanımlaması ve ekranda gösterme
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1362
Tarih: 18 Şubat 2026 Saat 17:46
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Pointer Hatası
Mesajı Yazan: Nevra Nur
Konu: Pointer Hatası
Mesaj Tarihi: 18 Şubat 2026 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?



Cevaplar:
Mesajı Yazan: Eren Ö.
Mesaj Tarihi: 18 Şubat 2026 Saat 14:35
Merhaba Nevra,

Kodunuzu atarsanız inceleyip geri dönüş sağlayacağım. https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - 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">


Mesajı Yazan: Nevra Nur
Mesaj Tarihi: 18 Şubat 2026 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;
  MainForm.setImage(TitleIcon, ' https://static.vecteezy.com/system/resources/previews/056/952/041/non_2x/queue-simple-music-player-button-vector.jpg" rel="nofollow - https://static.vecteezy.com/system/resources/previews/056/952/041/non_2x/queue-simple-music-player-button-vector.jpg ');

  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" rel="nofollow - 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">



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