Merhaba Sorunu Şu Şekilde çözdüm Öncelikle ImageList Adında Bitmap türünde TList oluşturdum, Sonra ImageListLoad isimli bir fonksiyon oluşturup resimleri ImageList içine doldurdum. Daha sonra her satırda Bu liste içine karşılık gelen değerleri Image3 içinde gösterdim işim bittikten sonra da ImageList Free yaparak. gereksiz yük bindirme olayını kaldırdım.
İçerikleri aşağıda paylaşıyorum umarım ihtiyacı olanın işine yarar.
Bu da ImageListLoad Fonksiyonunun içeriği
İçerikleri aşağıda paylaşıyorum umarım ihtiyacı olanın işine yarar.
function TForm1.LoadData(Aranan:String):Boolean;
var
i,j:Integer;
LItem: TListViewItem;
Parametre,Parametre1,Parametre2,Parametre3,Parametre4:TStringList;
donen:String;
jSubPar: TJSONPair;
jsonStringData,StokKodu,StokAdi : String;
JsonValue: TJSONValue;
jsonData,JSONObject ,musteriler: TJSONObject;
dataArray: TJSONArray;
dataItem: TJSONObject;
ID,CC_CODE,CC_NAME:String;
ImageList: TList<TBitmap>;
Begin
try
try
Result:=True;
Result:=True;
Parametre:=TStringList.Create;
Parametre.Clear;
Parametre.Add('function=PurchasePriceResearchHistory');
Parametre.Add('aranan='+Aranan);
donen:= GetUrlJson(HTTP_ADREES,'?function=','PurchasePriceResearchHistory',Parametre);
jsonData := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(donen), 0) as TJSONObject;
jsonDataList := TList<TJSONObject>.Create;
try
dataArray :=jsonData.GetValue('Data') as TJSONArray;
if (dataArray.Count>0) then
Begin
dataArray.Items[0].TryGetValue('PURCHASE_PRICE_HISTORY_ID', ID);
dataArray.Items[0].TryGetValue('PRODUCT_CODE',CC_CODE);
dataArray.Items[0].TryGetValue('PRODUCT_NAME',CC_NAME);
for I := 0 to dataArray.Count - 1 do
begin
musteriler := dataArray.Get(i) as TJSONObject;
jsonDataList.Add(musteriler);
Inc(j);
end;
End;
ImageList := ImageListLoad(SERVER_IMAGE_ADDRESS, dataArray);
j:=1;
ListView1.Items.Clear;
ListView1.BeginUpdate;
for I := 0 to dataArray.Count-1 do
Begin
musteriler:= (dataArray.Get(i) as TJSONObject);
Application.ProcessMessages;
LItem := ListView1.Items.Add;
LItem.Height:=70;
LItem.Tag:=musteriler.GetValue<Integer>('PURCHASE_PRICE_HISTORY_ID');
LItem.ButtonText:=musteriler.GetValue<String>('CUSTOMER_TITLE')+' '+musteriler.GetValue<String>('PRODUCT_NAME');
LItem.Detail:=musteriler.GetValue<String>('PRODUCT_NAME');
LItem.Text := musteriler.GetValue<String>('CUSTOMER_TITLE')+' - '+musteriler.GetValue<String>('PRODUCT_NAME') ;
TListItemText(LItem.Objects.FindDrawable('Text1')).SelectedTextColor:=TAlphaColorRec.Darkgreen;
TListItemText(LItem.Objects.FindDrawable('Text1')).Text:=musteriler.GetValue<String>('PRODUCT_NAME');
TListItemText(LItem.Objects.FindDrawable('Text2')).Text:=musteriler.GetValue<String>('CUSTOMER_TITLE');
TListItemText(LItem.Objects.FindDrawable('Text4')).Text:=musteriler.GetValue<String>('RECORD_DATE');
TListItemText(LItem.Objects.FindDrawable('Text5')).Text:='Oluşturma Tarihi';
// LoadImageFromURL(Image2,SERVER_IMAGE_ADDRESS+musteriler.GetValue<String>('URL_PATH'));
//TListItemImage(LItem.Objects.FindDrawable('Image3')).Bitmap:=Image2.Bitmap;
TListItemImage(LItem.Objects.FindDrawable('Image3')).Bitmap:=ImageList[i];
Inc(j);
End;
ImageList.Free;
except
raise;
end;
finally
ListView1.EndUpdate;
end;
if j=0 then
Begin
ShowMessage('Listelenecek Data yok.!');
End else
Begin
End;
except on E: Exception do
end;
End;
Bu da ImageListLoad Fonksiyonunun içeriği
function ImageListLoad(const AServerAddress: string; const ADataArray: TJSONArray): TList<TBitmap>;
var
IdHTTP: TIdHTTP;
SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
ResimURL: string;
ResimStream: TMemoryStream;
I: Integer;
Bitmap: TBitmap;
begin
Result := TList<TBitmap>.Create;
IdHTTP := TIdHTTP.Create(nil);
SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
IdHTTP.IOHandler := SSLIOHandler;
ResimStream := TMemoryStream.Create;
try
for I := 0 to ADataArray.Count - 1 do
begin
ResimURL := AServerAddress + ADataArray.Items[I].GetValue<string>('URL_PATH');
try
IdHTTP.Get(ResimURL, ResimStream);
ResimStream.Position := 0;
Bitmap := TBitmap.Create;
Bitmap.LoadFromStream(ResimStream);
Result.Add(Bitmap);
except
Result.Add(nil);
end;
ResimStream.Clear;
end;
finally
ResimStream.Free;
end;
finally
IdHTTP.Free;
SSLIOHandler.Free;
end;
end;

