Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TabControl delete adres hatası
#1
Merhaba, 


TabControl seçili olanı silmek istediğimde adres hatası alıyorum. 
Fakat Showmessage ile index numarasını kontrol ettiğimde sorunsuz olarak alabiliyorum. Adres hatası neden alıyor olabilirim?


procedure TWebBrowserForm.Button2Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to TabControlBrowser.TabCount - 1 do
  begin
    if TabControlBrowser.Tabs[i].IsSelected = True then
    begin
      // showmessage(inttostr(TabControlBrowser.Tabs[I].Index));
      TabControlBrowser.Delete(TabControlBrowser.Tabs[I].Index);
    end;
  end;
end;
Cevapla
#2
Merhaba,
Seçili olan tab'ı silmek için döngü işlemine ihtiyacınız yok.
Doğrudan TabControl'ün ActiveTab özelliğini kullanabilirsiniz.
TabControl1.Delete(TabControl1.ActiveTab.Index);
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(06-03-2020, Saat: 09:39)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Seçili olan tab'ı silmek için döngü işlemine ihtiyacınız yok.
Doğrudan TabControl'ün ActiveTab özelliğini kullanabilirsiniz.
TabControl1.Delete(TabControl1.ActiveTab.Index);

Teşekkür ederim, TabItemden aradan silince sorun yok. En son TabItem silince yine adres hatası alıyorum. 
TabControl kaldırdım tekrar eklemim durum aynı adres hatası vermeye devam ediyor.
Cevapla
#4
(05-03-2020, Saat: 22:00)Kerembacioglu Adlı Kullanıcıdan Alıntı: Merhaba, 


TabControl seçili olanı silmek istediğimde adres hatası alıyorum. 
Fakat Showmessage ile index numarasını kontrol ettiğimde sorunsuz olarak alabiliyorum. Adres hatası neden alıyor olabilirim?


procedure TWebBrowserForm.Button2Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to TabControlBrowser.TabCount - 1 do
  begin
    if TabControlBrowser.Tabs[i].IsSelected = True then
    begin
      // showmessage(inttostr(TabControlBrowser.Tabs[I].Index));
      TabControlBrowser.Delete(TabControlBrowser.Tabs[I].Index);
    end;
  end;
end;

Döngüyü aşağıdaki gibi terse çevir.. 

for I := TabControlBrowser.TabCount -1 downto 0 do
  begin
   if TabControlBrowser.Tabs[i].IsSelected = True then
   begin
     // showmessage(inttostr(TabControlBrowser.Tabs[I].Index));
     TabControlBrowser.Delete(TabControlBrowser.Tabs[I].Index);
   end;
 end;
Cevapla
#5
@Kerembacioglu bey, sanırım konuyu çözmüş, bundan bizim haberimiz yok (son yorumundan sonra 3 gündür formu ziyaret etmemiş, yada bu konu kendisi için çok da acil değil  Sad ).
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#6
Sayın @Fesih ARSLAN hocam aslında cevap yazmayacaktım ama belki başka birine lazım olur diye yazmayı düşündüm. Alıp kaçan, bulup paylaşmayan insan çok.. Ben bildiğimi paylaşmanın vicdan rahatlığını yaşıyorum Smile
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android deployment E0004 PAClient Hatası behcet.tolga 2 120 23-03-2020, Saat: 16:42
Son Yorum: behcet.tolga
  Socket error #110. connection time out hatası hbulus 6 378 05-02-2020, Saat: 13:11
Son Yorum: adelphiforumz
  OrangeUI ComboBox hatası Bay_Y 2 316 27-01-2020, Saat: 09:40
Son Yorum: Bay_Y
  FireDac Mysql Android hatası mcuyan 2 416 02-01-2020, Saat: 23:34
Son Yorum: mcuyan
  Android 9 - Network Bağlantı Hatası (ClearText) Fesih ARSLAN 5 853 26-10-2019, Saat: 08:38
Son Yorum: narkotik



Konuyu Okuyanlar: 1 Ziyaretçi