Merhaba;
Projemde çalışma anında aşağıda ki kod ile listebox da itemler oluşturup oluşan itemlarda rectangle üzrinde nesneler oluşuyor kullanıcı oluşan nesnelerin Hit test özelliği False olup lşstboxin item clik ile sistem ilerliyor. Kullanıcının tıkladığı item üzerinde ki Rectanglenin tag ını vede textini yakalamam gerekiyor Konu hakkında lisview ile ilgili örnekler mevcut ama listbox ile ilerleyemedim konu hakkında desteği olan herkese şimdiden teşekkürler.
procedure TFrme_rand.ddadditem(ddadi1, ddadi2 :string;ddkod:variant; BlobField1: TBlobField);
var
rec : TRectangle;
lb : TListBoxItem;
memstream : Tstream;
begin
try
lblddadi.Text:=ddadi1;
lblbddadi2.Text:=ddadi2;
//resim := '';
memstream := TMemoryStream.Create();
TBlobField(BlobField1).SaveToStream(memstream);
memstream.Position := 0;
recimage.Fill.Bitmap.Bitmap.LoadFromStream(memstream);
lb:= TListBoxItem.Create(lstbdd);
lb.Width:=lstbdd.Width;
lb.Height:=+30;
lb.Tag:=ddkod;
rec := TRectangle(recddlist.Clone(lb));
rec.Width:=lb.Width -45;
rec.Position.X:= 16;
rec.Position.y:= 5;
rec.Visible:=True;
lb.AddObject(rec);
lstbdd.AddObject(lb);
finally
memstream.Free;
end;
end;
(22-10-2022, Saat: 12:49)diseqc Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba;
Projemde çalışma anında aşağıda ki kod ile listebox da itemler oluşturup oluşan itemlarda rectangle üzrinde nesneler oluşuyor kullanıcı oluşan nesnelerin Hit test özelliği False olup lşstboxin item clik ile sistem ilerliyor. Kullanıcının tıkladığı item üzerinde ki Rectanglenin tag ını vede textini yakalamam gerekiyor Konu hakkında lisview ile ilgili örnekler mevcut ama listbox ile ilerleyemedim konu hakkında desteği olan herkese şimdiden teşekkürler.
Kod:
procedure TFrme_rand.ddadditem(ddadi1, ddadi2 :string;ddkod:variant; BlobField1: TBlobField);
var
rec : TRectangle;
lb : TListBoxItem;
memstream : Tstream;
begin
try
lblddadi.Text:=ddadi1;
lblbddadi2.Text:=ddadi2;
//resim := '';
memstream := TMemoryStream.Create();
TBlobField(BlobField1).SaveToStream(memstream);
memstream.Position := 0;
recimage.Fill.Bitmap.Bitmap.LoadFromStream(memstream);
lb:= TListBoxItem.Create(lstbdd);
lb.Width:=lstbdd.Width;
lb.Height:=+30;
lb.Tag:=ddkod;
rec := TRectangle(recddlist.Clone(lb));
rec.Width:=lb.Width -45;
rec.Position.X:= 16;
rec.Position.y:= 5;
rec.Visible:=True;
lb.AddObject(rec);
lstbdd.AddObject(lb);
finally
memstream.Free;
end;
end;
Merhabalar,
http://www.delphican.com/showthread.php?...13#pid1713
https://www.delphican.com/showthread.php?tid=3628
https://www.delphican.com/showthread.php?tid=3892
https://www.delphican.com/showthread.php?tid=4853
Linkleri inceleyebilirmisiniz lütfen.
Kolay gelsin.
(24-10-2022, Saat: 22:28)hi_selamlar Adlı Kullanıcıdan Alıntı: [ -> ] (22-10-2022, Saat: 12:49)diseqc Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba;
Projemde çalışma anında aşağıda ki kod ile listebox da itemler oluşturup oluşan itemlarda rectangle üzrinde nesneler oluşuyor kullanıcı oluşan nesnelerin Hit test özelliği False olup lşstboxin item clik ile sistem ilerliyor. Kullanıcının tıkladığı item üzerinde ki Rectanglenin tag ını vede textini yakalamam gerekiyor Konu hakkında lisview ile ilgili örnekler mevcut ama listbox ile ilerleyemedim konu hakkında desteği olan herkese şimdiden teşekkürler.
Kod:
procedure TFrme_rand.ddadditem(ddadi1, ddadi2 :string;ddkod:variant; BlobField1: TBlobField);
var
rec : TRectangle;
lb : TListBoxItem;
memstream : Tstream;
begin
try
lblddadi.Text:=ddadi1;
lblbddadi2.Text:=ddadi2;
//resim := '';
memstream := TMemoryStream.Create();
TBlobField(BlobField1).SaveToStream(memstream);
memstream.Position := 0;
recimage.Fill.Bitmap.Bitmap.LoadFromStream(memstream);
lb:= TListBoxItem.Create(lstbdd);
lb.Width:=lstbdd.Width;
lb.Height:=+30;
lb.Tag:=ddkod;
rec := TRectangle(recddlist.Clone(lb));
rec.Width:=lb.Width -45;
rec.Position.X:= 16;
rec.Position.y:= 5;
rec.Visible:=True;
lb.AddObject(rec);
lstbdd.AddObject(lb);
finally
memstream.Free;
end;
end;
Merhabalar,
http://www.delphican.com/showthread.php?...13#pid1713
https://www.delphican.com/showthread.php?tid=3628
https://www.delphican.com/showthread.php?tid=3892
https://www.delphican.com/showthread.php?tid=4853
Linkleri inceleyebilirmisiniz lütfen.
Kolay gelsin.
Desteğiniz için teşekkür ederim ancak yinede istediğime ulaşamadım ilettiğiniz linkleri inceledim çoğunda listview anlatılmış sadece son konuda listboxdan bahsedilmiş o konudan oluşan itemlara ulatım ancak item üstünde ki image nesnesine yinede ulaşamadım.
Sanırım böyle bir yöntem arıyorsunuz;
procedure TForm1.ddadditem(ddadi1, ddadi2 :string);
var
rec : TRectangle;
lb : TListBoxItem;
tx : TText;
i: integer;
memstream : Tstream;
begin
ListBox1.BeginUpdate;
try
i := random(666);
lb:= TListBoxItem.Create(ListBox1);
lb.Parent := ListBox1;
lb.Visible := True;
lb.Height := 70;
lb.Tag := i;
lb.Name := 'lbP'+i.ToString;
lb.OnClick := ListBoxItem1Click;
rec := TRectangle.Create(lb);
rec.Align := TAlignLayout.None;
rec.Parent := lb;
rec.Width:= 50;
rec.Height := 50;
rec.Position.X:= 16;
rec.Position.y:= 5;
rec.Visible := True;
rec.Tag := i;
rec.HitTest := False;
rec.Name := 'rcP'+i.ToString;
tx := TText.Create(Form1);
tx.Parent := lb;
tx.Position.X := rec.Position.X + rec.Height + 20;
tx.Position.Y := rec.Position.Y;
tx.Text := 'Bu bir metindir ve kayıtlı tag: '+i.ToString;
tx.tag := i;
tx.Width := 100;
tx.Visible := True;
rec.HitTest := False;
tx.Name := 'txP'+i.ToString;
ListBox1.AddObject(lb);
finally
ListBox1.EndUpdate;
end;
end;
procedure TForm1.ListBoxItem1Click(Sender: TObject);
begin
if sender is TListBoxItem then
begin
ShowMessage(TText(FindComponent('txP'+TListBoxItem(Sender).tag.ToString)).Text);
end;
end;
Belki bir fikir verir.
(26-10-2022, Saat: 18:11)berk06 Adlı Kullanıcıdan Alıntı: [ -> ]Sanırım böyle bir yöntem arıyorsunuz;
procedure TForm1.ddadditem(ddadi1, ddadi2 :string);
var
rec : TRectangle;
lb : TListBoxItem;
tx : TText;
i: integer;
memstream : Tstream;
begin
ListBox1.BeginUpdate;
try
i := random(666);
lb:= TListBoxItem.Create(ListBox1);
lb.Parent := ListBox1;
lb.Visible := True;
lb.Height := 70;
lb.Tag := i;
lb.Name := 'lbP'+i.ToString;
lb.OnClick := ListBoxItem1Click;
rec := TRectangle.Create(lb);
rec.Align := TAlignLayout.None;
rec.Parent := lb;
rec.Width:= 50;
rec.Height := 50;
rec.Position.X:= 16;
rec.Position.y:= 5;
rec.Visible := True;
rec.Tag := i;
rec.HitTest := False;
rec.Name := 'rcP'+i.ToString;
tx := TText.Create(Form1);
tx.Parent := lb;
tx.Position.X := rec.Position.X + rec.Height + 20;
tx.Position.Y := rec.Position.Y;
tx.Text := 'Bu bir metindir ve kayıtlı tag: '+i.ToString;
tx.tag := i;
tx.Width := 100;
tx.Visible := True;
rec.HitTest := False;
tx.Name := 'txP'+i.ToString;
ListBox1.AddObject(lb);
finally
ListBox1.EndUpdate;
end;
end;
procedure TForm1.ListBoxItem1Click(Sender: TObject);
begin
if sender is TListBoxItem then
begin
ShowMessage(TText(FindComponent('txP'+TListBoxItem(Sender).tag.ToString)).Text);
end;
end;
Belki bir fikir verir.
Merhaba cevabınız farklı bir sorunda destek oldu teşekkür ederim. Projenin devamında birde dinamik olarak oluşturduğum butonların onclick eventına ulaşmam gerekiyor. Yaptığım araştırmada type alanının altına procedure tikla(Sender: TObject);
şeklinde bir procedure tanımladım yine aynı döngüde butonu oluştururken btn.onclick=tikla; olarak atadım derlerken hata vermiyor ancak butonlara bastığımda tik yok. nesneler firemonkey frame üzerinde acaba ondan mı ??
Şimdi soru şu : run time oluştırduğum fazlaca butonların onclick olayına nasıl programı tetiklerim tşk
procedure tikla(Sender: TObject);
procedure Tfrmealinanranlar.tikla(Sender: TObject);
begin
ShowMessage('o')
end;
procedure Tfrmealinanranlar.addalinanranditem(blmadi, dadi, rsirano,
tarihisaat: string; BlobField1: TBlobField);
var
rec : TRectangle;
lb : TListBoxItem;
memstream : Tstream;
btn,btn2 : TButton;
begin
try
lblbdi.Text:=blmadi;
lbldadi.Text:=dadi;
lbltarihsaat.Text:= tarihisaat;
memstream := TMemoryStream.Create();
TBlobField(BlobField1).SaveToStream(memstream);
memstream.Position := 0;
circle1.Fill.Bitmap.Bitmap.LoadFromStream(memstream);
btn := TButton.Create(lstranlarim);
btn.Parent :=lybtnlar; //lb;
btn.Align:=TAlignLayout.Center;
btn.Margins.Right:=100;
btn.Text := 'Güncelle'; //'sil '+rsirano;
btn.tag := StrToInt(rsirano);
btn.Width := 80;
btn.Visible := True;
btn.Name := 'btn'+rsirano;
btn.OnClick:=tikla;
btn2 := TButton.Create(lstranlarim);
btn2.Parent :=lybtnlar; //lb;
btn2.Align:=TAlignLayout.Center;
btn2.Margins.Left:=100;
btn2.Text := 'İptal Et'; //'sil '+rsirano;
btn2.tag := StrToInt(rsirano);
btn2.Width := 80;
btn2.Visible := True;
btn2.Name := 'btn2'+rsirano;
btn2.OnClick:=lstrandevularimClick;
lb:= TListBoxItem.Create(lstrandevularim);
lb.Width:=lstranlarim.Width;
lb.Height:=Recrandevularist.Height +60 ;
lb.Tag:=StrToInt(rsirano);
rec := TRectangle(Recrandevularist.Clone(lb));
rec.Width:=lb.Width-20;
rec.Position.X:= 8;
rec.Position.y:= 5;
rec.HitTest := False;
rec.Visible:=True;
lb.AddObject(rec);
lstranlarim.AddObject(lb);
finally
memstream.Free;
end;
end;
Merhaba; Konu hakkında kimsenin fikri yok mu ? dynamic oluşturduğum nesnelerin onClick eventina nasıl ulaşacağım ?
(12-11-2022, Saat: 13:36)berk06 Adlı Kullanıcıdan Alıntı: [ -> ] (12-11-2022, Saat: 10:08)diseqc Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba; Konu hakkında kimsenin fikri yok mu ? dynamic oluşturduğum nesnelerin onClick eventina nasıl ulaşacağım ?
Merhaba,
http://www.delphiturkiye.com/forum/viewt...hp?t=27829
https://www.thoughtco.com/understanding-...rs-1058223
https://stackoverflow.com/questions/1133...ss-at-a-ti
https://docwiki.embarcadero.com/RADStudi..._Parameter
Merhaba konu hakkında desteğinizi için teşekkür ederim ilettiğin linkleri inceledim, sorunu istediğim gibi olmasada çözdüm. aşağıda paylaştığım kodlarda görüelceği üzere run time anında oluşturduğum butonların eventlarını yönlendirmeyi başaramadım ama formun üzerine yerleştirdiğim bir butonu clone layarak itmes ler üzerinde botonlar oluşturdum ve clone butonların on click eventını bu butona yönledirince çalıştı.
procedure TFrme_checkup.paketlerilistele(tabadi: string);
var
reci:TRectangle;
tblar:TTabItem;
ilk:boolean;
button:TCornerButton;
scrol:TVertScrollBox;
begin
try
tblar := TABCCheckup.Add( TTabItem ) as TTabItem;
tblar.Text := Tabadi + IntToStr( TABCCheckup.TabCount );
tblar.Name := 'TB'+IntToStr( TABCCheckup.TabCount );
scrol:=TVertScrollBox.Create(self);
scrol.Parent:=tblar;
scrol.Align:=TAlignLayout.Client;
scrol.Visible:=True;
ilk:=false;
with formdm do
begin
Dsetqrcheckuplar.Close;
Dsetqrcheckuplar.Open;
Dsetqrcheckuplar.First;
while not Dsetqrcheckuplar.Eof do
begin
btneklenenpaketler.Text:=DsetqrcGROUP_ADI.Value;
reci:= TRectangle(Recpaketler.Clone(scrol));
reci.Parent:=scrol;
reci.Align:=TAlignLayout.Top;
reci.Tag:=DsetqrcGRUPNO.AsInteger;
btneklenenpaketler.Tag:=DsetqrcGRUPNO.AsInteger;
if not ilk then reci.Margins.Top:=40 else reci.Margins.Top:=5;
reci.Margins.Left:=10;
reci.Margins.Right:=10;
scrol.AddObject(reci);
tblar.AddObject(scrol);
button:=TCornerButton(btneklenenpaketler.Clone(reci));
button.Align:=TAlignLayout.Client;
button.StyleLookup:='buttonstilgenel';
button.Tag:=DsetqrcheckuplarGRUPNO.AsInteger;
button.OnClick:=btneklenenpaketlerClick;
reci.AddObject(button);
reci.Visible:=True;
ilk:=true;
Dsetqrcheckuplar.Next;
end;
end;
except
end;
end;