![]() |
|
Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak (/showthread.php?tid=7004) |
Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - diseqc - 22-10-2022 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; Cvp: Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - hi_selamlar - 24-10-2022 (22-10-2022, Saat: 12:49)diseqc Adlı Kullanıcıdan Alıntı: Merhaba; Merhabalar, http://www.delphican.com/showthread.php?tid=301&pid=1713#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. Cvp: Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - diseqc - 26-10-2022 (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; 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. Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - berk06 - 26-10-2022 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. Cvp: Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - diseqc - 30-10-2022 (26-10-2022, Saat: 18:11)berk06 Adlı Kullanıcıdan Alıntı: Sanırım böyle bir yöntem arıyorsunuz; 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;
Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - diseqc - 12-11-2022 Merhaba; Konu hakkında kimsenin fikri yok mu ? dynamic oluşturduğum nesnelerin onClick eventina nasıl ulaşacağım ? Cvp: Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - berk06 - 12-11-2022 (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/viewtopic.php?t=27829 https://www.thoughtco.com/understanding-sender-parameter-in-delphi-event-handlers-1058223 https://stackoverflow.com/questions/11335829/how-to-use-sender-parameter-with-as-operator-for-more-then-one-class-at-a-ti https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_the_Sender_Parameter Cvp: Çalışma anında lisboxitem da oluşturulan nesneye ulaşmak - diseqc - 19-11-2022 (12-11-2022, Saat: 13:36)berk06 Adlı Kullanıcıdan Alıntı: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ı.(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 ? 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;
|