![]() |
| 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. |
ListView -1 hatası |
Yanıt Yaz
|
| Yazar | |
ErenTotan
Yeni Üye
Kayıt Tarihi: 29 Haziran 2026 Konum: Konya Durum: Aktif Değil Puanlar: 10 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı ErenTotan
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Konu: ListView -1 hatasıGönderim Zamanı: 2 Saat 12 Dakika Önce Saat 17:06 |
|
// manager.tro
uses fonksiyonlar;
var
ManagerForm: TclForm;
ScrollManager: TclVertScrollBox;
FormPnl: TclProPanel;
edtHocaName, edtHocaPass: TclProEdit;
edtBrans, edtTelefon, edtTC, edtMaas, edtTarih: TclProEdit;
cbSurekli: TclCheckBox;
btnSaveHoca: TclProButton;
TeacherListView: TclListView;
BackdropPnl, SheetPnl: TclProPanel;
lblSheetTitle: TclProLabel;
btnSheetClose, btnSheetDelete, btnCallTeacher, btnMsgTeacher: TclProButton;
TeacherCodes: array[0..100] of String;
TeacherNames: array[0..100] of String;
TeacherPhones: array[0..100] of String;
TotalTeachers: Integer;
ClickedTeacherIndex: Integer;
selectedTeacherCode: String;
void CloseBottomSheet;
{
BackdropPnl.Visible = False;
SheetPnl.Visible = False;
}
void OpenBottomSheet;
{
BackdropPnl.Visible = True;
BackdropPnl.BringToFront;
SheetPnl.Visible = True;
SheetPnl.BringToFront;
}
void LoadTeachers;
var
clRest: TclRest;
resp: String;
idx, keyStart, keyEnd, braceCount: Integer;
ch, hocaCode, hocaData, hocaName, hocaPass, instId: String;
brans, telefon, tc, maas, tarih, surekli: String;
urlStr, baseUrl, jsonList: String;
{
baseUrl = Trim(fonksiyonlar.FirebaseURL);
if (Copy(baseUrl, Length(baseUrl), 1) == '/') { baseUrl = Copy(baseUrl, 1, Length(baseUrl) - 1); }
urlStr = baseUrl + '/ogretmenler.json';
clRest = TclRest.Create;
clRest.Accept = 'application/json';
clRest.ContentType = 'application/json';
clRest.BaseURL = urlStr;
clRest.Method = rmGET;
clRest.Execute;
resp = Trim(clRest.Response);
if ((resp == 'null') || (Length(resp) == 0) || (resp == '{}'))
{
TeacherListView.clLoadListViewDataFromDataset(Clomosy.ClDataSetFromJSON('[]'));
Exit;
}
jsonList = '[';
TotalTeachers = 0;
idx = 2;
while (idx < Length(resp))
{
keyStart = Pos('"', Copy(resp, idx, Length(resp)));
if (keyStart == 0) { Break; }
keyStart = idx + keyStart - 1;
keyEnd = Pos('"', Copy(resp, keyStart + 1, Length(resp)));
if (keyEnd == 0) { Break; }
keyEnd = keyStart + 1 + keyEnd - 1;
hocaCode = Copy(resp, keyStart + 1, keyEnd - keyStart - 1);
idx = keyEnd + 1;
while ((idx < Length(resp)) && (Copy(resp, idx, 1) <> '{')) { idx = idx + 1; }
if (idx >= Length(resp)) { Break; }
keyStart = idx;
braceCount = 1;
idx = idx + 1;
while ((idx <= Length(resp)) && (braceCount > 0))
{
ch = Copy(resp, idx, 1);
if (ch == '{') { braceCount = braceCount + 1; }
else if (ch == '}') { braceCount = braceCount - 1; }
idx = idx + 1;
}
hocaData = Copy(resp, keyStart, idx - keyStart);
if (Pos('"kurumKodu"', hocaData) > 0) { instId = Clomosy.CLParseJSON(hocaData, 'kurumKodu'); } else { instId = ''; }
if (Pos('"hocaAdi"', hocaData) > 0) { hocaName = Clomosy.CLParseJSON(hocaData, 'hocaAdi'); } else { hocaName = 'İsimsiz'; }
if (Pos('"sifre"', hocaData) > 0) { hocaPass = Clomosy.CLParseJSON(hocaData, 'sifre'); } else { hocaPass = ''; }
if (Pos('"brans"', hocaData) > 0) { brans = Clomosy.CLParseJSON(hocaData, 'brans'); } else { brans = '-'; }
if (Pos('"telefon"', hocaData) > 0) { telefon = Clomosy.CLParseJSON(hocaData, 'telefon'); } else { telefon = '-'; }
if (Pos('"tc"', hocaData) > 0) { tc = Clomosy.CLParseJSON(hocaData, 'tc'); } else { tc = '-'; }
if (Pos('"maas"', hocaData) > 0) { maas = Clomosy.CLParseJSON(hocaData, 'maas'); } else { maas = '-'; }
if (Pos('"tarih"', hocaData) > 0) { tarih = Clomosy.CLParseJSON(hocaData, 'tarih'); } else { tarih = '-'; }
if (Pos('"surekli"', hocaData) > 0) { surekli = Clomosy.CLParseJSON(hocaData, 'surekli'); } else { surekli = '-'; }
if (instId == fonksiyonlar.SessionInstId)
{
if (TotalTeachers < 100)
{
TeacherCodes[TotalTeachers] = hocaCode;
TeacherNames[TotalTeachers] = hocaName;
TeacherPhones[TotalTeachers] = telefon;
if (jsonList <> '[') { jsonList = jsonList + ','; }
jsonList = jsonList + '{"MAIN_TEXT":"' + hocaName + ' (' + brans + ')", "SUB_TEXT":"Kod: ' + hocaCode + ' | Tip: ' + surekli + ' | Maas: ' + maas + ' | Baslama: ' + tarih + '"}';
TotalTeachers = TotalTeachers + 1;
}
}
}
jsonList = jsonList + ']';
TeacherListView.clLoadListViewDataFromDataset(Clomosy.ClDataSetFromJSON(jsonList));
}
void SaveTeacher;
var
clRest: TclRest;
jsonStr, hocaName, hocaPass, hocaCode, urlStr, baseUrl: String;
randomNum: Integer;
{
hocaName = Trim(edtHocaName.Text);
hocaPass = Trim(edtHocaPass.Text);
if ((Length(hocaName) == 0) || (Length(hocaPass) == 0))
{
ShowMessage('Lutfen en azindan ogretmen adi ve sifre alanlarini doldurun!');
Exit;
}
randomNum = Round(Random * 9000) + 1000;
hocaCode = 'TCH' + IntToStr(randomNum);
jsonStr = '{"hocaAdi":"' + hocaName + '","sifre":"' + hocaPass + '"';
jsonStr = jsonStr + ',"kurumKodu":"' + fonksiyonlar.SessionInstId + '"';
jsonStr = jsonStr + ',"brans":"' + Trim(edtBrans.Text) + '"';
jsonStr = jsonStr + ',"telefon":"' + Trim(edtTelefon.Text) + '"';
jsonStr = jsonStr + ',"tc":"' + Trim(edtTC.Text) + '"';
jsonStr = jsonStr + ',"maas":"' + Trim(edtMaas.Text) + '"';
jsonStr = jsonStr + ',"tarih":"' + Trim(edtTarih.Text) + '"';
if (cbSurekli.IsChecked) { jsonStr = jsonStr + ',"surekli":"Surekli Calisan"'; }
else { jsonStr = jsonStr + ',"surekli":"Kisa Sureli"'; }
jsonStr = jsonStr + '}';
baseUrl = Trim(fonksiyonlar.FirebaseURL);
if (Copy(baseUrl, Length(baseUrl), 1) == '/') { baseUrl = Copy(baseUrl, 1, Length(baseUrl) - 1); }
urlStr = baseUrl + '/ogretmenler/' + hocaCode + '.json';
clRest = TclRest.Create;
clRest.Accept = 'application/json';
clRest.ContentType = 'application/json';
clRest.BaseURL = urlStr;
clRest.Method = rmPUT;
clRest.Body = jsonStr;
clRest.Execute;
ShowMessage('Ogretmen basariyla eklendi! Hoca Giris Kodu: ' + hocaCode);
edtHocaName.Text = '';
edtHocaPass.Text = '';
edtBrans.Text = '';
edtTelefon.Text = '';
edtTC.Text = '';
edtMaas.Text = '';
edtTarih.Text = '';
cbSurekli.IsChecked = False;
LoadTeachers;
}
void DeleteTeacher;
var
clRest: TclRest;
urlStr, baseUrl: String;
{
if (selectedTeacherCode == '') { Exit; }
if (Ask(selectedTeacherCode + ' kodlu ogretmeni silmek istediginize emin misiniz?'))
{
baseUrl = Trim(fonksiyonlar.FirebaseURL);
if (Copy(baseUrl, Length(baseUrl), 1) == '/') { baseUrl = Copy(baseUrl, 1, Length(baseUrl) - 1); }
urlStr = baseUrl + '/ogretmenler/' + selectedTeacherCode + '.json';
clRest = TclRest.Create;
clRest.Accept = 'application/json';
clRest.ContentType = 'application/json';
clRest.BaseURL = urlStr;
clRest.Method = rmDELETE;
clRest.Execute;
ShowMessage('Ogretmen basariyla silindi!');
CloseBottomSheet;
LoadTeachers;
}
}
void CallTeacher;
var num: String;
{
num = Trim(TeacherPhones[ClickedTeacherIndex]);
if ((num == '') || (num == '00000000000') || (num == '-')) { ShowMessage('Telefon numarasi kayitli degil!'); }
else { TClomosyOS.Dial(num); }
CloseBottomSheet;
}
void MsgTeacher;
var num: String;
{
num = Trim(TeacherPhones[ClickedTeacherIndex]);
if ((num == '') || (num == '00000000000') || (num == '-')) { ShowMessage('Telefon numarasi kayitli degil!'); }
else { TClomosyOS.OpenURL('https://wa.me/90' + num); }
CloseBottomSheet;
}
void OnItemClick;
{
ClickedTeacherIndex = TeacherListView.ItemIndex;
selectedTeacherCode = TeacherCodes[ClickedTeacherIndex];
lblSheetTitle.Text = TeacherNames[ClickedTeacherIndex] + ' Islemleri';
OpenBottomSheet;
}
{
ManagerForm = TclForm.Create(Self);
ManagerForm.clSetWindowState(fwsMaximized);
ManagerForm.SetFormColor('#0F172A', '', clGNone);
ScrollManager = ManagerForm.AddNewVertScrollBox(ManagerForm, 'ScrollManager');
ScrollManager.Align = alClient;
ScrollManager.Margins.Left = 10;
ScrollManager.Margins.Right = 10;
ScrollManager.Margins.Bottom = 10;
FormPnl = ManagerForm.AddNewProPanel(ScrollManager, 'FormPnl');
FormPnl.Align = alTop;
FormPnl.Height = 620;
FormPnl.Margins.Top = 15;
FormPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
FormPnl.clProSettings.RoundHeight = 15; FormPnl.clProSettings.RoundWidth = 15;
FormPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#334155'); FormPnl.clProSettings.BorderWidth = 2;
FormPnl.SetclProSettings(FormPnl.clProSettings);
// 1. Ad Soyad
edtHocaName = ManagerForm.AddNewProEdit(FormPnl, 'edtHocaName', 'Ogretmen Adi Soyadi...');
edtHocaName.Align = alTop; edtHocaName.Height = 45; edtHocaName.Margins.Top = 15; edtHocaName.Margins.Left = 15; edtHocaName.Margins.Right = 15;
edtHocaName.clProSettings.FontColor = clAlphaColor.clWhite; edtHocaName.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtHocaName.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtHocaName.clProSettings.BorderWidth = 1; edtHocaName.clProSettings.RoundHeight = 8; edtHocaName.clProSettings.RoundWidth = 8; edtHocaName.SetclProSettings(edtHocaName.clProSettings);
// 2. Şifre
edtHocaPass = ManagerForm.AddNewProEdit(FormPnl, 'edtHocaPass', 'Giris Sifresi Belirleyin...');
edtHocaPass.Align = alTop; edtHocaPass.Height = 45; edtHocaPass.Margins.Top = 10; edtHocaPass.Margins.Left = 15; edtHocaPass.Margins.Right = 15;
edtHocaPass.clProSettings.FontColor = clAlphaColor.clWhite; edtHocaPass.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtHocaPass.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtHocaPass.clProSettings.BorderWidth = 1; edtHocaPass.clProSettings.RoundHeight = 8; edtHocaPass.clProSettings.RoundWidth = 8; edtHocaPass.SetclProSettings(edtHocaPass.clProSettings);
// 3. Branş
edtBrans = ManagerForm.AddNewProEdit(FormPnl, 'edtBrans', 'Brans (Matematik, Fizik vs.)...');
edtBrans.Align = alTop; edtBrans.Height = 45; edtBrans.Margins.Top = 10; edtBrans.Margins.Left = 15; edtBrans.Margins.Right = 15;
edtBrans.clProSettings.FontColor = clAlphaColor.clWhite; edtBrans.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtBrans.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtBrans.clProSettings.BorderWidth = 1; edtBrans.clProSettings.RoundHeight = 8; edtBrans.clProSettings.RoundWidth = 8; edtBrans.SetclProSettings(edtBrans.clProSettings);
// 4. Telefon
edtTelefon = ManagerForm.AddNewProEdit(FormPnl, 'edtTelefon', 'Telefon Numarasi (05XX)...');
edtTelefon.Align = alTop; edtTelefon.Height = 45; edtTelefon.Margins.Top = 10; edtTelefon.Margins.Left = 15; edtTelefon.Margins.Right = 15;
edtTelefon.clProSettings.FontColor = clAlphaColor.clWhite; edtTelefon.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtTelefon.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtTelefon.clProSettings.BorderWidth = 1; edtTelefon.clProSettings.RoundHeight = 8; edtTelefon.clProSettings.RoundWidth = 8; edtTelefon.SetclProSettings(edtTelefon.clProSettings);
// 5. TC Kimlik
edtTC = ManagerForm.AddNewProEdit(FormPnl, 'edtTC', 'TC Kimlik Numarasi...');
edtTC.Align = alTop; edtTC.Height = 45; edtTC.Margins.Top = 10; edtTC.Margins.Left = 15; edtTC.Margins.Right = 15;
edtTC.clProSettings.FontColor = clAlphaColor.clWhite; edtTC.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtTC.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtTC.clProSettings.BorderWidth = 1; edtTC.clProSettings.RoundHeight = 8; edtTC.clProSettings.RoundWidth = 8; edtTC.SetclProSettings(edtTC.clProSettings);
// 6. Maaş
edtMaas = ManagerForm.AddNewProEdit(FormPnl, 'edtMaas', 'Aylik Maas (TL)...');
edtMaas.Align = alTop; edtMaas.Height = 45; edtMaas.Margins.Top = 10; edtMaas.Margins.Left = 15; edtMaas.Margins.Right = 15;
edtMaas.clProSettings.FontColor = clAlphaColor.clWhite; edtMaas.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtMaas.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtMaas.clProSettings.BorderWidth = 1; edtMaas.clProSettings.RoundHeight = 8; edtMaas.clProSettings.RoundWidth = 8; edtMaas.SetclProSettings(edtMaas.clProSettings);
// 7. Tarih
edtTarih = ManagerForm.AddNewProEdit(FormPnl, 'edtTarih', 'Ise Baslama Tarihi (GG/AA/YYYY)...');
edtTarih.Align = alTop; edtTarih.Height = 45; edtTarih.Margins.Top = 10; edtTarih.Margins.Left = 15; edtTarih.Margins.Right = 15;
edtTarih.clProSettings.FontColor = clAlphaColor.clWhite; edtTarih.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtTarih.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtTarih.clProSettings.BorderWidth = 1; edtTarih.clProSettings.RoundHeight = 8; edtTarih.clProSettings.RoundWidth = 8; edtTarih.SetclProSettings(edtTarih.clProSettings);
// 8. Checkbox
cbSurekli = ManagerForm.AddNewCheckBox(FormPnl, 'cbSurekli', 'Surekli Calisan (Secilmezse Kisa Sureli)');
cbSurekli.Align = alTop; cbSurekli.Height = 30; cbSurekli.Margins.Top = 15; cbSurekli.Margins.Left = 20; cbSurekli.Margins.Right = 20;
cbSurekli.TextSettings.FontColor = clAlphaColor.clWhite;
// Kaydet Butonu
btnSaveHoca = fonksiyonlar.CreateMyProButton(ManagerForm, FormPnl, 'btnSaveHoca', '[+] Ogretmen Kaydet', '#10B981', 45);
btnSaveHoca.Align = alTop; btnSaveHoca.Margins.Top = 20; btnSaveHoca.Margins.Left = 15; btnSaveHoca.Margins.Right = 15; btnSaveHoca.Margins.Bottom = 20;
ManagerForm.AddNewEvent(btnSaveHoca, tbeOnClick, 'SaveTeacher');
// Liste Başlığı
fonksiyonlar.CreateSectionLabel(ManagerForm, ScrollManager, 'lblTitleList', 'KAYITLI OGRETMENLER LISTESI');
// Öğretmen Listesi
TeacherListView = ManagerForm.AddNewListView(ScrollManager, 'TeacherListView');
TeacherListView.Align = alTop;
TeacherListView.Height = 500;
TeacherListView.Margins.Top = 5; TeacherListView.Margins.Left = 15; TeacherListView.Margins.Right = 15; TeacherListView.Margins.Bottom = 20;
ManagerForm.AddNewEvent(TeacherListView, tbeOnClick, 'OnItemClick');
// --- POPUP MENU ---
BackdropPnl = ManagerForm.AddNewProPanel(ManagerForm, 'BackdropPnl');
BackdropPnl.Align = alClient;
BackdropPnl.clProSettings.IsTransparent = True;
BackdropPnl.Visible = False;
BackdropPnl.SetclProSettings(BackdropPnl.clProSettings);
ManagerForm.AddNewEvent(BackdropPnl, tbeOnClick, 'CloseBottomSheet');
SheetPnl = ManagerForm.AddNewProPanel(BackdropPnl, 'SheetPnl');
SheetPnl.Align = alCenter;
SheetPnl.Width = 340;
SheetPnl.Height = 350;
SheetPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
SheetPnl.clProSettings.RoundHeight = 20;
SheetPnl.clProSettings.RoundWidth = 20;
SheetPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569');
SheetPnl.clProSettings.BorderWidth = 2;
SheetPnl.SetclProSettings(SheetPnl.clProSettings);
lblSheetTitle = ManagerForm.AddNewProLabel(SheetPnl, 'lblSheetTitle', 'Ogretmen Islemleri');
lblSheetTitle.Align = alTop;
lblSheetTitle.Height = 65;
lblSheetTitle.Margins.Top = 15;
lblSheetTitle.clProSettings.FontColor = clAlphaColor.clWhite;
lblSheetTitle.clProSettings.FontSize = 18;
lblSheetTitle.clProSettings.FontHorzAlign = palCenter;
lblSheetTitle.clProSettings.TextSettings.Font.Style = [fsBold];
lblSheetTitle.SetclProSettings(lblSheetTitle.clProSettings);
btnCallTeacher = fonksiyonlar.CreateMyProButton(ManagerForm, SheetPnl, 'btnCallTeacher', 'Ogretmeni Ara', '#2563EB', 45);
btnCallTeacher.Align = alTop; btnCallTeacher.Margins.Left = 25; btnCallTeacher.Margins.Right = 25; btnCallTeacher.Margins.Bottom = 10;
ManagerForm.AddNewEvent(btnCallTeacher, tbeOnClick, 'CallTeacher');
btnMsgTeacher = fonksiyonlar.CreateMyProButton(ManagerForm, SheetPnl, 'btnMsgTeacher', 'WhatsApp`tan Yaz', '#10B981', 45);
btnMsgTeacher.Align = alTop; btnMsgTeacher.Margins.Left = 25; btnMsgTeacher.Margins.Right = 25; btnMsgTeacher.Margins.Bottom = 15;
ManagerForm.AddNewEvent(btnMsgTeacher, tbeOnClick, 'MsgTeacher');
btnSheetDelete = fonksiyonlar.CreateMyProButton(ManagerForm, SheetPnl, 'btnSheetDelete', 'Ogretmeni Sistemden Sil', '#EF4444', 45);
btnSheetDelete.Align = alTop; btnSheetDelete.Margins.Left = 25; btnSheetDelete.Margins.Right = 25; btnSheetDelete.Margins.Bottom = 15;
ManagerForm.AddNewEvent(btnSheetDelete, tbeOnClick, 'DeleteTeacher');
LoadTeachers;
ManagerForm.Run;
}
RUNTIME ERROR File library manager: Variant or safe array index out of bounds when evaluating instruction PushGlobalIdxVar ($14,$1,$0,$0,'TeacherCodes'). Stack content is: [OleStr:TCH1181,-1,2,(unknown)...]. Source position: 234,58 Position: 234, 58 //yapay zekanın düzenlediği kod hatayı kaldırdı// /Standart TclListView bazen direkt satıra tam ortadan tıklanmadığında bize ItemIndex değerini -1 (yani bulunamadı) olarak döndürüyor. "Clomosy'deki standart liste (TclListView) elemanlarına tıklanıldığında bazen sistem ItemIndex olarak boşluğa tıklandığı varsayıp -1 değerini döndürüyor, bu da diziden yanlış kişi (veya boşluk) çağırmamıza yol açıyordu. Biz de bunu, tıklanan elemanın alt metnindeki (SUB_TEXT) 'TCH...' kodunu bularak (string parçalama ile) sistemi kendi veritabanı dizimizde (TeacherCodes) eşleştirip doğru sırayı güvenli bir şekilde bulacak şekilde değiştirdik."ai hatanın ve çözümün bu olduğunu söylüyor!!! ///////////////////////////////// // manager.tro
uses fonksiyonlar;
var
ManagerForm: TclForm;
ScrollManager: TclVertScrollBox;
FormPnl: TclProPanel;
edtHocaName, edtHocaPass: TclProEdit;
edtBrans, edtTelefon, edtTC, edtMaas, edtTarih: TclProEdit;
cbSurekli: TclCheckBox;
btnSaveHoca: TclProButton;
TeacherListView: TclListView;
BackdropPnl, SheetPnl: TclProPanel;
lblSheetTitle: TclProLabel;
btnSheetClose, btnSheetDelete, btnCallTeacher, btnMsgTeacher: TclProButton;
TeacherCodes: array[0..100] of String;
TeacherNames: array[0..100] of String;
TeacherPhones: array[0..100] of String;
TotalTeachers: Integer;
ClickedTeacherIndex: Integer;
selectedTeacherCode: String;
void CloseBottomSheet;
{
BackdropPnl.Visible = False;
SheetPnl.Visible = False;
}
void OpenBottomSheet;
{
BackdropPnl.Visible = True;
BackdropPnl.BringToFront;
SheetPnl.Visible = True;
SheetPnl.BringToFront;
}
void LoadTeachers;
var
clRest: TclRest;
resp: String;
idx, keyStart, keyEnd, braceCount: Integer;
ch, hocaCode, hocaData, hocaName, hocaPass, instId: String;
brans, telefon, tc, maas, tarih, surekli: String;
urlStr, baseUrl, jsonList: String;
{
baseUrl = Trim(fonksiyonlar.FirebaseURL);
if (Copy(baseUrl, Length(baseUrl), 1) == '/') { baseUrl = Copy(baseUrl, 1, Length(baseUrl) - 1); }
urlStr = baseUrl + '/ogretmenler.json';
clRest = TclRest.Create;
clRest.Accept = 'application/json';
clRest.ContentType = 'application/json';
clRest.BaseURL = urlStr;
clRest.Method = rmGET;
clRest.Execute;
resp = Trim(clRest.Response);
if ((resp == 'null') || (Length(resp) == 0) || (resp == '{}'))
{
TeacherListView.clLoadListViewDataFromDataset(Clomosy.ClDataSetFromJSON('[]'));
Exit;
}
jsonList = '[';
TotalTeachers = 0;
idx = 2;
while (idx < Length(resp))
{
keyStart = Pos('"', Copy(resp, idx, Length(resp)));
if (keyStart == 0) { Break; }
keyStart = idx + keyStart - 1;
keyEnd = Pos('"', Copy(resp, keyStart + 1, Length(resp)));
if (keyEnd == 0) { Break; }
keyEnd = keyStart + 1 + keyEnd - 1;
hocaCode = Copy(resp, keyStart + 1, keyEnd - keyStart - 1);
idx = keyEnd + 1;
while ((idx < Length(resp)) && (Copy(resp, idx, 1) <> '{')) { idx = idx + 1; }
if (idx >= Length(resp)) { Break; }
keyStart = idx;
braceCount = 1;
idx = idx + 1;
while ((idx <= Length(resp)) && (braceCount > 0))
{
ch = Copy(resp, idx, 1);
if (ch == '{') { braceCount = braceCount + 1; }
else if (ch == '}') { braceCount = braceCount - 1; }
idx = idx + 1;
}
hocaData = Copy(resp, keyStart, idx - keyStart);
if (Pos('"kurumKodu"', hocaData) > 0) { instId = Clomosy.CLParseJSON(hocaData, 'kurumKodu'); } else { instId = ''; }
if (Pos('"hocaAdi"', hocaData) > 0) { hocaName = Clomosy.CLParseJSON(hocaData, 'hocaAdi'); } else { hocaName = 'İsimsiz'; }
if (Pos('"sifre"', hocaData) > 0) { hocaPass = Clomosy.CLParseJSON(hocaData, 'sifre'); } else { hocaPass = ''; }
if (Pos('"brans"', hocaData) > 0) { brans = Clomosy.CLParseJSON(hocaData, 'brans'); } else { brans = '-'; }
if (Pos('"telefon"', hocaData) > 0) { telefon = Clomosy.CLParseJSON(hocaData, 'telefon'); } else { telefon = '-'; }
if (Pos('"tc"', hocaData) > 0) { tc = Clomosy.CLParseJSON(hocaData, 'tc'); } else { tc = '-'; }
if (Pos('"maas"', hocaData) > 0) { maas = Clomosy.CLParseJSON(hocaData, 'maas'); } else { maas = '-'; }
if (Pos('"tarih"', hocaData) > 0) { tarih = Clomosy.CLParseJSON(hocaData, 'tarih'); } else { tarih = '-'; }
if (Pos('"surekli"', hocaData) > 0) { surekli = Clomosy.CLParseJSON(hocaData, 'surekli'); } else { surekli = '-'; }
if (instId == fonksiyonlar.SessionInstId)
{
if (TotalTeachers < 100)
{
TeacherCodes[TotalTeachers] = hocaCode;
TeacherNames[TotalTeachers] = hocaName;
TeacherPhones[TotalTeachers] = telefon;
if (jsonList <> '[') { jsonList = jsonList + ','; }
jsonList = jsonList + '{"MAIN_TEXT":"' + hocaName + ' (' + brans + ')", "SUB_TEXT":"Kod: ' + hocaCode + ' | Tip: ' + surekli + ' | Maas: ' + maas + ' | Baslama: ' + tarih + '"}';
TotalTeachers = TotalTeachers + 1;
}
}
}
jsonList = jsonList + ']';
TeacherListView.clLoadListViewDataFromDataset(Clomosy.ClDataSetFromJSON(jsonList));
}
void SaveTeacher;
var
clRest: TclRest;
jsonStr, hocaName, hocaPass, hocaCode, urlStr, baseUrl: String;
randomNum: Integer;
{
hocaName = Trim(edtHocaName.Text);
hocaPass = Trim(edtHocaPass.Text);
if ((Length(hocaName) == 0) || (Length(hocaPass) == 0))
{
ShowMessage('Lutfen en azindan ogretmen adi ve sifre alanlarini doldurun!');
Exit;
}
randomNum = Round(Random * 9000) + 1000;
hocaCode = 'TCH' + IntToStr(randomNum);
jsonStr = '{"hocaAdi":"' + hocaName + '","sifre":"' + hocaPass + '"';
jsonStr = jsonStr + ',"kurumKodu":"' + fonksiyonlar.SessionInstId + '"';
jsonStr = jsonStr + ',"brans":"' + Trim(edtBrans.Text) + '"';
jsonStr = jsonStr + ',"telefon":"' + Trim(edtTelefon.Text) + '"';
jsonStr = jsonStr + ',"tc":"' + Trim(edtTC.Text) + '"';
jsonStr = jsonStr + ',"maas":"' + Trim(edtMaas.Text) + '"';
jsonStr = jsonStr + ',"tarih":"' + Trim(edtTarih.Text) + '"';
if (cbSurekli.IsChecked) { jsonStr = jsonStr + ',"surekli":"Surekli Calisan"'; }
else { jsonStr = jsonStr + ',"surekli":"Kisa Sureli"'; }
jsonStr = jsonStr + '}';
baseUrl = Trim(fonksiyonlar.FirebaseURL);
if (Copy(baseUrl, Length(baseUrl), 1) == '/') { baseUrl = Copy(baseUrl, 1, Length(baseUrl) - 1); }
urlStr = baseUrl + '/ogretmenler/' + hocaCode + '.json';
clRest = TclRest.Create;
clRest.Accept = 'application/json';
clRest.ContentType = 'application/json';
clRest.BaseURL = urlStr;
clRest.Method = rmPUT;
clRest.Body = jsonStr;
clRest.Execute;
ShowMessage('Ogretmen basariyla eklendi! Hoca Giris Kodu: ' + hocaCode);
edtHocaName.Text = '';
edtHocaPass.Text = '';
edtBrans.Text = '';
edtTelefon.Text = '';
edtTC.Text = '';
edtMaas.Text = '';
edtTarih.Text = '';
cbSurekli.IsChecked = False;
LoadTeachers;
}
void DeleteTeacher;
var
clRest: TclRest;
urlStr, baseUrl: String;
{
if (selectedTeacherCode == '') { Exit; }
if (Ask(selectedTeacherCode + ' kodlu ogretmeni silmek istediginize emin misiniz?'))
{
baseUrl = Trim(fonksiyonlar.FirebaseURL);
if (Copy(baseUrl, Length(baseUrl), 1) == '/') { baseUrl = Copy(baseUrl, 1, Length(baseUrl) - 1); }
urlStr = baseUrl + '/ogretmenler/' + selectedTeacherCode + '.json';
clRest = TclRest.Create;
clRest.Accept = 'application/json';
clRest.ContentType = 'application/json';
clRest.BaseURL = urlStr;
clRest.Method = rmDELETE;
clRest.Execute;
ShowMessage('Ogretmen basariyla silindi!');
CloseBottomSheet;
LoadTeachers;
}
}
void CallTeacher;
var num: String;
{
num = Trim(TeacherPhones[ClickedTeacherIndex]);
if ((num == '') || (num == '00000000000') || (num == '-')) { ShowMessage('Telefon numarasi kayitli degil!'); }
else { TClomosyOS.Dial(num); }
CloseBottomSheet;
}
void MsgTeacher;
var num: String;
{
num = Trim(TeacherPhones[ClickedTeacherIndex]);
if ((num == '') || (num == '00000000000') || (num == '-')) { ShowMessage('Telefon numarasi kayitli degil!'); }
else { TClomosyOS.OpenURL('https://wa.me/90' + num); }
CloseBottomSheet;
}
void OnItemClick;
var
clickedText: String;
startPos: Integer;
tempStr: String;
i: Integer;
{
clickedText = TeacherListView.clSelectedItemData('SUB_TEXT');
startPos = Pos('Kod: ', clickedText);
if (startPos > 0)
{
tempStr = Copy(clickedText, startPos + 5, 20);
selectedTeacherCode = Copy(tempStr, 1, Pos(' |', tempStr) - 1);
ClickedTeacherIndex = -1;
for i = 0 to TotalTeachers - 1
{
if (TeacherCodes == selectedTeacherCode)
{
ClickedTeacherIndex = i;
}
}
if (ClickedTeacherIndex <> -1)
{
lblSheetTitle.Text = TeacherNames[ClickedTeacherIndex] + ' Islemleri';
OpenBottomSheet;
}
}
}
{
ManagerForm = TclForm.Create(Self);
ManagerForm.clSetWindowState(fwsMaximized);
ManagerForm.SetFormColor('#0F172A', '', clGNone);
ScrollManager = ManagerForm.AddNewVertScrollBox(ManagerForm, 'ScrollManager');
ScrollManager.Align = alClient;
ScrollManager.Margins.Left = 10;
ScrollManager.Margins.Right = 10;
ScrollManager.Margins.Bottom = 10;
FormPnl = ManagerForm.AddNewProPanel(ScrollManager, 'FormPnl');
FormPnl.Align = alTop;
FormPnl.Height = 620;
FormPnl.Margins.Top = 15;
FormPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
FormPnl.clProSettings.RoundHeight = 15; FormPnl.clProSettings.RoundWidth = 15;
FormPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#334155'); FormPnl.clProSettings.BorderWidth = 2;
FormPnl.SetclProSettings(FormPnl.clProSettings);
// 1. Ad Soyad
edtHocaName = ManagerForm.AddNewProEdit(FormPnl, 'edtHocaName', 'Ogretmen Adi Soyadi...');
edtHocaName.Align = alTop; edtHocaName.Height = 45; edtHocaName.Margins.Top = 15; edtHocaName.Margins.Left = 15; edtHocaName.Margins.Right = 15;
edtHocaName.clProSettings.FontColor = clAlphaColor.clWhite; edtHocaName.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtHocaName.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtHocaName.clProSettings.BorderWidth = 1; edtHocaName.clProSettings.RoundHeight = 8; edtHocaName.clProSettings.RoundWidth = 8; edtHocaName.SetclProSettings(edtHocaName.clProSettings);
// 2. Şifre
edtHocaPass = ManagerForm.AddNewProEdit(FormPnl, 'edtHocaPass', 'Giris Sifresi Belirleyin...');
edtHocaPass.Align = alTop; edtHocaPass.Height = 45; edtHocaPass.Margins.Top = 10; edtHocaPass.Margins.Left = 15; edtHocaPass.Margins.Right = 15;
edtHocaPass.clProSettings.FontColor = clAlphaColor.clWhite; edtHocaPass.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtHocaPass.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtHocaPass.clProSettings.BorderWidth = 1; edtHocaPass.clProSettings.RoundHeight = 8; edtHocaPass.clProSettings.RoundWidth = 8; edtHocaPass.SetclProSettings(edtHocaPass.clProSettings);
// 3. Branş
edtBrans = ManagerForm.AddNewProEdit(FormPnl, 'edtBrans', 'Brans (Matematik, Fizik vs.)...');
edtBrans.Align = alTop; edtBrans.Height = 45; edtBrans.Margins.Top = 10; edtBrans.Margins.Left = 15; edtBrans.Margins.Right = 15;
edtBrans.clProSettings.FontColor = clAlphaColor.clWhite; edtBrans.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtBrans.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtBrans.clProSettings.BorderWidth = 1; edtBrans.clProSettings.RoundHeight = 8; edtBrans.clProSettings.RoundWidth = 8; edtBrans.SetclProSettings(edtBrans.clProSettings);
// 4. Telefon
edtTelefon = ManagerForm.AddNewProEdit(FormPnl, 'edtTelefon', 'Telefon Numarasi (05XX)...');
edtTelefon.Align = alTop; edtTelefon.Height = 45; edtTelefon.Margins.Top = 10; edtTelefon.Margins.Left = 15; edtTelefon.Margins.Right = 15;
edtTelefon.clProSettings.FontColor = clAlphaColor.clWhite; edtTelefon.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtTelefon.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtTelefon.clProSettings.BorderWidth = 1; edtTelefon.clProSettings.RoundHeight = 8; edtTelefon.clProSettings.RoundWidth = 8; edtTelefon.SetclProSettings(edtTelefon.clProSettings);
// 5. TC Kimlik
edtTC = ManagerForm.AddNewProEdit(FormPnl, 'edtTC', 'TC Kimlik Numarasi...');
edtTC.Align = alTop; edtTC.Height = 45; edtTC.Margins.Top = 10; edtTC.Margins.Left = 15; edtTC.Margins.Right = 15;
edtTC.clProSettings.FontColor = clAlphaColor.clWhite; edtTC.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtTC.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtTC.clProSettings.BorderWidth = 1; edtTC.clProSettings.RoundHeight = 8; edtTC.clProSettings.RoundWidth = 8; edtTC.SetclProSettings(edtTC.clProSettings);
// 6. Maaş
edtMaas = ManagerForm.AddNewProEdit(FormPnl, 'edtMaas', 'Aylik Maas (TL)...');
edtMaas.Align = alTop; edtMaas.Height = 45; edtMaas.Margins.Top = 10; edtMaas.Margins.Left = 15; edtMaas.Margins.Right = 15;
edtMaas.clProSettings.FontColor = clAlphaColor.clWhite; edtMaas.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtMaas.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtMaas.clProSettings.BorderWidth = 1; edtMaas.clProSettings.RoundHeight = 8; edtMaas.clProSettings.RoundWidth = 8; edtMaas.SetclProSettings(edtMaas.clProSettings);
// 7. Tarih
edtTarih = ManagerForm.AddNewProEdit(FormPnl, 'edtTarih', 'Ise Baslama Tarihi (GG/AA/YYYY)...');
edtTarih.Align = alTop; edtTarih.Height = 45; edtTarih.Margins.Top = 10; edtTarih.Margins.Left = 15; edtTarih.Margins.Right = 15;
edtTarih.clProSettings.FontColor = clAlphaColor.clWhite; edtTarih.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A'); edtTarih.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569'); edtTarih.clProSettings.BorderWidth = 1; edtTarih.clProSettings.RoundHeight = 8; edtTarih.clProSettings.RoundWidth = 8; edtTarih.SetclProSettings(edtTarih.clProSettings);
// 8. Checkbox
cbSurekli = ManagerForm.AddNewCheckBox(FormPnl, 'cbSurekli', 'Surekli Calisan (Secilmezse Kisa Sureli)');
cbSurekli.Align = alTop; cbSurekli.Height = 30; cbSurekli.Margins.Top = 15; cbSurekli.Margins.Left = 20; cbSurekli.Margins.Right = 20;
cbSurekli.TextSettings.FontColor = clAlphaColor.clWhite;
// Kaydet Butonu
btnSaveHoca = fonksiyonlar.CreateMyProButton(ManagerForm, FormPnl, 'btnSaveHoca', '[+] Ogretmen Kaydet', '#10B981', 45);
btnSaveHoca.Align = alTop; btnSaveHoca.Margins.Top = 20; btnSaveHoca.Margins.Left = 15; btnSaveHoca.Margins.Right = 15; btnSaveHoca.Margins.Bottom = 20;
ManagerForm.AddNewEvent(btnSaveHoca, tbeOnClick, 'SaveTeacher');
// Liste Başlığı
fonksiyonlar.CreateSectionLabel(ManagerForm, ScrollManager, 'lblTitleList', 'KAYITLI OGRETMENLER LISTESI');
// Öğretmen Listesi
TeacherListView = ManagerForm.AddNewListView(ScrollManager, 'TeacherListView');
TeacherListView.Align = alTop;
TeacherListView.Height = 500;
TeacherListView.Margins.Top = 5; TeacherListView.Margins.Left = 15; TeacherListView.Margins.Right = 15; TeacherListView.Margins.Bottom = 20;
ManagerForm.AddNewEvent(TeacherListView, tbeOnClick, 'OnItemClick');
// --- POPUP MENU ---
BackdropPnl = ManagerForm.AddNewProPanel(ManagerForm, 'BackdropPnl');
BackdropPnl.Align = alClient;
BackdropPnl.clProSettings.IsTransparent = True;
BackdropPnl.Visible = False;
BackdropPnl.SetclProSettings(BackdropPnl.clProSettings);
ManagerForm.AddNewEvent(BackdropPnl, tbeOnClick, 'CloseBottomSheet');
SheetPnl = ManagerForm.AddNewProPanel(BackdropPnl, 'SheetPnl');
SheetPnl.Align = alCenter;
SheetPnl.Width = 340;
SheetPnl.Height = 350;
SheetPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
SheetPnl.clProSettings.RoundHeight = 20;
SheetPnl.clProSettings.RoundWidth = 20;
SheetPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#475569');
SheetPnl.clProSettings.BorderWidth = 2;
SheetPnl.SetclProSettings(SheetPnl.clProSettings);
lblSheetTitle = ManagerForm.AddNewProLabel(SheetPnl, 'lblSheetTitle', 'Ogretmen Islemleri');
lblSheetTitle.Align = alTop;
lblSheetTitle.Height = 65;
lblSheetTitle.Margins.Top = 15;
lblSheetTitle.clProSettings.FontColor = clAlphaColor.clWhite;
lblSheetTitle.clProSettings.FontSize = 18;
lblSheetTitle.clProSettings.FontHorzAlign = palCenter;
lblSheetTitle.clProSettings.TextSettings.Font.Style = [fsBold];
lblSheetTitle.SetclProSettings(lblSheetTitle.clProSettings);
btnCallTeacher = fonksiyonlar.CreateMyProButton(ManagerForm, SheetPnl, 'btnCallTeacher', 'Ogretmeni Ara', '#2563EB', 45);
btnCallTeacher.Align = alTop; btnCallTeacher.Margins.Left = 25; btnCallTeacher.Margins.Right = 25; btnCallTeacher.Margins.Bottom = 10;
ManagerForm.AddNewEvent(btnCallTeacher, tbeOnClick, 'CallTeacher');
btnMsgTeacher = fonksiyonlar.CreateMyProButton(ManagerForm, SheetPnl, 'btnMsgTeacher', 'WhatsApp`tan Yaz', '#10B981', 45);
btnMsgTeacher.Align = alTop; btnMsgTeacher.Margins.Left = 25; btnMsgTeacher.Margins.Right = 25; btnMsgTeacher.Margins.Bottom = 15;
ManagerForm.AddNewEvent(btnMsgTeacher, tbeOnClick, 'MsgTeacher');
btnSheetDelete = fonksiyonlar.CreateMyProButton(ManagerForm, SheetPnl, 'btnSheetDelete', 'Ogretmeni Sistemden Sil', '#EF4444', 45);
btnSheetDelete.Align = alTop; btnSheetDelete.Margins.Left = 25; btnSheetDelete.Margins.Right = 25; btnSheetDelete.Margins.Bottom = 15;
ManagerForm.AddNewEvent(btnSheetDelete, tbeOnClick, 'DeleteTeacher');
LoadTeachers;
ManagerForm.Run;
}
//////////////////// |
|
![]() |
|
Emr.Erkmn
Moderatör
Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Değil Puanlar: 945 |
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ı: 1 saat 45 Dakika Önce Saat 17:33 |
|
Tamamdır Veli
Teşekkür ederimhttps://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" 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 |