Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Listview Hatası
#1
Merhaba, android de listview ImageListItemBottomDetail modunda (appearance) modunda resim, text ve detail alanlarına veri ekleyerek listeleme yapıyorum. Uygulamaya resimleri Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol adreste bulunan örneği kullanarak yüklüyorum.

Buraya kadar herşey tamam. 

Ancak uygulama windowsta sorunsuz çalışırken android de text veya detail alanlarına eklenen cümlelerin kelimelerini dağıtıyor. Bazı harfler büyüyor, bazıları küçülüyor veya bazılarının bir kısmı gözülmüyor. Örneğin harfin üst kısmı yok.

Listview de text veya detail alanlarının özelliklerinde hiç bir işlem yapmıyorum. Font, size vs. ama yine de bu hatayı alıyorum.

Hata resmi : Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol 

Ne yaptıysam sorunu çözemedim. 

Listviewe veri yüklediğim kodum

procedure Tortak_fonksiyonlar.ilan_listesi_Yukleme_islemi(arama_turu : string;uyeid : string;kategori : string) ;
var
aTask: ITask;
aobj: ISuperArray;
obj2: ISuperObject;
mkl: Integer;
LItem: TListViewItem;
S,web_servis_string,birlesik_resim_yolu: String;
INIDosya : TIniFile;
data_id,data_book_id,data_ilan_adi, data_ilan_resim1,data_yayin_yili,data_yayin_yeri,data_dili,data_konu,data_toplam_sayfa_sayisi,data_konu_detay,data_yazari,data_yayin_evi : string;
begin
aTask := TTask.Create(
procedure
begin

Form_kitap_listesi.ListView1.BeginUpdate;

web_servis_string:='WEB SERVİS ADRESİ';

 with TIdHTTP.Create do
begin
  try
    S := Get(web_servis_string);
  finally
    Disconnect;
    DisposeOf;
  end;
end;

 aobj := SA(S);

 mkl:=0;
  while mkl <= aobj.Length-1 do
   begin
     obj2 := aobj.O[mkl];

  if GetJsonValue(obj2,'durum')='Yok' then
    begin

   Form_kitap_listesi.baslik.Text:='Kitap Listesi';
   ilan_yukleme_durumu:='Tamam';

   end
   else
   begin

  data_id:=GetJsonValue(obj2,'id');
  data_book_id:=GetJsonValue(obj2,'BookId');
  data_ilan_adi:=GetJsonValue(obj2,'Name');
  data_yazari:=GetJsonValue(obj2,'yazar');
  data_yayin_yeri:=GetJsonValue(obj2,'yayinyeri');
  data_ilan_sayisi:=StrToInt(GetJsonValue(obj2,'ilan_sayisi'));
  data_ilan_resim1:=GetJsonValue(obj2,'FrontCover');
   
   if (data_ilan_resim1<>'') then
 begin
   birlesik_resim_yolu:='http://www.com/resim_kucultme.php?file='+data_ilan_resim1;
   //birlesik_resim_yolu:='http://icons.iconarchive.com/icons/paomedia/small-n-flat/256/book-icon.png';
 end
 else
 begin
   birlesik_resim_yolu:='http://www.com/images/resim_yok.png';
 end;

  LItem := Form_kitap_listesi.ListView1.Items.Add;
  LItem.ImageIndex := ilan_baslangic_degeri;
  LItem.Text:=data_ilan_adi;
  LItem.Detail:=data_yazari+#13#10+data_yayin_yeri;
  LItem.Data['0']:=data_toplam_sayfa_sayisi;
  LItem.Data['1']:=data_book_id;
  LItem.Data['2']:=data_id;

 setLogo(Form_kitap_listesi.ListView1, birlesik_resim_yolu, ilan_baslangic_degeri);
  end;
  globan_nesne_sayisi:=globan_nesne_sayisi+1;
  ilan_baslangic_degeri:=ilan_baslangic_degeri+1;

  mkl:=mkl+1;
  obj2.Next;

end;

 if obj2.GetEoF=False then
   begin   
   ilan_yukleme_durumu:='Tamam';

    Form_kitap_listesi.ListView1.EndUpdate;
    Form_kitap_listesi.ListView1.EndUpdate;
 
end);

aTask.Start;

end;


Resim Yüklediğim kod
procedure Tortak_fonksiyonlar.setLogo(ListView: TListView; url: string; id: Integer);
var
 T: TThread;
begin
  T := TThread.CreateAnonymousThread(
  procedure
  var
    HTTP: TIdHTTP;
    MS: TMemoryStream;
  begin
    MS := TMemoryStream.Create;
    HTTP := TIdHTTP.Create(nil);
    try
      try
        HTTP.Get(url, MS);
        TThread.Synchronize(TThread.CurrentThread,
          procedure()
          begin
           ListView.Items[id].Bitmap.LoadFromStream(MS);
          end);
      except
        MS.Free;
      end;
    finally
      HTTP.Free;
    end;
  end);
  T.start;
end;


Sizden ricam, bu sorunu çözmeme yardım ederseniz size minnettar kalırım.
Cevapla
#2
Merhaba,
Eklenmiş olduğunuz resimde hata olarak tabir etmiş olduğunuz ve işaretlediğiniz kısımlarda, yalnızca r harflerinin aşağıya kaydığı görünüyor. 
Kodlarınızda karakterleri etkileyecek bir direktif de göremedim.
Bu durumda akla gelen tek bir şey var; 
O alanın karakter seti ile ilgili bir sorun olabileceğidir.

Çözüm için aşağıdaki gibi birkaç yöntem deneyebilirsiniz.
1- Kitap yazarı text'ini silin ve yeniden oluşturun. Böylece tasarım ve TText property'lerinden kaynaklanan bir sorun varsa düzelmiş olur.
2- Kitap yazarı alanında göstermiş olduğunuz veriyi karşı sunucudan aldıktan sonra Encoding ile UTF8 veya benzeri bir karakter setine dönüştürerek, kullanın.
3- Zor bir ihtimal yine de denemekte fayda var; o alanda varsayılan font tipinin değiştirilmesi.
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
Teşekkürler hocam hemen deneyeceğim

Hocam muhtemel hata sizin 2. seçenekte belirttiğiniz karakter set hatası ama UTF8 yaparak sorunu çözemedim. Ancak aşağıdaki kod işimi gördü gibi. Bir kaç yük defa daha test edip sonuca bakacağım. İlginiz için teşekkürler.

procedure TForm_kitap_listesi.FormResize(Sender: TObject);
begin
ListView1.BeginUpdate;
ListView1.ItemAppearanceObjects.ItemObjects.Text.Width:=ListView1.Width-114;
ListView1.ItemAppearanceObjects.ItemObjects.Detail.Width:=ListView1.Width-114;
ListView1.EndUpdate;
end;
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Listview index number update YasinDalli 3 192 20-09-2018, Saat: 15:00
Son Yorum: mrmarman
  Listview data verilerini alma ahmetb 12 369 16-09-2018, Saat: 16:17
Son Yorum: ahmetb
  Floating Point Value Hatası ilgazinho 4 237 28-08-2018, Saat: 15:13
Son Yorum: ilgazinho
  Listview tedit ahmetb 2 146 17-08-2018, Saat: 20:31
Son Yorum: narkotik
  iOS da İnterbase veritabanı derleme hatası nguzeller 0 153 26-07-2018, Saat: 21:44
Son Yorum: nguzeller



Konuyu Okuyanlar: 1 Ziyaretçi