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

zairkz

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

    135
  • Зарегистрирован

  • Посещение

  • Победитель дней

    12

Весь контент zairkz

  1. На 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;
  2. zairkz

    Android compile

    А какой проц на 4.2.2 и на 4.0.3? Если плохо работает, то скорее всего на 4.2.2 стоит Intel, а там эмулятор ARM вот он и тормозит, и сдается мне что и на 4.0.3 стоит Intel, а там эмулятора вообще нет вот он и не запускается.
  3. zairkz

    Push под iOS

    procedure TForm_Main.RegisterPush; var ADeviceID, ADeviceToken: string; begin {$IFDEF ANDROID} // Для Android APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM); APushService.AppProps[TPushService.TAppPropNames.GCMAppID] := '**************'; {$ELSE} // Для iOS APushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS); {$ENDIF} // Создаём подключение к серверу AServiceConnection := TPushServiceConnection.Create(APushService); // Активируем подключение AServiceConnection.Active := True; // Подключаем делегаты AServiceConnection.OnChange := OnServiceConnectionChange; AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent; ADeviceID := APushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; ADeviceToken := APushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; if (ADeviceID <> '') AND (ADeviceToken <> '') then begin // Регистрируем устройство на сервере для отправки push сообщений RegisterDevice(ADeviceID, ADeviceToken, User_id.ToString); end; end; GCM не работает для apple. Я так понимаю Вы сертификаты еще не сгенерировали для PUSH в iOS? Хотя судя по картинке может и работает)
  4. Нет не было, но бывают такие аномальные явления, скорее всего из за вспышек на солнце или фаза луны не та. Исходник давай)
  5. zairkz

    Push под iOS

    А что именно в клиенте? В статье есть регистрация токенов и принятие OnReciveNotification, в iOS Push сообщения поддерживает перенос строки через (#13#10) или если на сервере PHP генерируете, тогда через %0A, кстати в пуше можно слать полноценный JSON, который не выводится в шторку (текст сообщения выводится), Zuby делал такое.
  6. А какая задача именно? Может лучше на ListView сделать? Если ListView подойдет могу скинуть ListViewHelper(Zuby), но только он под Delphi Seatle 10, не знаю подойдет ли к Seatle 10 Update 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
  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;
  9. [fmx] XML RPC API http://fire-monkey.ru/topic/1394-fmx-xml-rpc-api/ Уже давно)
  10. А у меня вчера, действительно эпопея), поэтому и создал тему что бы кто нибудь не разбил свой монитор, не качал бы образ Мака гигов под 40), не убил свои клетки нервные))
  11. Добрый день, это просто стрессовая ночь без сна, как меня з..бал APPLE (( Если кто то собирается выпускать сертификаты Apple (сертификаты разработчика или Push сертификаты), и начнет парится потому что сертификаты выпускаются просроченными, знайте что вы не виноваты) Вообщем в маке в "Связке ключей" в меню "Вид" кликнете на "Показать скрытые сертификаты" Далее в Связке "Система" найдите просроченный сертификат Apple и удалите его. После чего с кабинета разработчика скачайте и установите новый сертификат, ссылка на скачивания есть при создания нового сертификата в самом низу. (( Подробнее на http://stackoverflow.com/questions/35390072/this-certificate-has-an-invalid-issuer-apple-push-services/35399656#35399656 Извиняются...
  12. Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле. Вы хотите сказать что это не костыль? Какой же костыль)), костыль это при клике запускать таймер и если изменился фокус в течении секунды тогда что то делать, типа того, вот это костыль)) Tap - Нажатие
  13. Используйте Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле.
  14. Вот так все работает, но может я не понял вопроса Желательно это делать в OnApplyStyleLookup данного объекта. например если хотите заполнить стилевой текст или картинку: Новый объект стиля TButton содержит TText, TLabel, TImage и TButton procedure TForm_main.Button1ApplyStyleLookup(Sender: TObject); begin TText(TButton(Sender).FindStyleResource('detail')).Text := 'Детали'; TLabel(TButton(Sender).FindStyleResource('titul')).Text := 'Наименование'; TImage(TButton(Sender).FindStyleResource('img')).Bitmap.Assign(BTMP); TButton(TButton(Sender).FindStyleResource('but_min')).Tag := 58; TButton(TButton(Sender).FindStyleResource('but_min')).OnClick := ButW_Min; end; Сделайте одну процедуру OnApplyStyleLookup и присвойте необходимым объектам. Можно напрямую заполнять хоть откуда например TText(Button1.FindStyleResource('detail')).Text := 'Детали'; но тогда страшные аномалии происходят если ваш объект находятся допустим в скролбоксе.
  15. Запустил ради интереса этот пример. Если быстро двигать пальцем влево-вправо, приложение вылетает Да согласен не лучший пример)), но для освоения работы жестов думаю подойдет для начала
  16. zairkz

    TMultiView и TListBox

    Удивительно, так тоже не работает! Выделение итема все равно остается... Да не может быть, все работает на MultiView.OnHidden procedure TForm1.MultiView1Hidden(Sender: TObject); begin ListBox1.ItemIndex := -1; end;
  17. zairkz

    TMultiView и TListBox

    Если вам подойдет можете на MultiView1 ->OnHidden прописать ListBox1.ItemIndex:=-1;
  18. Первое что пришло в голову в виде "бреда", точнее так уже сделали)) Но не знаю насколько вам подойдет такое решение. У нас есть сервер базы данных, на сервере понятно есть все данные необходимые для печати, принтер настроен на сервере, на сервере есть служба которая мониторит базу (таблицу) в которой если появилась новая команда для печати тогда служба формирует документ из данных базы с использованием FastReport, и кидает на принтер по умолчанию для печати. Сервер (а точнее комп Pentium DualCore, 2 gb RAM) на котором MySQL, Windows (хотя FastReport есть и для Linux (beta)) работает автономно уже 8-й месяц, и за это время не прикоснулись к нему ни разу (даже если честно очень странно)
  19. Способов много, попробуйте например через ActionList, откройте пример на TabControl Запустите студию -> Open Sample Project -> Samples\Object Pascal\Mobile Snippets\TabSliding и посмотрите вебинары от Embarcadero https://www.youtube.com/channel/UCtqzKKPLL1uoI7yyCBmKP1w/videos еще ведь есть компонент от Ярослава в составе FGX TfgFlipView - слайдер изображений
  20. Может можно таким же способом добавить ключ? <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> из этой темы http://fire-monkey.ru/topic/1753-oshibki-i-kosiaki-delphi-xe10-seattle-i-xcode-7/ При добавлении получается: <key>NSAppTransportSecurity</key> <string> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> </string> ХЗ пройдет проверку или нет
  21. zairkz

    Режим звонка

    Такое же поведение наблюдается если включить на Iphone режим модема, и к Iphone подключить хотя бы одно устройство. Но пока понятия не имею что с этим сделать.
×
×
  • Создать...