2013-12-25 1 views
0

Хотя я пытаюсь создать собственный список, например, образец, предоставленный embarcadero, он выглядит отлично, но для мобильных приложений мне нужно создать пользовательский элемент списка, но когда я щелкнул правой кнопкой мыши на любом элементе управления в моей форме У меня нет возможности редактировать собственный стиль. мне нужно мое мобильное приложение, чтобы сделать какой-то настроенный элемент списка, чтобы показывать 2 изображения и 2 текста в каждом элементе. любой совет?Delphi XE5 Firemankey mobile custom listbox

ответ

0

Вы не можете использовать «Редактировать пользовательский стиль/стиль по умолчанию» в приложении FM-приложения.

Я нашел байпас, вы можете загрузить любой стиль VCL в конструктор стилей Bitmap и сохранить его как стиль FireMonkey. Мне это нравилось несколько раз, некоторые элементы поведения в некоторых элементах управления ... но если вам нужно всего 2 или 3 типа управления в вашем приложении, вы можете попробовать, вероятно, с успехом.

В стиле VCL вы можете добавить 2 TText и 2 компонента TImage внутри другого элемента управления.

Для дефолта в приложении Android вы можете использовать только светлый и темный стиль по умолчанию, но я перехожу к Android Style, также включенному в IDE синим и зеленым стилями Metropolis и выглядит как работает нормально.

+0

это правильный путь все должно работать? потому что даже в настольных приложениях, когда я пытаюсь редактировать пользовательский элемент, иногда я получаю ошибки ... Я думал, что проблема у меня на стороне, но похоже, что embarcadero выпустил приложение для мусора без альфа-и бета-тестов ... – user3001414

+0

вы правы, Я работаю над XE5 в своей работе ... для меня это как бы получение опыта ... включайте и выключайте IDE 10 раз в день :), но если мне нужно сделать это, я должен это сделать ... – user30993174444

0

Управление каплями в элементы списка, но вы хотите, как и с любым другим элементом управления. Например, вы можете сделать что-то вроде:

ListBox.items.add(''); // blank Text which normally acts as title 
BoxItem := ListBox.ListItems[ListBox.Items.Count-1]; 
NewTitle := TText.create(nil); 
NewTitle.Text := 'New Orange Title'; 
newTitle.color := TAlphaColors.Orange; 
NewTitle.parent := BoxItem; 
NewTitle.Align := TAlignLayout.Client; 
0

Ответ Иорданской Сети работает очень хорошо. Я взял на себя смелость распространить его пример:

Управление каплями в список Элементы, которые вы хотите, как и любой другой элемент управления. Для быстрого примера, вы можете сделать что-то вроде:

ListBox.items.add(''); // blank Text which normally acts as title 
BoxItem := ListBox.ListItems[ListBox.Items.Count-1]; 
NewTitle := TText.create(nil); 
NewTitle.Text := 'New Orange Title'; 
newTitle.color := TAlphaColors.Orange; 
NewTitle.parent := BoxItem; 
NewTitle.Align := TAlignLayout.Client; 

к:

Пример с одного изображения и два текстовых объектов

procedure TForm10.Button1Click(Sender: TObject); 
    var newtitle : Ttext; 
     boxitem : tlistboxitem; 
     newimage : timage; 
     tw : single; 
    begin 
    ListBox1.items.add(''); 
    BoxItem := ListBox1.ListItems[ListBox1.Items.Count-1]; 

    newimage := timage.create(nil); 
    newimage.width := 24; 
    newimage.height := 24; 
    newimage.bitmap := Image1.Bitmap; 
    Newimage.Align := TAlignLayout.Left; 
    newimage.parent := BoxItem; 
    Newimage.HitTest := false; // otherwise you can't select the listitem 

    tw := (ListBox1.Width - newimage.Width)/2; 
    NewTitle := TText.create(nil); 
    newtitle.TextSettings.Font.Style := [TFontStyle.fsBold]; 
    NewTitle.Width := tw; //Set width to avoid partial text 
    Newtitle.Margins.Left := 5; 
    NewTitle.Text := 'New Orange Title ' + ListBox1.Items.Count.ToString ; 
    NewTitle.TextSettings.HorzAlign := TTextAlign.Leading; 
    newTitle.color := TAlphaColors.Orange; 
    NewTitle.parent := BoxItem; 
    NewTitle.Align := TAlignLayout.Left; 
    NewTitle.HitTest := false; //otherwise you can't select the listitem 
    boxitem.TagString := NewTitle.Text; //the required string when clicking the listitem 

    NewTitle := TText.create(nil); 
    NewTitle.Width := tw; 
    NewTitle.Text := 'New Green SubTitle ' + ListBox1.Items.Count.ToString; 
    NewTitle.TextSettings.HorzAlign := TTextAlign.Leading; 
    newTitle.color := TAlphaColors.Green; 
    NewTitle.parent := BoxItem; 
    NewTitle.Align := TAlignLayout.right; 
    NewTitle.HitTest := false; 
    end; 


    procedure TForm10.ListBox1Change(Sender: TObject); 
    begin 
    label1.Text := listbox1.Selected.TagString; 
    end; 

 Смежные вопросы

  • Нет связанных вопросов^_^