Sayfayı Yazdır | Pencereyi Kapat

tanımsız nesne hatası

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=1566
Tarih: 29 Haziran 2026 Saat 19:32
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: tanımsız nesne hatası
Mesajı Yazan: ErenTotan
Konu: tanımsız nesne hatası
Mesaj Tarihi: 29 Haziran 2026 Saat 16:11
var
  MyForm: TclForm;
  lblTitle: TclLabel;
  btnDailySchedule, btnStudentList: TclProButton;
  ScheduleForm: TclForm; 
  clListViewAddItem:TclListView;

procedure GoBack;
begin
ScheduleForm.Close;
end;


procedure GoToSchedule;
var // 1. HATA: Buraya 'var' yazmayı unutmuştuk
  lblScheduleTitle: TclLabel;
  btnBack: TclProButton;
  myListView: TclListView;
begin
  ScheduleForm := TclForm.Create(Self);
  
  // 2. HATA: Bu satırın sonundaki noktalı virgül (;) eksikti
  lblScheduleTitle := ScheduleForm.AddNewLabel(ScheduleForm,'lblScheduleTitle','📅 Etüt Programı');
  
  lblScheduleTitle.Align := alTop;
  lblScheduleTitle.Margins.Top := 40;
  lblScheduleTitle.Height := 40;
  lblScheduleTitle.TextSettings.Font.Size := 24;
  lblScheduleTitle.TextSettings.Font.Style := [fsBold];
  myListView:= ScheduleForm.AddNewListView(ScheduleForm,'myListView');
  myListView.Align:=alClient
  ScheduleForm.clListViewAddItem(myListView,'clText','Etüt 1 : Matematik','14:00',' ');
  btnBack := ScheduleForm.AddNewProButton(ScheduleForm,'btnBack','⬅ Geri Dön');
  btnBack.Align := alBottom;
  btnBack.Height := 60;
  btnBack.Margins.Bottom := 30;
  btnBack.Margins.Left := 30;
  btnBack.Margins.Right := 30;
  
  btnBack.clProSettings.BackgroundColor := clAlphaColor.clHexToColor('#EF4444');
  btnBack.clProSettings.RoundHeight := 15;
  btnBack.clProSettings.RoundWidth := 15;
  btnBack.clProSettings.FontColor := clAlphaColor.clHexToColor('#FFFFFF');
  btnBack.clProSettings.FontSize := 16;
  btnBack.SetclProSettings(btnBack.clProSettings);
  
  ScheduleForm.AddNewEvent(btnBack, tbeOnClick, 'GoBack');
  
  ScheduleForm.Run;
end;

begin
  MyForm := TclForm.Create(Self);
  
  // Başlık Alanı
  lblTitle := MyForm.AddNewLabel(MyForm, 'lblTitle', 'Edu-Assistant Pro');
  lblTitle.StyledSettings := ssFamily;
  lblTitle.TextSettings.Font.Size := 28;
  lblTitle.TextSettings.Font.Style := [fsBold];
  lblTitle.Align := alTop;
  lblTitle.Margins.Top := 30;
  lblTitle.Height := 50;

  // Bugünün Programı Pro Butonu
  btnDailySchedule := MyForm.AddNewProButton(MyForm, 'btnDailySchedule', '📅 Bugünkü Etütler');
  btnDailySchedule.Align := alTop;
  btnDailySchedule.Height := 70;
  btnDailySchedule.Margins.Top := 40;
  btnDailySchedule.Margins.Left := 30;
  btnDailySchedule.Margins.Right := 30;
  
  btnDailySchedule.clProSettings.BackgroundColor := clAlphaColor.clHexToColor('#0EA5E9');
  btnDailySchedule.clProSettings.RoundHeight := 15;
  btnDailySchedule.clProSettings.RoundWidth := 15;
  btnDailySchedule.clProSettings.FontColor := clAlphaColor.clHexToColor('#FFFFFF');
  btnDailySchedule.clProSettings.FontSize := 18;
  btnDailySchedule.SetclProSettings(btnDailySchedule.clProSettings);

  // 3. EKSİK: Tetiği (Event) buraya ekledik ki butona basınca sayfa açılsın
  MyForm.AddNewEvent(btnDailySchedule, tbeOnClick, 'GoToSchedule');

  // Öğrenci Listesi Pro Butonu
  btnStudentList := MyForm.AddNewProButton(MyForm, 'btnStudentList', '👥 Öğrenci Portföyü');
  btnStudentList.Align := alTop;
  btnStudentList.Height := 70;
  btnStudentList.Margins.Top := 20;
  btnStudentList.Margins.Left := 30;
  btnStudentList.Margins.Right := 30;
  
  btnStudentList.clProSettings.BackgroundColor := clAlphaColor.clHexToColor('#1E293B');
  btnStudentList.clProSettings.RoundHeight := 15;
  btnStudentList.clProSettings.RoundWidth := 15;
  btnStudentList.clProSettings.FontColor := clAlphaColor.clHexToColor('#FFFFFF');
  btnStudentList.clProSettings.FontSize := 18;
  btnStudentList.SetclProSettings(btnStudentList.clProSettings);

  MyForm.Run;
end;
https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" 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">



Cevaplar:
Mesajı Yazan: kayra12
Mesaj Tarihi: 29 Haziran 2026 Saat 16:48
var
  // --- Form ---
  MyForm: TclForm;
  
  // --- Sayfa Düzenleri (Layouts) ---
  LayoutMainPage: TclLayout;
  LayoutSchedulePage: TclLayout;
  
  // --- Etiketler (Metinler) ---
  lblTitle: TclLabel;
  lblScheduleTitle: TclLabel;
  
  // --- Butonlar ---
  btnDailySchedule: TclProButton;
  btnStudentList: TclProButton;
  btnBack: TclProButton;
  
  // --- Listeler ---
  myListView: TclListView;

void GoBack;
{
  // Geri dönüldüğünde Etüt sayfasını gizle, Ana sayfayı göster
  LayoutSchedulePage.Visible = False;
  LayoutMainPage.Visible = True;
}

void GoToSchedule;
{
  // Etütlere tıklandığında Ana sayfayı gizle, Etüt sayfasını göster
  LayoutMainPage.Visible = False;
  LayoutSchedulePage.Visible = True;
}

{
  MyForm = TclForm.Create(Self);
  
  // ==========================================
  // 1. ANA SAYFA DÜZENİ (LayoutMainPage)
  // ==========================================
  LayoutMainPage = MyForm.AddNewLayout(MyForm, 'LayoutMainPage');
  LayoutMainPage.Align = alClient;
  LayoutMainPage.Visible = True; // İlk başta bu sayfa görünecek

  // Başlık Alanı
  lblTitle = MyForm.AddNewLabel(LayoutMainPage, 'lblTitle', 'Edu-Assistant Pro');
  lblTitle.StyledSettings = ssFamily;
  lblTitle.TextSettings.Font.Size = 28;
  lblTitle.TextSettings.Font.Style = [fsBold];
  lblTitle.Align = alTop;
  lblTitle.Margins.Top = 30;
  lblTitle.Height = 50;

  // Bugünün Programı Pro Butonu
  btnDailySchedule = MyForm.AddNewProButton(LayoutMainPage, 'btnDailySchedule', '📅 Bugünkü Etütler');
  btnDailySchedule.Align = alTop;
  btnDailySchedule.Height = 70;
  btnDailySchedule.Margins.Top = 40;
  btnDailySchedule.Margins.Left = 30;
  btnDailySchedule.Margins.Right = 30;
  
  btnDailySchedule.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0EA5E9');
  btnDailySchedule.clProSettings.RoundHeight = 15;
  btnDailySchedule.clProSettings.RoundWidth = 15;
  btnDailySchedule.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  btnDailySchedule.clProSettings.FontSize = 18;
  btnDailySchedule.SetclProSettings(btnDailySchedule.clProSettings);

  MyForm.AddNewEvent(btnDailySchedule, tbeOnClick, 'GoToSchedule');

  // Öğrenci Listesi Pro Butonu
  btnStudentList = MyForm.AddNewProButton(LayoutMainPage, 'btnStudentList', '👥 Öğrenci Portföyü');
  btnStudentList.Align = alTop;
  btnStudentList.Height = 70;
  btnStudentList.Margins.Top = 20;
  btnStudentList.Margins.Left = 30;
  btnStudentList.Margins.Right = 30;
  
  btnStudentList.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
  btnStudentList.clProSettings.RoundHeight = 15;
  btnStudentList.clProSettings.RoundWidth = 15;
  btnStudentList.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  btnStudentList.clProSettings.FontSize = 18;
  btnStudentList.SetclProSettings(btnStudentList.clProSettings);


  // ==========================================
  // 2. ETÜT PROGRAMI SAYFA DÜZENİ (LayoutSchedulePage)
  // ==========================================
  LayoutSchedulePage = MyForm.AddNewLayout(MyForm, 'LayoutSchedulePage');
  LayoutSchedulePage.Align = alClient;
  LayoutSchedulePage.Visible = False; // İlk başta gizli olacak

  lblScheduleTitle = MyForm.AddNewLabel(LayoutSchedulePage, 'lblScheduleTitle', '📅 Etüt Programı');
  lblScheduleTitle.Align = alTop;
  lblScheduleTitle.Margins.Top = 40;
  lblScheduleTitle.Height = 40;
  lblScheduleTitle.TextSettings.Font.Size = 24;
  lblScheduleTitle.TextSettings.Font.Style = [fsBold];
  
  myListView = MyForm.AddNewListView(LayoutSchedulePage, 'myListView');
  myListView.Align = alClient; 
  
  // Listenin boş kalmaması için JSON veri yüklemesi
  myListView.clLoadListViewDataFromDataset(
  Clomosy.ClDataSetFromJSON('[{"MAIN_TEXT":"Etüt 1 : Matematik", "SUB_TEXT":"14:00"}]'));
  
  // Geri Dön Butonu
  btnBack = MyForm.AddNewProButton(LayoutSchedulePage, 'btnBack', '⬅ Geri Dön');
  btnBack.Align = alBottom;
  btnBack.Height = 60;
  btnBack.Margins.Bottom = 30;
  btnBack.Margins.Left = 30;
  btnBack.Margins.Right = 30;
  
  btnBack.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#EF4444');
  btnBack.clProSettings.RoundHeight = 15;
  btnBack.clProSettings.RoundWidth = 15;
  btnBack.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  btnBack.clProSettings.FontSize = 16;
  btnBack.SetclProSettings(btnBack.clProSettings);
  
  MyForm.AddNewEvent(btnBack, tbeOnClick, 'GoBack');

  MyForm.Run;
}       Olurdu ama çok daha zahmetli olurdu.

Bu satırı kullanmamızın tek bir ana sebebi var: TclListView (gelişmiş liste bileşeni) verileri tek tek eklemek yerine, toplu bir veri paketi olarak almayı sever.

Eski komut olan clListViewAddItem ya hata veriyordu ya da listeyi boş bırakıyordu. Çünkü sistem artık "bana veriyi bir veritabanı tablosu gibi bütün olarak ver" diyor.

Gerçek bir veritabanı bağlamak şu aşamada uzun süreceği için, biz de veriyi JSON formatında yazıp sahte bir mini-veritabanı tablosuna çevirdik (ClDataSetFromJSON) ve listeye tek seferde yükledik.

https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" 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