![]() |
| 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
|
| Yazar | |
Nevra Nur
Yeni Üye
Kayıt Tarihi: 09 Şubat 2026 Konum: konya Durum: Aktif Değil Puanlar: 29 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Nevra Nur
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Konu: Pointer HatasıGönderim Zamanı: 5 Saat 33 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?
|
|
![]() |
|
Eren Ö.
Yeni Üye
Kayıt Tarihi: 25 Eylül 2025 Durum: Aktif Değil Puanlar: 35 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 4 Saat 31 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"> |
|
![]() |
|
Nevra Nur
Yeni Üye
Kayıt Tarihi: 09 Şubat 2026 Konum: konya Durum: Aktif Değil Puanlar: 29 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Nevra Nur
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 3 Saat 22 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; MainForm.setImage(TitleIcon, '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" 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">
|
|
![]() |
|
Emr.Erkmn
Moderatör
Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Değil Puanlar: 664 |
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ı: 52 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"> |
|
![]() |
|
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 |