Daha önceki bütün sürümlerde çalışan kod çalışmıyor daha doğrusu text ile ilgili kodlar hata vermiyor ancak listede yazılar görünmüyor. item çizgileri var yazılar yok. Renkleri, fontları, visible'ları, genişlikleri, yükseklikleri herşeyi değiştirdim yine yazılar görünmüyor.
ikinci bir problem de yine aşağıdaki kodlarda indirimOlustur(LItem,LImage); ResimOlustur(LItem,LImage,'resim',150,150); komutlarında access violation hatası veriyor.
(04-08-2021, Saat: 20:29)engerex Adlı Kullanıcıdan Alıntı: Boş bir proje oluşturup bunda dener misiniz?
Buraya yazmadan denemiştim. İnternette araştırdım. Başka yollar da denedim. Örneğin
litem := ListView.Items.Add;
litem.Height := 350;
litem.data['text1] := 'Deneme';
litem.data['text2] := 'test';
ya da
multidetail.detail1 := 'deneme'
multidetail.detail2 := 'test'
text ile olan sadece son yazılanı yazıyor.
multidetail'de sadece 3 tane eklenebiliyor.
Text alanı ile ilgili bir düzenleme yapmışlar ama ne olduğunu çözemedim.
Aynı problem delphi 11'de de mevcut. (Yani yazılar gelmiyor) Kimse kullanmıyor mu bu kodları?
Buna ek olarak Delphi 11
ObjectOlustur( LItem, LData[1], 'Data1' , veri1 , 0, 300, 0, 20, 12, TAlphaColorRec.Red, True, [],TTextAlign.Center ); Satırı için Range Check Error hatasını da ekledi.
Başarılar.
Eski bir metod olsa da merak edenler için bir örnek proje hazırladım.
Örnekte DelphiCan RSS ile XML formatındaki ilk 15 başlığı alarak ListView'de gösteren, bu içerikten herhangi birine tıklayınca varsayılan browser ile açıp gösteren giriş seviyesi minik bir proje.
Örnekten edinilebilecek bilgiler :
Bir web sitesine erişim yapılarak içeriğinin alınması. (örnekte XML içerik geliyor)
TIdHttp Indy kullanımı yerineTHTTPClient kullanımı ile SSL kütüphaneleri gereği olmadan siteye SSL erişim imkanı.
XML içerik veri okuma yöntemleri
WEB Tarih / Saat verisinin yerel tarih saate dönüştürme
Record yapıları
Array ( dizi ) yapıları
Android / MSWindows şartlı kod yazımı
Class ( Sınıf ) oluşturma ve kullanma
Kaynak kodları aşağıda bulabilir ve inceleyebilirsiniz.
Hem android hem de windows uyumlu FMX projedir.
Forma (2) tane TButon, (1) tane de TListView bırakmanız deneme için yeterlidir. Birinci buton listeyi dolduru ikincisi formu kapatır.
Main Form :
Uses
{$IF Defined(ANDROID)}
FMX.Platform.Android,
{$ENDIF}
DelphiCanHelperU;
var
FDelphiCan : TDelphiCanHelper;
procedure TForm1.Button1Click(Sender: TObject);
begin
if NOT Assigned(FDelphiCan) then
begin
FDelphiCan := TDelphiCanHelper.Create;
FDelphiCan.ListView := ListView1;
end;
FDelphiCan.DoBrowse();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// Bizim Close()'un Android karşılığı...
// USES FMX.Platform.Android
// MainActivity.Finish();
{$IF Defined(ANDROID)}
FMX.Platform.Android.MainActivity.finish();
{$ENDIF}
{$IF Defined(MSWINDOWS)}
Close;
{$ENDIF}
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(FDelphiCan)
then FreeAndNil(FDelphiCan)
end;
Uses ile eklenecek Helper Unit :
unit DelphiCanHelperU;
interface
Uses System.SysUtils, System.Classes, System.Types, System.UITypes,
FMX.Dialogs,
FMX.StdCtrls, FMX.Types, FMX.Graphics,
FMX.ListView, FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base,
{$IF Defined(ANDROID)}
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.App,
Androidapi.JNI.Net,
Androidapi.Helpers,
{$ENDIF}
{$IF Defined(MSWINDOWS)}
WinApi.Windows, WinApi.ShellApi,
{$ENDIF}
System.Net.HTTPClient,
IDGlobalProtocols,
XMLIntf, XMLDoc,
System.DateUtils;
type
TDelphiCanHelper = Class( TObject )
private
const
FURL = 'https://www.delphican.com/syndication.php?limit=15';
FImageUrl = 'http://www.delphistudio.es/img/delphi/dp-01.png';
Type
TGuid = Record
isPermaLink : boolean;
text : string;
End;
TItemRecord = record
Title,
Link,
Desc,
ContEnco: String;
PubDate : TDateTime;
Guid : TGuid;
end;
TDelphiCanRecord = Record
Title,
Link,
Desc : String;
PubDate : TDateTime;
Items : Array of TItemRecord;
End;
var
FNetClient : THTTPClient;
FListView : TListView;
FDelphiCan : TDelphiCanRecord;
procedure ListViewItemClick(const Sender: TObject; const AItem: TListViewItem);
procedure ParseData( aXMLData: String );
procedure PrepareListView;
procedure SetListView(Value: TListView);
public
constructor Create;
destructor Destroy; override;
property ListView : TListView read FListView write SetListView;
procedure DoBrowse;
End;
implementation
{ TDelphiCanHelper }
constructor TDelphiCanHelper.Create;
begin
inherited;
FNetClient := THTTPClient.Create;
end;
destructor TDelphiCanHelper.Destroy;
begin
FreeAndNil(FNetClient);
Finalize(FDelphiCan);
inherited;
end;
procedure TDelphiCanHelper.DoBrowse;
var
LSS : TStringStream;
LStat : Integer;
begin
LSS := TStringStream.Create( '', TEncoding.UTF8 );
try
LStat := FNetClient.Get(FURL, LSS).StatusCode;
if LStat = 200 then
begin
ParseData( LSS.DataString );
PrepareListView();
end;
finally
FreeAndNil(LSS);
end;
end;
procedure TDelphiCanHelper.ParseData( aXMLData: String );
var
LDoc : IXMLDocument;
LNode : IXMLNode;
LData : IXMLNode;
LDate : String;
LItem : TItemRecord;
begin
LDoc := LoadXMLData( aXmlData );
if LDoc <> nil then
try
LNode := LDoc.DocumentElement; // rss
LNode := LNode.ChildNodes.First; // channel
Finalize(FDelphiCan);
if LNode.ChildNodes.FindNode('title') <> nil
then FDelphiCan.Title := LNode.ChildNodes.FindNode('title').NodeValue;
if LNode.ChildNodes.FindNode('link') <> nil
then FDelphiCan.Link := LNode.ChildNodes.FindNode('link').NodeValue;
if LNode.ChildNodes.FindNode('description') <> nil
then FDelphiCan.Desc := LNode.ChildNodes.FindNode('description').NodeValue;
if LNode.ChildNodes.FindNode('pubDate') <> nil
then begin
LDate := LNode.ChildNodes.FindNode('pubDate').NodeValue;
FDelphiCan.PubDate := IDGlobalProtocols.StrInternetToDateTime( LDate );
FDelphiCan.PubDate := TTimeZone.Local.ToLocalTime( FDelphiCan.PubDate );
end;
LData := LNode.ChildNodes.FindNode('item');
while LData <> nil do
begin
LItem := default(TItemRecord);
if LData.ChildNodes.FindNode('title') <> nil
then LItem.Title := LData.ChildNodes.FindNode('title').NodeValue;
if LData.ChildNodes.FindNode('link') <> nil
then LItem.Link := LData.ChildNodes.FindNode('link').NodeValue;
if LData.ChildNodes.FindNode('pubDate') <> nil
then begin
LDate := LData.ChildNodes.FindNode('pubDate').NodeValue;
LItem.PubDate := IDGlobalProtocols.StrInternetToDateTime( LDate );
LItem.PubDate := TTimeZone.Local.ToLocalTime( FDelphiCan.PubDate );
end;
if LData.ChildNodes.FindNode('guid') <> nil
then begin
if LData.AttributeNodes.FindNode('isPermaLink') <> nil
then LItem.Guid.isPermaLink := LData.AttributeNodes.FindNode('isPermaLink').NodeValue;
LItem.Guid.text := LData.ChildNodes.FindNode('guid').Text;
end;
if LData.ChildNodes.FindNode('description') <> nil
then LItem.Desc := LData.ChildNodes.FindNode('description').NodeValue;
if LData.ChildNodes.FindNode('content:encoded') <> nil
then LItem.ContEnco := LData.ChildNodes.FindNode('content:encoded').NodeValue;
SetLength( FDelphiCan.Items, Length(FDelphiCan.Items)+1 );
FDelphiCan.Items[high(FDelphiCan.Items)] := LItem;
LData := LData.NextSibling;
end;
finally
LDoc := Nil;
end;
end;
procedure TDelphiCanHelper.PrepareListView;
Procedure ObjectOlustur( AItem:TListViewItem; var LItem: TListItemText; strRefKod, strText:String; iOffsetX, iOffsetY, iWidth,iHeight, iFontSize:Integer; iFontColor: Cardinal );
begin
LItem := TListItemText.Create(nil);
LItem.Name := strRefKod;
LItem.Font.Size := iFontSize;
LItem.TextColor := iFontColor;
LItem.Align := TListItemAlign.Leading; // En Sol
LItem.VertAlign := TListItemAlign.Leading; // En Üst
LItem.PlaceOffset.X := iOffsetX;
LItem.PlaceOffset.Y := iOffsetY;
LItem.TextAlign := TTextAlign.Leading;
LItem.Trimming := TTextTrimming.Character;
LItem.IsDetailText := True;
LItem.Width := iWidth;
LItem.Height := iHeight;
LItem.Text := strText;
AItem.Objects.Add(LItem);
end;
Var
AItem : TListViewItem;
LImage : TListItemImage;
LData1, LData2, LData3, LData4,
LLabel1, LLabel2, LLabel3 : TListItemText;
MS : TMemoryStream;
i : Integer;
begin
ListView.Items.Clear;
for i := Low(FDelphiCan.Items) to High(FDelphiCan.Items) do
begin
AItem := ListView.Items.Add;
AItem.Height := 132;
AItem.Text := '';
LImage := TListItemImage.Create(nil);
LImage.Name := 'Resim';
LImage.Align := TListItemAlign.Trailing; // En Sağ
LImage.VertAlign := TListItemAlign.Center; // Orta
LImage.PlaceOffset.Y := 2;
LImage.PlaceOffset.X := 0;
LImage.Width := 90;
LImage.Height := 128;
LImage.OwnsBitmap := True;
LImage.Bitmap := FMX.Graphics.TBitmap.Create(0, 0);
AItem.Objects.Add(LImage);
MS := TMemoryStream.Create;
FNetClient.Get( FImageUrl, MS);
MS.Seek(0,soFromBeginning);
LImage.Bitmap.LoadFromStream(MS);
MS.Free;
// Başlıklar
// -----------------------------------------------------------------------------
ObjectOlustur( AItem, LLabel1, 'Bas1', 'Title:', 4, 20, 500, 20, 12, TAlphaColorRec.Maroon );
ObjectOlustur( AItem, LLabel2, 'Bas2', 'PubDt:', 4, 40, 500, 20, 8, TAlphaColorRec.Black );
ObjectOlustur( AItem, LLabel3, 'Bas3', 'Auth.:', 4, 60, 500, 20, 8, TAlphaColorRec.Black );
// Veri Alanları
// -----------------------------------------------------------------------------
ObjectOlustur( AItem, LData1, 'Data1', FDelphiCan.Items[i].Title, 54, 20, 500, 20, 12, TAlphaColorRec.Maroon );
ObjectOlustur( AItem, LData2, 'Data2', DateTimeToStr(FDelphiCan.Items[i].PubDate),
54, 40, 500, 20, 8, TAlphaColorRec.Black );
ObjectOlustur( AItem, LData3, 'Data3', 'Author', 54, 60, 500, 20, 8, TAlphaColorRec.Black );
ObjectOlustur( AItem, LData4, 'Data4', FDelphiCan.Items[i].Link, 04, 100, 500, 20, 12, TAlphaColorRec.Black );
end; // While
end;
procedure TDelphiCanHelper.SetListView(Value: TListView);
begin
FListView := Value;
FListView.OnItemClick := ListViewItemClick;
end;
procedure TDelphiCanHelper.ListViewItemClick(const Sender: TObject;
const AItem: TListViewItem);
var
{$IF Defined(ANDROID)}
Intent : JIntent; // Androidapi.JNI.GraphicsContentViewText
{$ENDIF}
LURL : String;
begin
LURL := (AItem.Objects.FindDrawable('Data4') as TListItemText).Text;
{$IF Defined(ANDROID)}
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setData(StrToJURI( LURL ));
TAndroidHelper.Activity.startActivity(Intent);
{$ENDIF}
{$IF Defined(MSWINDOWS)}
ShellExecute(HInstance, 'open', PChar(LUrl), nil, nil, SW_NORMAL);
{$ENDIF}
end;
end.
Başarılar.
Eski bir metod olsa da merak edenler için bir örnek proje hazırladım.
Örnekte DelphiCan RSS ile XML formatındaki ilk 15 başlığı alarak ListView'de gösteren, bu içerikten herhangi birine tıklayınca varsayılan browser ile açıp gösteren giriş seviyesi minik bir proje.
Örnekten edinilebilecek bilgiler :
Bir web sitesine erişim yapılarak içeriğinin alınması. (örnekte XML içerik geliyor)
TIdHttp Indy kullanımı yerineTHTTPClient kullanımı ile SSL kütüphaneleri gereği olmadan siteye SSL erişim imkanı.
XML içerik veri okuma yöntemleri
WEB Tarih / Saat verisinin yerel tarih saate dönüştürme
Record yapıları
Array ( dizi ) yapıları
Android / MSWindows şartlı kod yazımı
Class ( Sınıf ) oluşturma ve kullanma
Kaynak kodları aşağıda bulabilir ve inceleyebilirsiniz.
Hem android hem de windows uyumlu FMX projedir.
Forma (2) tane TButon, (1) tane de TListView bırakmanız deneme için yeterlidir. Birinci buton listeyi dolduru ikincisi formu kapatır.
Main Form :
Uses
{$IF Defined(ANDROID)}
FMX.Platform.Android,
{$ENDIF}
DelphiCanHelperU;
var
FDelphiCan : TDelphiCanHelper;
procedure TForm1.Button1Click(Sender: TObject);
begin
if NOT Assigned(FDelphiCan) then
begin
FDelphiCan := TDelphiCanHelper.Create;
FDelphiCan.ListView := ListView1;
end;
FDelphiCan.DoBrowse();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// Bizim Close()'un Android karşılığı...
// USES FMX.Platform.Android
// MainActivity.Finish();
{$IF Defined(ANDROID)}
FMX.Platform.Android.MainActivity.finish();
{$ENDIF}
{$IF Defined(MSWINDOWS)}
Close;
{$ENDIF}
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(FDelphiCan)
then FreeAndNil(FDelphiCan)
end;
Uses ile eklenecek Helper Unit :
unit DelphiCanHelperU;
interface
Uses System.SysUtils, System.Classes, System.Types, System.UITypes,
FMX.Dialogs,
FMX.StdCtrls, FMX.Types, FMX.Graphics,
FMX.ListView, FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base,
{$IF Defined(ANDROID)}
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.App,
Androidapi.JNI.Net,
Androidapi.Helpers,
{$ENDIF}
{$IF Defined(MSWINDOWS)}
WinApi.Windows, WinApi.ShellApi,
{$ENDIF}
System.Net.HTTPClient,
IDGlobalProtocols,
XMLIntf, XMLDoc,
System.DateUtils;
type
TDelphiCanHelper = Class( TObject )
private
const
FURL = 'https://www.delphican.com/syndication.php?limit=15';
Type
TGuid = Record
isPermaLink : boolean;
text : string;
End;
TItemRecord = record
Title,
Link,
Desc,
ContEnco: String;
PubDate : TDateTime;
Guid : TGuid;
end;
TDelphiCanRecord = Record
Title,
Link,
Desc : String;
PubDate : TDateTime;
Items : Array of TItemRecord;
End;
var
FNetClient : THTTPClient;
FListView : TListView;
FDelphiCan : TDelphiCanRecord;
procedure ListViewItemClick(const Sender: TObject; const AItem: TListViewItem);
procedure ParseData( aXMLData: String );
procedure PrepareListView;
procedure SetListView(Value: TListView);
public
constructor Create;
destructor Destroy; override;
property ListView : TListView read FListView write SetListView;
procedure DoBrowse;
End;
implementation
{ TDelphiCanHelper }
constructor TDelphiCanHelper.Create;
begin
inherited;
FNetClient := THTTPClient.Create;
end;
destructor TDelphiCanHelper.Destroy;
begin
FreeAndNil(FNetClient);
Finalize(FDelphiCan);
inherited;
end;
procedure TDelphiCanHelper.DoBrowse;
var
LSS : TStringStream;
LStat : Integer;
begin
LSS := TStringStream.Create( '', TEncoding.UTF8 );
try
LStat := FNetClient.Get(FURL, LSS).StatusCode;
if LStat = 200 then
begin
ParseData( LSS.DataString );
PrepareListView();
end;
finally
FreeAndNil(LSS);
end;
end;
procedure TDelphiCanHelper.ParseData( aXMLData: String );
var
LDoc : IXMLDocument;
LNode : IXMLNode;
LData : IXMLNode;
LDate : String;
LItem : TItemRecord;
begin
LDoc := LoadXMLData( aXmlData );
if LDoc <> nil then
try
LNode := LDoc.DocumentElement; // rss
LNode := LNode.ChildNodes.First; // channel
Finalize(FDelphiCan);
if LNode.ChildNodes.FindNode('title') <> nil
then FDelphiCan.Title := LNode.ChildNodes.FindNode('title').NodeValue;
if LNode.ChildNodes.FindNode('link') <> nil
then FDelphiCan.Link := LNode.ChildNodes.FindNode('link').NodeValue;
if LNode.ChildNodes.FindNode('description') <> nil
then FDelphiCan.Desc := LNode.ChildNodes.FindNode('description').NodeValue;
if LNode.ChildNodes.FindNode('pubDate') <> nil
then begin
LDate := LNode.ChildNodes.FindNode('pubDate').NodeValue;
FDelphiCan.PubDate := IDGlobalProtocols.StrInternetToDateTime( LDate );
FDelphiCan.PubDate := TTimeZone.Local.ToLocalTime( FDelphiCan.PubDate );
end;
LData := LNode.ChildNodes.FindNode('item');
while LData <> nil do
begin
LItem := default(TItemRecord);
if LData.ChildNodes.FindNode('title') <> nil
then LItem.Title := LData.ChildNodes.FindNode('title').NodeValue;
if LData.ChildNodes.FindNode('link') <> nil
then LItem.Link := LData.ChildNodes.FindNode('link').NodeValue;
if LData.ChildNodes.FindNode('pubDate') <> nil
then begin
LDate := LData.ChildNodes.FindNode('pubDate').NodeValue;
LItem.PubDate := IDGlobalProtocols.StrInternetToDateTime( LDate );
LItem.PubDate := TTimeZone.Local.ToLocalTime( FDelphiCan.PubDate );
end;
if LData.ChildNodes.FindNode('guid') <> nil
then begin
if LData.AttributeNodes.FindNode('isPermaLink') <> nil
then LItem.Guid.isPermaLink := LData.AttributeNodes.FindNode('isPermaLink').NodeValue;
LItem.Guid.text := LData.ChildNodes.FindNode('guid').Text;
end;
if LData.ChildNodes.FindNode('description') <> nil
then LItem.Desc := LData.ChildNodes.FindNode('description').NodeValue;
if LData.ChildNodes.FindNode('content:encoded') <> nil
then LItem.ContEnco := LData.ChildNodes.FindNode('content:encoded').NodeValue;
SetLength( FDelphiCan.Items, Length(FDelphiCan.Items)+1 );
FDelphiCan.Items[high(FDelphiCan.Items)] := LItem;
LData := LData.NextSibling;
end;
finally
LDoc := Nil;
end;
end;
procedure TDelphiCanHelper.PrepareListView;
Procedure ObjectOlustur( AItem:TListViewItem; var LItem: TListItemText; strRefKod, strText:String; iOffsetX, iOffsetY, iWidth,iHeight, iFontSize:Integer; iFontColor: Cardinal );
begin
LItem := TListItemText.Create(nil);
LItem.Name := strRefKod;
LItem.Font.Size := iFontSize;
LItem.TextColor := iFontColor;
LItem.Align := TListItemAlign.Leading; // En Sol
LItem.VertAlign := TListItemAlign.Leading; // En Üst
LItem.PlaceOffset.X := iOffsetX;
LItem.PlaceOffset.Y := iOffsetY;
LItem.TextAlign := TTextAlign.Leading;
LItem.Trimming := TTextTrimming.Character;
LItem.IsDetailText := True;
LItem.Width := iWidth;
LItem.Height := iHeight;
LItem.Text := strText;
AItem.Objects.Add(LItem);
end;
Var
AItem : TListViewItem;
LImage : TListItemImage;
LData1, LData2, LData3, LData4,
LLabel1, LLabel2, LLabel3 : TListItemText;
//MS : TMemoryStream;
i : Integer;
begin
ListView.Items.Clear;
for i := Low(FDelphiCan.Items) to High(FDelphiCan.Items) do
begin
AItem := ListView.Items.Add;
AItem.Height := 132;
AItem.Text := '';
LImage := TListItemImage.Create(AItem);
LImage.Name := 'Resim';
LImage.Align := TListItemAlign.Trailing; // En Sağ
LImage.VertAlign := TListItemAlign.Center; // Orta
LImage.PlaceOffset.Y := 2;
LImage.PlaceOffset.X := 0;
LImage.Width := 90;
LImage.Height := 128;
LImage.OwnsBitmap := True;
LImage.Bitmap := FMX.Graphics.TBitmap.Create(0, 0);
{
MS := TMemoryStream.Create;
FNetClient.Get(Bilgi.strDescription, MS);
MS.Seek(0,soFromBeginning);
LImage.Bitmap.LoadFromStream(MS);
MS.Free;
}
// Başlıklar
// -----------------------------------------------------------------------------
ObjectOlustur( AItem, LLabel1, 'Bas1', 'Title:', 4, 20, 500, 20, 12, TAlphaColorRec.Maroon );
ObjectOlustur( AItem, LLabel2, 'Bas2', 'PubDt:', 4, 40, 500, 20, 8, TAlphaColorRec.Black );
ObjectOlustur( AItem, LLabel3, 'Bas3', 'Auth.:', 4, 60, 500, 20, 8, TAlphaColorRec.Black );
// Veri Alanları
// -----------------------------------------------------------------------------
ObjectOlustur( AItem, LData1, 'Data1', FDelphiCan.Items[i].Title, 54, 20, 500, 20, 12, TAlphaColorRec.Maroon );
ObjectOlustur( AItem, LData2, 'Data2', DateTimeToStr(FDelphiCan.Items[i].PubDate),
54, 40, 500, 20, 8, TAlphaColorRec.Black );
ObjectOlustur( AItem, LData3, 'Data3', 'Author', 54, 60, 500, 20, 8, TAlphaColorRec.Black );
ObjectOlustur( AItem, LData4, 'Data4', FDelphiCan.Items[i].Link, 04, 100, 500, 20, 12, TAlphaColorRec.Black );
end; // While
end;
procedure TDelphiCanHelper.SetListView(Value: TListView);
begin
FListView := Value;
FListView.OnItemClick := ListViewItemClick;
end;
procedure TDelphiCanHelper.ListViewItemClick(const Sender: TObject;
const AItem: TListViewItem);
var
{$IF Defined(ANDROID)}
Intent : JIntent; // Androidapi.JNI.GraphicsContentViewText
{$ENDIF}
LURL : String;
begin
LURL := (AItem.Objects.FindDrawable('Data4') as TListItemText).Text;
{$IF Defined(ANDROID)}
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setData(StrToJURI( LURL ));
TAndroidHelper.Activity.startActivity(Intent);
{$ENDIF}
{$IF Defined(MSWINDOWS)}
ShellExecute(HInstance, 'open', PChar(LUrl), nil, nil, SW_NORMAL);
{$ENDIF}
end;
end.
Hocam çok çok teşekkür ederim. Listview düzenleme konusunda daha iyi kod görmedim. Önerilen hep DynamicAppearance ile yapılması ama o yöntem insanı kanser ediyor çünkü bir yerde mutlaka access violation hatasını veriyor.
Eksik olma.
FMX mimarisinin emekleme aşamalarında Binding olayına bir türlü ısınamadığımdan her şeyi el yordamı ile yapmaya gayret ediyor olduk.
Bu kod örneği de zamanında FMX platform source klasöründeki unitler alt üst edilerek ortaya çıktı.
Bu gibi kod yapılarında gelecekte bir güncelleme olduğunda (buradaki örnekte olduğu gibi) oluşan hata/ olumsuzluk takibi kolay oluyor ve ilgili kısma odaklanıp gereken çözüm üretilebiliyor.
ListBox konusunda da ısrarım, Windows ortamında multiselect / drag drop vb. durumlarda daha esnek olduğundandır. Onda da sistem daha çok stylebook odaklı bir yapıya evrildi.
(14-02-2022, Saat: 17:04)mrmarman Adlı Kullanıcıdan Alıntı: Eksik olma.
FMX mimarisinin emekleme aşamalarında Binding olayına bir türlü ısınamadığımdan her şeyi el yordamı ile yapmaya gayret ediyor olduk.
Bu kod örneği de zamanında FMX platform source klasöründeki unitler alt üst edilerek ortaya çıktı.
Bu gibi kod yapılarında gelecekte bir güncelleme olduğunda (buradaki örnekte olduğu gibi) oluşan hata/ olumsuzluk takibi kolay oluyor ve ilgili kısma odaklanıp gereken çözüm üretilebiliyor.
ListBox konusunda da ısrarım, Windows ortamında multiselect / drag drop vb. durumlarda daha esnek olduğundandır. Onda da sistem daha çok stylebook odaklı bir yapıya evrildi.
Çalışmalarınızda başarılar.
Hocam bu defa da resim göstermiyordu. Prosedur ekleyip yapınca oldu. Bu yapı çok çok kullanışlı ve pratik. Listbox'la da denemeler yaptım. Açıkcası çok içime sinmedi. Bu yolla her şeyi yapabiliyorum. Tekrar çok çok teşekkür ederim.
Lütfen yazdığınız mesajlarınızı silmeyiniz.
Daha önceki mesajlarınızda da yapmışsınız. Yazılan cevaplar öksüz kalıyor. Anlamını yitiriyor.
* Her defasında önceki mesajınızdan alıntı ile cevap yazmak buna çözüm olacak ancak başlık kirliliği oluşturduğundan tercih etmesem de bu yola bizi teşvik etmezseniz herkes adına konuşmayayım ama kendi adıma memnun olurum.
* Buradaki çözümde ise "procedure yapmak" ile önceki kullandığınız hali arasında bir fark kesinlikle yoktur.
* Aslında resim verisi mevcut olan "LImage" yerine içi belki de boş olan "resimdata" isimli başka bir değişkeni göstermiş olmaktan ibaret olduğu anlaşılıyor. Bu gibi hatalar sizi küçültmez bunun için başlık silmeye değmez.