Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FMX ve Liste sorunları.
#1
Merhaba öncelikle windows için uygulama geliştirmeye çalıyorum.
visual studioda listelerde kendimiz checkbox combo ekleyebiliyoruz problemsiz.
normalde ben vcl ile listview kullanırdım column resim olarak checkbox katıp kodlara resimleri değiştirirdim.
bu biraz uzun işi uzatıyor.

fmx tasarımı benim acımdan cok daha iyi. componentler zengin ama listview değişmiş ve o şekilde benim işime yaramıyor.
bende normal listelere baktım ama pek bir şey bulamadım. skin değiştirip combo eklenebiliyor ama ben tüm skinleri kullanmak istediğim ve hepsini değiştirme istemediğim için buda beni gereksiz yoracak gibi. ve o componetlere ulaşmaya çalısırken findresource gibi apiler kullanıyor anladığım kadarı ile.

yanlış biliyorsam düzeltin lütfen galiba rad studio hiç böyle bir component eklenmedi ben göremedim hiç. Kullandığım liste sabit olacağı için listeye 1 kere ekleme yaptıktan sonra bir daha eklemeye yapmayacağım bu durumda proje aşamasında listeyi görebilmem benim için büyük avantaj.

bana kalan tek şey grid ama malesef onunda sistemi bir garip geliyor bana. ben zaten kullanmadım. xml ile kullanmak isterdim bunun için örnek varmı acaba.

yada böyle bir component varda ben mi göremiyorum.
cevaplarınız için teşekkür ederim.

son olarak 10.4 inceleyen birisi varsa böyle bir component varmı bilgi verirse sevinirim.
iyi günler.
Cevapla
#2
FMX'de Listbox incelemek isteyebilirsiniz. Eklemlemek için ShowCheckBoxes property true olması yeterli.

Ayrıca nesne tabanlı olduğundan vcl'deki listview gibi kullanma imkanı geniş. Subitem olmasa da object eklenerek ilgili item üzerinden object bul / ulaş tekniği ile erişim mümkün.

bkz : embarcadero
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#3
teşekkürler hocam.
listbox ekledim evet denedim. tasarımı değiştirerek column gibi button falan ekleniyor. tabi bu sefer kullanılan tüm temaları değiştirmek gerekiyor.
bundan sonra findresource gibi bir api kullanmak gerekiyordu yanılmıyorsam.
ama yinede basit ama büyük bir eksik olduğunu düşünüyorum.
Cevapla
#4
Bakalım (  "ama yinede basit ama büyük bir eksik olduğunu düşünüyorum." ) şeklindeki düşüncenizi değiştirebilecek miyim ? 

Style hiç karıştırmak istemiyorum derseniz aşağıdaki şekilde kullanım mümkün... 

Şöyle basit bir örnek hazırladım.

Aşağıdaki ilk örnek varsayılan haliyle herhangi bir style vs. kullanmadan dahi kullanılabilecek aslında VCL'den aşina olduğumuz TChecklListBox benzeri bir yapı.

(*) Her item'i ayrı ayrı boyutlandırma imkanının altını çizeyim. Bu dinamizmin ilk örneği. Idea

vpjalum8wfrvqhdqktio.png

procedure TForm1.Button1Click(Sender: TObject);
var
  LBItem  : TListBoxItem;
  i       : Integer;
begin
  ListBox1.ShowCheckboxes := True;

  ListBox1.BeginUpdate;
  ListBox1.Items.Clear;
  for i := 0 to 9 do
  begin
    LBItem := TListBoxItem.Create(ListBox1);
    LBItem.Height := 20 + (i*3); // every item may different height(s)
    LBItem.Parent := ListBox1;
    LBItem.Name := Format('LBItem_%.2d', [LBItem.Index]);
    LBItem.Text := Format('Item No. %.2d', [ i ] );
  end;
  ListBox1.EndUpdate;
end;



Idea  Şimdi de bu ITEM'lere ayrı ayrı bildiğimiz TLabel ekleyelim. Sonra da bunların formatıyla oynayalım.

Not:   aLabel.StyledSettings := []; satırı örneğini aklınızda tutun. Herhangi bir nesnenin bu özelliğini boşaltırsanız Style özelliğinden bağımsızlaşır, renk boyut vs. özgürleşir.


bszqq8uc6v3ifayqdrce.png


procedure TForm1.Button2Click(Sender: TObject);
var
  LBItem  : TListBoxItem;
  aLabel  : TLabel;
  i       : Integer;
begin
  ListBox1.BeginUpdate;
  for i := 0 to 9 do
  begin
    LBItem := ListBox1.ListItems[i];
    aLabel := TLabel.Create( LBItem );
    aLabel.Name       := Format('LABEL_%.2d', [i]); // important for searching this label
    aLabel.Parent     := LBItem;
    aLabel.Position.X := 4;
    aLabel.StyledSettings := [];
    aLabel.TextSettings.Font.Size  := 5 + i;
    aLabel.Text       := Format( 'This is Label %.2d', [i] );
    aLabel.Height     := 6 + i;
    aLabel.TextSettings.FontColor   := TAlphaColors.Black + (i*500000);
    aLabel.TextSettings.Font.Style  := [TFontStyle.fsBold];
    aLabel.Position.Y := LBItem.Height-aLabel.Height;
  end;
  ListBox1.EndUpdate;
end;




Bu kısımlardan bir label'a nasıl ulaşacağız. Seçili nesnenin labelini değiştirelim mi ? ListBox üzerinde çift mouse click yaptığımız proc

procedure TForm1.ListBox1DblClick(Sender: TObject);
var
 LBItem  : TListBoxItem;
 aLabel  : TLabel;
 i       : Integer;
 NewText : String;
begin
 ShowMessageFmt( 'Seçili Index : %d', [TListBox(sender).Selected.Index] );

 LBItem := ListBox1.ListItems[ TListBox(sender).Selected.Index ];
 aLabel := LBItem.FindComponent( Format('LABEL_%.2d', [LBItem.Index]) ) as TLabel;
 if aLabel <> nil then
   if InputQuery( 'Change Text', 'New text for label : ', NewText )
     then aLabel.Text := NewText;
end;

ScreenCap_ListBoxItems.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#5
muazzam hocam elinize sağlık teşekkür ederim.
aslında bende her item için ayrı ayar yapılması kolay kullanılan bir çok componenti gördükten sonra fmx kullanmak istedim
özelleştirme çok müsait. uğraşınız için tekrar teşekkür ederim.
anlamadım ama neden acaba visualda olan böyle bir component yapmıyorlar pek alamıyorum.

birde hocam bu hazır bulmuşken sizi.
listbox oluşturdum bende denemek için icon ekliyorum imagelist 1. item mesela bende 20x20 ama liste hep ufak büyüt küçült değişmiyor. boyut sabit bende problem mi var acaba.

bu arada hocam elinize saglık tekrar yordum sizi. inceliyorum ben bunları c++ için deneme yapacağım.
Cevapla
#6
ImageList'e resimleri aldığınız yerde (hani çift tıklayınca açılan ekran) seçenekler üzerinde oynayın.
m05fqihke1wfavsinbhw.png
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#7
tekrar teşekkür ederim hocam

2piKRM.jpg
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  DBLookupComboBox liste elemalarini arama klavye 7 1.910 13-06-2018, Saat: 16:59
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi