-
Постов
385 -
Зарегистрирован
-
Посещение
-
Победитель дней
14
Ответы сообщества
-
Пост xenon54 - сообщение в ListViewItem Transpatent, как? был отмечен как ответ
У стиля листвью есть объект "itembackground" : TColorObject. Выставляете у него свойство "Color" в нужное вам значение с альфа каналом (как пример $11FF0000) и будет вам счастье.
-
Пост xenon54 - сообщение в Неблокирующий диалог в мобильном приложении был отмечен как ответ
Что мешает указать stylelookup для панели "backgroundstyle" или как там он у вас зашит.
-
Пост xenon54 - сообщение в XE8 и TApplicationEvents был отмечен как ответ
Советую глянуть FGX от Ярослава, там есть реализация дополнительных ивентов.
-
Пост xenon54 - сообщение в Событие OnMouseUp у TTrackBar был отмечен как ответ
Для XE7 можно сделать так:
TrackBar1.StylesData['hThumb.OnMouseUp'] := TValue.From<TMouseEvent>(form1.TrackBar1ThumbMouseUp); И не нужно таскать библиотеки с собой.
-
Пост xenon54 - сообщение в [Редактор кода] [Castalia] Как убрать выделение блоков begin-end в XE8? был отмечен как ответ
В настройках касталии отключается
castalia->options->editor->smart highlighting
-
Пост xenon54 - сообщение в Создать объект класса, имя которого хранится в переменной был отмечен как ответ
Is there a way to instantiate a class by its name in delphi?
-
Пост xenon54 - сообщение в [iOS] Запуск был отмечен как ответ
Для любой компиляции IOS проекта нужна Mac OS. Естественно на трекерах можно найти образ MacOs для WM.
-
Пост xenon54 - сообщение в [Android] Корректно удаляем TExpander в Android был отмечен как ответ
Фактически, когда вы пишете
if c is TExpander then FreeAndNil(c); То для мобильных платформ это просто обнуляет локальную ссылку. Деструктор класса вызоветс ятолько тогда когда на объект не осталось не одной ссылки. У вас как минимум еще Parent ссылается на этот объект. Если у вас более нигде нет ссылок на этот объект, то такой код уничтожит объект:
if c is TExpander then begin c.Parent := nil; end; http://fire-monkey.ru/topic/10-kak-pravilno-udaliat-kontroly-v-runtime/
-
Пост xenon54 - сообщение в [TidHTTP] Скачивание файлов без замораживания пользовательского интерфейса был отмечен как ответ
http://fire-monkey.ru/topic/30-fonovoe-vypolnenie-operatcii-bez-zamorazhivani/
-
Пост xenon54 - сообщение в Один размер под разные дисплеи был отмечен как ответ
Тогда уж проще юзать TScaledLayout
-
Пост xenon54 - сообщение в [TForm] Задание фонового изображения для формы был отмечен как ответ
У формы есть специально свойство Fill для этого.
-
Пост xenon54 - сообщение в [TidTCPServer] [TidTCPClient] Как отправить файл с сервера на клиент используя Indy10 и получить файл на стороне клиента? был отмечен как ответ
Отправка:
var len : integer; begin Context.Connection.IOHandler.WriteBufferOpen; Context.Connection.IOHandler.Write(len); Context.Connection.IOHandler.WriteFile(AFileName); Context.Connection.IOHandler.WriteBufferFlush; Context.Connection.IOHandler.WriteBufferClose; Прием ( Тут на клиентской стороне должен быть метод, который по таймеру смотрит есть ли данные на входном буффере ):
var sz : integer; FS : TMemoryStream; begin if FIdTCPClient.IOHandler.InputBufferIsEmpty then exit; sz := FIdTCPClient.IOHandler.InputBuffer.Size; if sz <= 0 then exit; FS := TMemoryStream.Create; FIdTCPClient.IOHandler.ReadStream(FS,sz); -
Пост xenon54 - сообщение в Работа сервиса при закрытом приложении был отмечен как ответ
Ну тут все просто. Remote Push Notification.
Вот, хороший видос на эту тему для ведра тынц
И сервис никакой не нужен.
Для ведра это называется "Google Cloud Messaging"
-
Пост xenon54 - сообщение в [TListVIew] Отключение DeleteButton был отмечен как ответ
Свойство "CanSwipeDelete"
-
Пост xenon54 - сообщение в Смена родительского компонента для аниматора был отмечен как ответ
procedure TForm2.MoveRect(Rect: TRectangle); begin TAnimator.AnimateIntWait(Rect, 'Position.Y', 0); TAnimator.AnimateInt(Rect, 'Position.Y', 152); end; Так вас не устроит?
-
Пост xenon54 - сообщение в [TPopupBox] Как программно открыть выпадающий список в TPopupBox? был отмечен как ответ
type TpopupBox_helper = class helper for TPopupBox procedure ShowPopup; end; procedure TForm1.Button1Click(Sender: TObject); begin PopupBox1.Items.Add('Item1'); PopupBox1.Items.Add('Item2'); PopupBox1.Items.Add('Item3'); PopupBox1.Items.Add('Item4'); PopupBox1.ShowPopup; end; { TpopupBox_helper } procedure TpopupBox_helper.ShowPopup; begin self.click; end; -
Пост xenon54 - сообщение в SearchBox и фильтры поиска был отмечен как ответ
Эту тему читали?
http://fire-monkey.ru/topic/781-otklonenie-filtratciia-teksta-ne-korrektno-rab/
У меня с поиском все впорядке в ListView. Ну как впорядке =\ Вот этот фикс сделал, который выше, ну и там строку поиска приходится "передергивать" если хочешь чтобы новые итемы попадали под фильтр, а не тупо вычеркивались и визибла.
-
Пост xenon54 - сообщение в Запись array of record в файл был отмечен как ответ
Вместо "string" в record нужно использовать "array [0..49] of char".
TXSession = record name : array[0..49] of Char; name2 : array[0..49] of Char; end; А вообще, не уверен что эта тема относится к FM, разве что для не мобильной платформы можно было бы использовать string[50].
-
Пост xenon54 - сообщение в Выделяется итем, хотя клик идет не по нему был отмечен как ответ
Сам спросил, сам ответил...
В FMX.ListView в функции определения индекса итема по абсолютной координате клика на ListView почему-то заложено такое поведение ( возвращает индекс последнего элемента если клик пришелся на область, вертикальная координата которой больше чем начало последнего итема). Вот так исправляется:
function TCustomListView.FindItemAbsoluteAt(ViewAt: Integer): Integer; var Left, Right, Pivot, Value: Integer; begin UpdateItemLookups; if Items.Count < 1 then Exit(-1); if ViewAt < 1 then Exit(0); { if ViewAt >= FHeightSums[FHeightSums.Count - 1] then Exit(FHeightSums.Count - 1); } if ViewAt > FHeightSums[FHeightSums.Count - 1] + GetItemHeight( GetItemCount - 1 ) then Exit(- 1); -
Пост xenon54 - сообщение в Как отобразить выделенный ListBoxItem не пользуясь цветом фона был отмечен как ответ
Если я правильно понял (Вы сделали свой стиль для ListBoxItem и вставили туда свой RadioButton), то:
1. Вам нужно присвоить "stylename" для этого RadioButton в стиле, допустим назвали вы его "MyRB".
2. В обработчике событий ListBox'a - OnItemClick пишем:
procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); var i : integer; begin for i := 0 to ListBox1.count-1 do ListBox1.ItemByIndex(i).StylesData['MyRB.IsChecked'] := False; Item.StylesData['MyRB.IsChecked'] := True; end; -
Пост xenon54 - сообщение в ListItemBackground был отмечен как ответ
Нашел вот это:
procedure TCustomListView.DrawItemsFill(const StartItem, EndItem: Integer; const LocRect: TRectF; const Opacity: Single; const HeaderIndex: Integer); var I, Sep, AltIndex: Integer; DrawRect, DrawSubRect, SepRect: TRectF; ItemObjects: TListViewItem; SepHeight: Single; begin SepHeight := GetSeparatorLineHeight; for I := StartItem to EndItem do if I <> HeaderIndex then begin ItemObjects := Items[I]; if (ItemObjects <> nil) and ((ItemObjects.Count > 0) or (Items[Index - 1].Purpose <> TListItemPurpose.None)) then begin DrawRect := GetItemRelRect(I, LocRect); if ItemObjects.Purpose = TListItemPurpose.None then begin FBrush.Color := FItemStyleFillColor; Тут "FBrush.Color := FItemStyleFillColor;" можно поменять на свой цвет, допустим в зависимоcти от свойства tag. Получится что-то типа :
if ItemObjects.Tag <> 0 then FBrush.Color := ItemObjects.Tag else FBrush.Color := FItemStyleFillColor; Вопрос как применить эти изменения не изменяя FMX.ListView? Если написать Helper к TCustomListView в своем юните, то естественно он не подхватывается, а писать его в FMX.ListView ИМХО тупо, уж проще сам метод в TCustomListView поправить. Сделать наследника TlistView как я понял тоже гиблое дело из-за того что метод DrawItemsFill не виртуальный и его не переопределить. Как быть?
-
Пост xenon54 - сообщение в Как правильно удалить итемы TListbox? был отмечен как ответ
Похоже что все оказалось проще простого. У ListBox'a также как и у ListView есть метод items.clear. "Memory warning" больше не срабатывает.