Sayfayı Yazdır | Pencereyi Kapat

tbeOnTap da hata alıyorum

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1047
Tarih: 03 Temmuz 2025 Saat 11:35
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: tbeOnTap da hata alıyorum
Mesajı Yazan: turgutkir
Konu: tbeOnTap da hata alıyorum
Mesaj Tarihi: 02 Temmuz 2025 Saat 15:00
Personel seçimini yapıp "Devam Et" butonuna tıkladığımda hiçbir geri dönüş almıyor hata da vermiyor sebebi ne olabilir.

//------------------------------------------------------------------
//  MainCode
//------------------------------------------------------------------

var
  MainForm         : TclForm;
  lblTitle, lblDesc: TclLabel;
  cmbRole          : TclComboBox;
  btnNext          : TclButton;


procedure OpenPanel;
var
  roleVal : String;
begin
  roleVal := LowerCase(cmbRole.Text);      // 'personel' / 'yönetici'

  if      roleVal = 'personel' then Clomosy.RunUnit('uPersonnelForm')
  else if roleVal = 'yönetici' then Clomosy.RunUnit('uManagerForm')
  else    ShowMessage('Lütfen önce rol seçin.');
end;


begin
  MainForm := TclForm.Create(Self);
  MainForm.clSetCaption('Rol Seçimi');

  // Başlık
  lblTitle := MainForm.AddNewLabel(MainForm,'lblTitle',
    'Ziyaretçi Yönetim Sistemine Hoş Geldiniz');
  lblTitle.Font.Size   := 18;
  lblTitle.Align       := alTop;
  lblTitle.Margins.Top := 24;

  // Açıklama
  lblDesc := MainForm.AddNewLabel(MainForm,'lblDesc',
    'Lütfen rolünüzü seçin:');
  lblDesc.Align       := alTop;
  lblDesc.Margins.Top := 12;

  // Rol seçimi
  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   := 0;            // varsayılan: Personel

  // Devam butonu
  btnNext := MainForm.AddNewButton(MainForm,'btnNext','Devam Et');
  btnNext.Align       := alTop;
  btnNext.Margins.Top := 32;
  btnNext.Width       := 200;
  btnNext.Height      := 40;           // tıklanabilir alan
  MainForm.AddNewEvent(btnNext, tbeOnClick, 'OpenPanel');  // ← YALNIZCA tbeOnClick

  MainForm.Run;
end.

uPersonnelForm :

//------------------------------------------------------------------
//   Personel Formu
//------------------------------------------------------------------

var
  FrmPer              : TclForm;
  edtCompany, edtLoc  : TclEdit;
  edtDate             : TclEdit;        // tarih metin kutusu
  memoPurpose,
  memoNotes           : TclMemo;
  chkSale             : TclCheckBox;
  btnSave             : TclButton;
  qInsert             : TclSqlQuery;
  LoggedUserID        : Integer;


procedure SaveMeeting;
var
  saleVal : String;
begin
  if edtCompany.Text = '' then
  begin
    ShowMessage('Firma / kişi adı boş olamaz!');
    Exit;
  end;

  if edtDate.Text = '' then
  begin
    ShowMessage('Tarih alanı boş olamaz!');
    Exit;
  end;

  saleVal := IfThen(chkSale.IsChecked,'1','0');

  try
    qInsert.SQL.Text :=
      'INSERT INTO Meetings ' +
      '(UserID,CompanyName,MeetingDate,Location,Purpose,IsSale,Notes) VALUES (' +
        IntToStr(LoggedUserID) + ',' +
        QuotedStr(edtCompany.Text) + ',' +
        QuotedStr(edtDate.Text) + ',' +
        QuotedStr(edtLoc.Text) + ',' +
        QuotedStr(memoPurpose.Text) + ',' +
        saleVal + ',' +
        QuotedStr(memoNotes.Text) + ')';

    qInsert.ExecSQL;
    ShowMessage('Kayıt başarılı');

    edtCompany.Text   := '';
    edtLoc.Text       := '';
    edtDate.Text      := '';
    memoPurpose.Text  := '';
    memoNotes.Text    := '';
    chkSale.IsChecked := False;

  except
    ShowMessage('Hata: ' + LastExceptionMessage);
  end;
end;


procedure CreateForm;
begin
  FrmPer := TclForm.Create(Self);
  FrmPer.clSetCaption('Personel Paneli');

  edtCompany  := FrmPer.AddNewEdit(FrmPer,'edtCompany','Firma / Kişi');
  edtDate     := FrmPer.AddNewEdit(FrmPer,'edtDate','Tarih (yyyy-MM-dd hh:nn)');
  edtLoc      := FrmPer.AddNewEdit(FrmPer,'edtLoc','Yer');
  memoPurpose := FrmPer.AddNewMemo(FrmPer,'memoPurpose','Amaç');
  chkSale     := FrmPer.AddNewCheckBox(FrmPer,'chkSale','Satış Gerçekleşti');
  memoNotes   := FrmPer.AddNewMemo(FrmPer,'memoNotes','Notlar');

  btnSave := FrmPer.AddNewButton(FrmPer,'btnSave','Kaydet');
  FrmPer.AddNewEvent(btnSave, tbeOnClick, 'SaveMeeting');


  LoggedUserID := 1;   // örnek kullanıcı

  // DB bağlantısı
  qInsert := TclSqlQuery.Create(nil);
  Clomosy.DBSQLServerConnect(
    'SQL Server',
    'TURGUT-KIR\\ATIKER',
    'sa',
    '1',
    'TURGUT25',
    1433);
  qInsert.Connection := Clomosy.DBSQLServerConnection;

  FrmPer.Run;
end;


procedure RunUnit;
begin
  if not Assigned(FrmPer) then
    CreateForm
  else
    FrmPer.clShow;
end;





Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 02 Temmuz 2025 Saat 15:44
Merhaba Turgut,
Kodun genel mantığı doğru ve doğru noktalara ulaşmışsın. Ancak yazım kurallarını kullanmakta olduğun dil yapısına uygun şekilde düzenlemen gerekiyor. Aşağıda dikkat etmen gereken temel noktaları özetliyorum:

 procedure yerine void kullanmalısın.

 begin ... end; yerine { } süslü parantezler kullanılmalı.

 Atamalarda := değil = kullanılmalıdır.
Değişkenlere değer verirken = operatörü kullanılır.

Koşullarda karşılaştırma = değil == ile yapılmalıdır.

Bu yapıya dikkat ettiğin sürece kodların hem okunabilir olacak hem de doğru şekilde derlenecektir.




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