Перейти к содержанию
Fire Monkey от А до Я

Лидеры

  1. zairkz

    zairkz

    Пользователи


    • Баллы

      5

    • Постов

      135


  2. kami

    kami

    Пользователи


    • Баллы

      3

    • Постов

      643


  3. Andrey Efimov

    Andrey Efimov

    Модераторы


    • Баллы

      1

    • Постов

      842


  4. krapotkin

    krapotkin

    Пользователи


    • Баллы

      1

    • Постов

      2 185


Популярный контент

Показан контент с высокой репутацией 06.03.2016 во всех областях

  1. Да, потокобезопасный "классовый" метод. Однако, в связи с соседней темой есть важные дополнения: 1. этот метод не записывает преамбулу. 2. Для записи используется кодировка UTF8 3. Метод создает файл с эксклюзивным доступом к нему. Пока метод работает, попытка достучаться до файла (например из другого потока) провалится с выбросом исключения. Кроме того - нежелательно пользоваться методом TFile.AppendAllText без явного указания кодировки (буквально недавно здесь и здесь была куча споров. Жалко, половину комментариев потерли...)
    1 балл
  2. В общем случае - никак. Если файл не содержит преамбулу (1-3 байта) - идентификатор кодировки, то предстоит только догадываться. Если содержит - посмотрите исходники TStringList или TFile.AppendAllText. Вкратце - для автоматического "угадывания" используемой кодировки задействуется TEncoding.GetBufferEncoding
    1 балл
  3. Отдельную тему создавайте (в правилах ясно указано: одна тема-один вопрос), здесь обсуждается другая тема.
    1 балл
  4. krapotkin

    listBoxItem управление цветом

    кстати, в D11 через месяц обещали какие-то вкусные плюшки как раз по ListView items, редактор и что-то там
    1 балл
  5. На ListView скролл значительно лучше и без лагов, и вообще очень мощный компонент, все равно, рано или поздно вы откажетесь от ListBOX. Кнопку можно разместить стандартным способам в настройках самой ListView. Если же вам нужно сто кнопок в одном Итеме, тогда да придется чуток заморочиться. Во первых надо в настройках ListView в ItemAppearance включить ImageListItemBottomDetailRightButton. Далее в ItemAppearanceObjects -> ItemObjects можете указывать любые настройки, через PlaseOffset.X - Y перемещать текст и детайл текст как хотите и куда хотите, тоже самое с картинкой и кнопкой, менять цвета и шрифты. Можете повесить обработчик в свойствах на OnItemClick, а также нажатие на саму кнопку OnButtonClick. При заполнении Item'ам присваивайте Tag и по ним ориентируйтесь. Далее для покраски Item'ов подключите Хелпер Zuby(все таки не хелпер, а измененный исходник TListView) FMX.ListView.zip, пропишите пару процедур: procedure myDefaultItemColor(const aLV: TListView; const aItemIndex: integer; const aUseCustomColor: Boolean = false); begin with aLV.Items[aItemIndex] do begin Data['aUseCustomColor'] := aUseCustomColor; end; end; /// <summary> устанавливаем кастомный цвет для Item'a </summary> procedure myCustomItemColor(const aLV: TListView; const aItemIndex: integer; const aCustomColor: TAlphaColor; const aUseCustomColor: Boolean = true); begin with aLV.Items[aItemIndex] do begin Data['aUseCustomColor'] := aUseCustomColor; Data['aCustomColor'] := aCustomColor; end; end; Далее к примеру заполняем ListView ListViewPoisk.BeginUpdate; for i := 0 to 15 do begin ListViewPoisk.Items.Insert(0); ListViewPoisk.Items[0].Tag := i; ListViewPoisk.Items[0].Text := 'X_text'; ListViewPoisk.Items[0].Detail := 'X_detail'; ListViewPoisk.Items[0].ButtonText := 'X_buttext'; ListViewPoisk.Items[0].Data['offer'] := 0; //Если нужно хранить не отображаемые данные. ListViewPoisk.Items[0].Bitmap.Assign(Image1.Bitmap); if i mod 2 = 0 then myCustomItemColor(ListViewPoisk, ListViewPoisk.Items[0].Index, TAlphaColors.Lime); // TAlphaColors.Lime можно заменить TAlphaColorF.Create(70 / 255, 130 / 255, 180 / 255, 155 / 255).ToAlphaColor; end; ListViewPoisk.EndUpdate;
    1 балл
  6. Нет не было, но бывают такие аномальные явления, скорее всего из за вспышек на солнце или фаза луны не та. Исходник давай)
    1 балл
  7. На ListView будет достаточно сложно это реализовать. Попробуйте TPresentedScrollBox и элементы стиля. Стиль нужен: к примеру: Вам необходимо фиксированные размеры панелек, например глобальные переменные ObjectHeight := 205; ObjectWidth := 160; PanHeight := 200; PanWidth := 148; Затем вычислить количество колонок на FormResize, тоже глобальные пр. procedure TForm_main.FormResize(Sender: TObject); begin PrColumns := Floor(Form_main.ClientWidth / ObjectWidth); AllMargins := (Form_main.ClientWidth - (PrColumns * PanWidth)) / (PrColumns + 1); end; Процедура заполнения, здесь только создания панелей в скроллбоксе, я использовал обычный button в виде панельки procedure TForm_main.LoadObject(); var x, i: integer; LT: TLayout; Butt: TButton; begin x := 0; for i := 0 to OBJ.Count - 1 do begin if x mod PrColumns = 0 then begin LT := TLayout.Create(PresentScrolBox); LT.Parent := PresentScrolBox; LT.Position.y := PresentScrolBox.ContentBounds.Height + 100; LT.Align := TAlignLayout.Top; LT.Height := ObjectHeight; LT.HitTest := false; end; Butt:= TButton.Create(LT); Butt.Parent := LT; Butt.Position.x := LT.Width; Butt.Height := PanHeight; Butt.Width := PanWidth; Butt.Align := TAlignLayout.Left; Butt.Margins.Top := (ObjectHeight - PanHeight) / 2; Butt.Margins.Bottom := (ObjectHeight - PanHeight) / 2; Butt.Margins.Left := AllMargins; Butt.StyleLookup := 'buttonx'; Butt.text := ''; Butt.tag := 55; //Пример Butt.TextSettings.WordWrap := True; Butt.OnTap := Form_main.ButObjTap; {$IFDEF MSWINDOWS} Butt.OnClick := Form_main.ButtObjectClick; {$ENDIF} Butt.OnApplyStyleLookup := Form_main.ObjectStyle; x := x + 1; end; end; LT := TLayout.Create(SB_Object); LT.Parent := SB_Object; LT.Position.y := SB_Object.ContentBounds.Height + 100; LT.Align := TAlignLayout.Top; LT.Height := 72; end; После создания заполнять данными необходимо в Butt.OnApplyStyleLookup := Form_main.ObjectStyle; procedure TForm_main.ObjectStyle(Sender: TObject); var i: integer; begin for i := 0 to 9 do if TButton(Sender).tag=i then begin TButton(TButton(Sender).FindStyleResource('btn_add')).tag := i; // TButton(TButton(Sender).FindStyleResource('btn_add')).text := ‘+’; TButton(TButton(Sender).FindStyleResource('btn_add')).OnClick := Form_main.But_Main_Add; TText(TButton(Sender).FindStyleResource('text')).text := 'i = '+inttostr(i); TText(TButton(Sender).FindStyleResource('obj_price')).text := ‘500’; TImage(TButton(Sender).FindStyleResource('img')).Bitmap.Assign(Какой нибудь битмап); break; end; end; Желательно данные и картинки загрузить сперва в Record, затем заполнять их в OnApplyStyleLookup. ХЗ может подойдет вариант, на слабых телефонах лагов не много, но и ListView на слабых подлагивает. Как вариант старое наше с Zuby приложение по доставке еды Gepard, не судите строго мы его забросили): https://play.google.com/store/apps/details?id=kz.vbaze.Gepard
    1 балл
  8. Нужен Timer и ListView Например в ListView -> OnUpdateObjects procedure TForm1.ListViewPoiskUpdateObjects(const Sender: TObject; const AItem: TListViewItem); var aTime: TListitemText; begin aTime := AItem.Objects.FindDrawable('time') as TListitemText; if aTime = nil then begin aTime := TListitemText.Create(AItem); aTime.Name := 'time'; aTime.PlaceOffset.X := 0; aTime.PlaceOffset.Y := 2; aTime.Font.Size := 14; aTime.TextVertAlign := TTextAlign.Center; aTime.TextAlign := TTextAlign.Center; end; aTime.Width := 72; aTime.Height := 20; //Двигаем Text итема с отступом AItem.Objects.TextObject.PlaceOffset.X := aTime.Width + 6; end; И таймер procedure TForm1.Timer1Timer(Sender: TObject); var i: integer; begin if ListView1.ItemCount > 0 then for i := 0 to ListView1.ItemCount - 1 do ListView1.Items[i].Data['time'] := FormatDateTime('ss сек.', Now); end;
    1 балл
  9. Update. Исправили недостаток на Android 5. Большое спасибо Rusland за тестирование. Итоговый файл прикладываю. По прежнему не рекомендую использовать этот модуль, если создаваемые в runtime контролы ложатся напрямую на форму. Перед написанием претензий, пожалуйста прочитайте known issues в комментарии в начале файла. vkbdhelper.zip
    1 балл
  10. zairkz

    TListViewHorz

    https://yadi.sk/d/ziNcatNipiKZD
    1 балл
  11. SaveState вам в помощь. А вообще сперва лучше пользуйтесь поиском, это не сложно.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...