MainCode:
//------------------------------------------------------------------
// MainCode – Rol seçimi ekranı
//------------------------------------------------------------------
var
MainForm : TclForm;
lblTitle, lblDesc: TclLabel;
cmbRole : TclComboBox;
btnNext : TclButton;
/*------------------------------ OpenPanel ------------------------*/
void OpenPanel;
var
roleVal : String;
{
roleVal = cmbRole.GetValueIndex(cmbRole.ItemIndex);
if roleVal == 'personel' {
Clomosy.RunUnit('uPersonnelForm');
} else if roleVal == 'yonetici' {
Clomosy.RunUnit('uManagerForm');
} else {
ShowMessage('Lütfen önce rol seçin.');
}
}
/*----------------------------- Form kurulumu --------------------*/
{
MainForm = TclForm.Create(Self);
MainForm.clSetCaption('Rol Seçimi');
lblTitle = MainForm.AddNewLabel(MainForm,'lblTitle',
'Ziyaretçi Yönetim Sistemine Hoş Geldiniz');
lblTitle.Font.Size = 18;
lblTitle.Align = alTop;
lblTitle.Margins.Top= 24;
lblDesc = MainForm.AddNewLabel(MainForm,'lblDesc','Lütfen rolünüzü seçin:');
lblDesc.Align = alTop;
lblDesc.Margins.Top = 12;
cmbRole = MainForm.AddNewComboBox(MainForm,'cmbRole');
cmbRole.AddItem('Personel','personel');
cmbRole.AddItem('Yönetici','yonetici');
cmbRole.Align = alTop;
cmbRole.Margins.Top = 20;
cmbRole.Width = 200;
cmbRole.ItemIndex = -1;
btnNext = MainForm.AddNewButton(MainForm,'btnNext','Devam Et');
btnNext.Align = alTop;
btnNext.Margins.Top = 32;
btnNext.Width = 200;
btnNext.Height = 40;
MainForm.AddNewEvent(btnNext, tbeOnClick, 'OpenPanel');
MainForm.Run;
}
uManagerForm:
//------------------------------------------------------------------
// uManagerForm – Yönetici Paneli
//------------------------------------------------------------------
var
FrmMgr : TclForm;
lstMeetings : TclListView;
edtStart, edtEnd : TclProEdit; // tarih girişleri
cmbUser : TclComboBox;
btnFilter : TclProButton;
qData : TclSqlQuery;
/*--------------- personel listesini doldur --------------------*/
void LoadUsers;
var
q : TclSqlQuery;
{
q = Clomosy.DBSQLServerQueryWith(
'SELECT ID, FullName FROM Users ORDER BY FullName');
cmbUser.Clear;
while (not q.EOF) {
cmbUser.AddItem(
q.FieldByName('FullName').AsString, // görünen metin
q.FieldByName('ID').AsString // gizli değer
);
q.Next;
};
}
/*--------------- tarih + personel filtresi --------------------*/
void ApplyFilter;
var
sql : String;
uid : String;
{
sql =
'SELECT M.ID AS RECORD_GUID, ' +
' U.FullName + '' - '' + M.CompanyName AS MAIN_TEXT, ' +
' CONVERT(nvarchar, M.MeetingDate,104) + '' '' + ' +
' CONVERT(nvarchar, M.MeetingDate,108) AS SUB_TEXT ' +
'FROM Meetings M ' +
'LEFT JOIN Users U ON U.ID = M.UserID ' +
'WHERE 1=1';
/* Tarih aralığı */
sql =
sql + ' AND M.MeetingDate BETWEEN ' +
QuotedStr(Trim(edtStart.Text) + ' 00:00') +
' AND ' +
QuotedStr(Trim(edtEnd.Text) + ' 23:59');
/* Personel filtresi */
if (cmbUser.ItemIndex <> -1) {
uid = cmbUser.GetValueIndex(cmbUser.ItemIndex);
if (uid <> '') {
sql = sql + ' AND M.UserID = ' + uid;
};
};
try
qData.SQL.Text = sql;
qData.Open;
lstMeetings.clLoadListViewDataFromDataset(qData);
except
ShowMessage('Sorgu hatası: ' + LastExceptionMessage);
};
}
/*--------------- formu oluştur -------------------------------*/
void CreateForm;
{
FrmMgr = TclForm.Create(Self);
FrmMgr.clSetCaption('Yönetici Paneli');
FrmMgr.SetBounds(120, 70, 720, 560);
/* ---------- SQL Server bağlantısı ---------- */
if not Clomosy.DBSQLServerConnect(
'SQL Server',
'TURGUT-KIR\\ATIKER',
'TURGUT25',
'sa',
'1',
1433
) {
ShowMessage('Veritabanına bağlanılamadı. Sunucu veya kimlik bilgilerini kontrol edin.');
Exit; // Bağlantı yoksa formu açmıyoruz
};
/* Sorgu nesnesi */
qData = TclSqlQuery.Create(nil);
qData.Connection = Clomosy.DBSQLServerConnection;
/* UI bileşenleri */
edtStart = FrmMgr.AddNewProEdit(FrmMgr,'edtStart','Başlangıç (yyyy-MM-dd)');
edtEnd = FrmMgr.AddNewProEdit(FrmMgr,'edtEnd' ,'Bitiş (yyyy-MM-dd)');
cmbUser = FrmMgr.AddNewComboBox(FrmMgr,'cmbUser');
btnFilter = FrmMgr.AddNewProButton(FrmMgr,'btnFilter','Uygula');
FrmMgr.AddNewEvent(btnFilter, tbeOnClick, 'ApplyFilter');
lstMeetings = FrmMgr.AddNewListView(FrmMgr,'lstMeetings');
lstMeetings.Align = alClient;
/* Varsayılan tarih aralığı = bugünün tarihi */
edtStart.Text = FormatDateTime('yyyy-MM-dd', Now);
edtEnd.Text = edtStart.Text;
/* Veri yükle */
LoadUsers();
ApplyFilter();
FrmMgr.Run;
}
CreateForm();