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

Лидеры

  1. #WAMACO

    #WAMACO

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


    • Баллы

      1

    • Постов

      776


  2. Евгений Корепов

    Евгений Корепов

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


    • Баллы

      1

    • Постов

      738


  3. Fedor K

    Fedor K

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


    • Баллы

      1

    • Постов

      55


  4. Сергей Сергеев

    Сергей Сергеев

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


    • Баллы

      1

    • Постов

      144


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

Показан контент с высокой репутацией 20.08.2019 в Сообщения

  1. Ждать поддержку 64. В конце августа, начало сентября обещали действующим подписчикам бэта версию (будет поддержка 64)
    1 балл
  2. Всем привет! Чот тема заглохла, а ответа так и нет. У меня вот с таким манифестом публикуется: <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" android:maxSdkVersion="27" /> А вот с таким уже нет: <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" android:maxSdkVersion="28" /> Поет песенку про то, что надо еще и 64 бит сборку бла бла. Все бы итак хорошо, но проблема проявляется так, что на 64 разрядные телефоны в Плей Маркете приложение не выдается в поиске. Как можно решить эту проблему? ЗЫ Delphi 10.3 Version 26.0.33219.4899
    1 балл
  3. Понятно, я пробовал вроде похожий метод взятый отсюда: https://stackoverflow.com/questions/37830470/firedac-freezes-gui всё равно не удовлетворило
    1 балл
  4. Долго я искал как это сделать в DynamicAppearance. procedure TForm1.Button2Click(Sender: TObject); var i: integer; begin Memo1.Lines.Clear; for i := 0 to ListView1.ItemCount - 1 do begin if ListView1.Items.Objects.FindObjectT<TListItemAccessory>('Accessory2') .Visible = true then begin Memo1.Lines.Add('Индекс отмеченного итема= ' + inttostr(i) + ',Значение = ' + ListView1.Items.Objects.FindObjectT<TListItemText>('Text3').Text ); end; end; end;
    1 балл
  5. я тоже не разобрался.. т.к. у меня в дизайнере создана custom item, все в Live Binding настроено.. поэтому ( для моего случая подходит - т.к. данных немного , не боле 100).. создал два одинаковых DataSet - один это результат запроса, никуда не приделан, второй ( полученный копированием в дизайнере первого) - прибайденный. Открываю запрос - заполняется первый датасет ( это в потоке без синхронайза, т.к. на экран ничего не выводится), на экране нет еще данных. Копирую из 1го во второй - и данные на экране появляются( это уже в синхронайзе). Это позволило развязать получение данных с сервера и отображение их на экране. Понятно, что данных в два раза больше, но для меня не критично.
    1 балл
  6. Что то у Евгения много лишнего в коде. Также вариант AItem.Data['ShowPool']:=AShowPool; медленный (т.к. в списке строк (TDictionary) ищется строка 'ShowPool' прямым перебором от начала до конца всего массива строк ), в моем случае гораздо быстрее. Вот вариант с чекбоксами : lvDetails.ItemAppearanceName := TAppearanceNames.ImageListItem; // или свой тип станадртный TAppearanceNames.ListItem lvDetails.ItemAppearanceObjects.ItemObjects.Accessory.AccessoryType := TAccessoryType.Checkmark; Все. теперь создаете OnItemClick - который будет включаь\выключать чекбокс procedure TfrmMain.lvDetailsItemClick(const Sender: TObject; const AItem: TListViewItem); begin if aItem = nil then exit; if AItem.Objects.AccessoryObject.AccessoryType = TAccessoryType.Checkmark then begin AItem.Objects.AccessoryObject.Visible := not AItem.Objects.AccessoryObject.Visible; // When listview is resized because of rotation, accessory properties will be reset to default values // Save status to the Tag AItem.Tag := integer(AItem.Objects.AccessoryObject.Visible); end; end; Добавляем событие OnUpdateObjects, на случай если девайс поменял ориентацию (в этом случае accessory свойства не сохраняются). procedure TfrmMain.lvDetailsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); begin // In order for text to be truncated properly, shorten text object AItem.Objects.TextObject.Width := AItem.Objects.TextObject.Width - (2 + AItem.Objects.AccessoryObject.Width); // Restore checked state when device is rotated. // When listview is resized because of rotation, accessory properties will be reset to default values if AItem.Objects.AccessoryObject.AccessoryType = TAccessoryType.Checkmark then AItem.Objects.AccessoryObject.Visible := Boolean(AItem.Tag); end; Проверяем наличие чекбокса: if ListView.Items[i].Objects.AccessoryObject.Visible then
    1 балл
  7. Если именно как на приведенной вами картинке то вот так: Делаете ListView с DynamicAppearance, включаете DesingMode, добавляете необходимые поля, включая TListItemAccessory с AccessoryType=Checkmark (он и будет отображать красивые галочки). Не забудьте дать названия добавленным элементам. В моем коде TListItemAccessory называется "ShowPool" P.S. Вариант, предложенный выше, с ListView1.EditMode := True будет выглядеть страшненько, чекбоксы не очень хорошо смотрятся в интерфейсе приложений. procedure TFormMain.FillSettingPools; Var I : Integer; AItem : TListViewItem; begin ListViewPools.BeginUpdate; ListViewPools.Items.Clear; for I := 0 to FPoolList.Count-1 do begin AItem:=ListViewPools.Items.Add; AItem.Data['CoinName']:=FPoolList.Items[I].CoinName; AItem.Data['CoinDetail']:=FPoolList.Items[I].Href; AItem.Data['ShowPool']:=FPoolList.Items[I].ShowPool; TListItemAccessory(AItem.View.FindDrawable('ShowPool')).Visible:=FPoolList.Items[I].ShowPool; //Boolean end; ListViewPools.EndUpdate; end; procedure TFormMain.ListViewPoolsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var AItemAccessory : TListItemAccessory; begin AItemAccessory:=TListItemAccessory(AItem.View.FindDrawable('ShowPool')); if AItem.Data['ShowPool'].AsBoolean then AItemAccessory.Visible:=True Else AItemAccessory.Visible:=False; end; procedure TFormMain.ListViewPoolsItemClick(const Sender: TObject; const AItem: TListViewItem); Var I : Integer; S : String; AListItemAccessory : TListItemAccessory; APool : TPool; AShowPool : Boolean; begin AListItemAccessory:=TListItemAccessory(AItem.View.FindDrawable('ShowPool')); if AListItemAccessory<>nil then begin AShowPool:=AItem.Data['ShowPool'].AsBoolean; AShowPool:=Not AShowPool; AListItemAccessory.Visible:=AShowPool; AItem.Data['ShowPool']:=AShowPool; S:=AItem.Data['CoinName'].AsString; for I := 0 to FPoolList.Count-1 do begin If FPoolList.Items[I].CoinName.Equals(S) Then begin APool:=FPoolList.Items[I]; APool.ShowPool:=AShowPool; FPoolList.Items[I]:=APool; Break; end; end; end; FillListViewPoolsMaster; SavePools; end;
    1 балл
  8. У стандартного TListView уже все есть: //устанавливаем режим редактирования у списка либо в редакторе свойств выставляем ListView1.EditMode := True; //... //Получаем список всех выбранных элементов ListView1.Items.CheckedIndexes(true); //обращаться к свойству текущего элемента так: ListView1.Items.SetChecked(const Index: Integer; const Value: Boolean); ListView1.Items.GetChecked(const Index: Integer): Boolean;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...