-
Постов
385 -
Зарегистрирован
-
Посещение
-
Победитель дней
14
Сообщения, опубликованные xenon54
-
-
1. В исходниках найти где отрисовка селектбл итема ну и не отрисовывать выделение.
2. Изменить стиль выделенного итема
-
На пустом проекте тоже самое? Я имею ввиду проект в котором только листбокс и несколько итемов без каких либо обработчиков и т.д..
-
Под IOS такого нет. Просто так приложение никогда не вываливается. Все вылеты всегда связаны с ошибками пограммиста. Каждый раз когда натыкаюсь на вылет или что-то подобное, после разбора полетов становится понятно, что это не какое-то мистическое поведение, а банальные ошибки или не знание каких-то нюансов.
-
Item.StylesData['mybtn.OnClick'] := TValue.From<TNotifyEvent>(Domybtnclick);
-
-
-
Мб утечки? На пустом приложении с листвью тоже самое?
-
Ну естественно они все в памяти висят. Ты создаешь считай объекты типа TBitmap методом LoadFromFile выделяешь память под размеры этой картинки. И пока этот битмап не уничтожен(а пока твой список существует, все битмапы живут), выделенная память под него будет занята. Этот момент уже не единожды обсуждался. Лично мое решение это при скроле листвью тебе нужно определять какие итемы сейчас находятся в области видимости и только для них держать картинки в памяти, т.е. ты должен при скроле динамически подгружать/выгружать картинки. Если размеры картинок небольшие, то думаю что проблем возникнуть не должно. Так же, если у тебя там картинки больших размеров чем реальные битмапы, то лучше используй не LoadFromFile, а LoadThumbnailFromFile.
-
Сами по себе задеплоенные файлы не грузятся в RAM. Значит вы их загружаете в память сами. Что за картинки вообще? как используются?
-
Тупо деплою нужные файлы в проект и проблем таких нет.
-
Да, приложение перестало вылетать.
-
Загружая картинку в TBitmap она хранится там именно как PMB и занимают {censored} сколько места. Сам не понимал почему у меня приложение на IOS без конца вылетало, потом глянул сколько памяти уходит при загрузке изображений и {censored}. Много гуглил, но так и не нашел нормального решения этого вопроса. Приходится хранить в памяти только те картинки которые реально нужны здесь и сейчас.
-
http://fire-monkey.ru/topic/950-xe7-ios-vazhno-vladeltcam-xe7-ne-obnovliat-ios-do-versii-813/
В версии 8.1.3 изменился запуск приложения.
-
-
procedure TForm1.Button1Click(Sender: TObject); var http: TIdHTTP; formData: TIdMultipartFormDataStream; begin http := TidHttp.Create(nil); try formData := TIdMultipartFormDataStream.Create; try formData.AddFile('SendFile', 'C:\test.txt', 'text/plain'); formData.AddFormField('action','upload_file'); http.Request.ContentType := 'multipart/form-data'; http.Post('http://test.ru/test.php',formData); finally formData.Free; end; finally http.Free; end; end;
PHP:
<? $files_uploaded = 1; foreach ($_FILES as $key => $value) if (move_uploaded_file($_FILES[$key]['tmp_name'], "./uploads/{$files_uploaded}.jpg")) $files_uploaded++;
Папка "uploads" должна быть создана заранее или программно.
-
Там же есть четкая инструкция по установке:
D.P.F iOS Native Components ( D.P.F iOSNC )
-----------------------------------------------
How to install and use:
1) Go Tools->Options->Delphi Options->Library and :
1-1) change Selected Pltaform to 32-bit windows and add X:\DPF.iOS.Native.Components\ in library path
1-2) Then change Selected Platform to iOSSimulator and add X:\DPF.iOS.Native.Components\ in library path
1-3) Then change Selected Platform to iOSDevice and add X:\DPF.iOS.Native.Components\ in library path
2) Important: Add this frameworks in the SDK Manager (see Frameworks.png picture after installing)
/System/Library/Frameworks/AddressBookUI
/System/Library/Frameworks/AddressBook
/System/Library/Frameworks/EventKit
/System/Library/Frameworks/MessageUI
/System/Library/Frameworks/AudioToolbox
/System/Library/Frameworks/MapKit
/System/Library/Frameworks/Social
/System/Library/Frameworks/QuickLook
/System/Library/Frameworks/SystemConfiguration
/System/Library/Frameworks/MobileCoreServices
/System/Library/Frameworks/GameKit
/System/Library/Frameworks/CoreBluetooth
/System/Library/Frameworks/Accounts
/System/Library/Frameworks/AdSupport
/System/Library/Frameworks/ExternalAccessory
/System/Library/Frameworks/iAd (No need in XE7 and later)
/System/Library/Frameworks/StoreKit (No need in XE7 and later)
Tools -> Options -> SDK Manager -> Scroll down remote paths listview ->Go Frameworks section -> Select one of framework item (e.g: select /System/Library/Frameworks/UIKit) -> click Add the new path item
and Lib(s)
/usr/lib/libxml2.dylib
--------------------------------------
In XE7 You must be add $(SDKROOT) the beginning of each path on remote machine value
like this: [ $(SDKROOT)/System/Library/Frameworks ]
or
like this: [ $(SDKROOT)/usr/lib/ ]
--------------------------------------
2-1)
path on remote machine : /System/Library/Frameworks
Framework name: AddressBookUI
include subdirectories: unchecked
Add again:
2-2)
path on remote machine : /System/Library/Frameworks
Framework name: AddressBook
include subdirectories: unchecked
Add again:
2-3)
path on remote machine : /System/Library/Frameworks
Framework name: EventKit
include subdirectories: unchecked
Add again:
2-4)
path on remote machine : /System/Library/Frameworks
Framework name: MessageUI
include subdirectories: unchecked
Add again:
2-5)
path on remote machine : /System/Library/Frameworks
Framework name: AudioToolbox
include subdirectories: unchecked
Add again:
2-6)
path on remote machine : /System/Library/Frameworks
Framework name: MapKit
include subdirectories: unchecked
Add again:
2-7)
path on remote machine : /System/Library/Frameworks
Framework name: Social
include subdirectories: unchecked
Add again:
2-8)
path on remote machine : /System/Library/Frameworks
Framework name: QuickLook
include subdirectories: unchecked
Add again:
2-9)
path on remote machine : /System/Library/Frameworks
Framework name: SystemConfiguration
include subdirectories: unchecked
Add again: (No need in XE7 and later)
2-10)
path on remote machine : /System/Library/Frameworks
Framework name: iAd
include subdirectories: unchecked
Add again: (No need in XE7 and later)
2-11)
path on remote machine : /System/Library/Frameworks
Framework name: StoreKit
include subdirectories: unchecked
Add again:
2-12)
path on remote machine : /System/Library/Frameworks
Framework name: MobileCoreServices
include subdirectories: unchecked
Add again:
2-13)
path on remote machine : /System/Library/Frameworks
Framework name: GameKit
include subdirectories: unchecked
Add again:
2-14)
path on remote machine : /System/Library/Frameworks
Framework name: CoreBluetooth
include subdirectories: unchecked
Add again:
2-15)
path on remote machine : /System/Library/Frameworks
Framework name: Accounts
include subdirectories: unchecked
Add again:
2-16)
path on remote machine : /System/Library/Frameworks
Framework name: AdSupport
include subdirectories: unchecked
2-17)
path on remote machine : /System/Library/Frameworks
Framework name: ExternalAccessory
include subdirectories: unchecked
2-18)
path on remote machine : /usr/lib
Framework name: libxml2.dylib
Path type: Library path: checked
include subdirectories: unchecked
after Ok dialog, click Update local File Cache button.
-------------------------------------------------------------------------------------------
XE4: (Not supported after v9.0.0)
3) DPFiOSPackagesXE4.dpk
3-1) Select 32-bit windows and build then install. (No Need Simulator or Device)
XE5: (Not supported after v9.0.0)
4) DPFiOSPackagesXE5.dpk
4-1) Select 32-bit windows and build then install. (No Need Simulator or Device)
XE6: (Not supported after v9.0.0)
5) DPFiOSPackagesXE6.dpk
5-1) Select 32-bit windows and build then install. (No Need Simulator or Device)
XE7:
5) DPFiOSPackagesXE7.dpk
5-1) Select 32-bit windows and build then install. (No Need Simulator or Device)
Or Use DPFiOSPackagesGroup.groupproj
-------------------------------------------------------------------------------------------
6) Before deploying Demos on Simulator or Device dont forget : Go to
Project Menu - > Deployment -> Deply
-------------------------------------------------------------------------------------------
7) This is very important to: if you want have very high performance in your project override in all you TForm declrations PaintRects
Sample:
type
TFDatePicker = class( TForm )
private
{ Private declarations }
protected
procedure PaintRects( const UpdateRects: array of TRectF ); override; <---- This line a important !
public
{ Public declarations }
end;
and in your implementation:
procedure TFDatePicker.PaintRects( const UpdateRects: array of TRectF );
begin
{} <-- This is important you not have any [inherited] keyword here !
end;
----------------------------------------------------------------------------------------------------------------
Note:
If you want to use iOS 8.0 SDK, if you see compile error :
..\Documents\Embarcadero\Studio\SDKs\iPhoneOS8.0.sdk/usr/lib/system/libdispatch.dylib. Link against the umbrella framework 'System.framework' instead. for architecture armv7
then you must be copy Macapi.Dispatch.pas file from delphi source folder into this framework folder and change this line :
libdispatch = '/usr/lib/system/libdispatch.dylib';
to
libdispatch = '/usr/lib/libSystem.dylib';
Now, by this work, you not have a delphi Form drawing (very slow), then you must be add a TDPFUIView on the form
and change background color or image,
Enjoy it!
-------------------------------------------------------------------
© 2011-2014 Dadeh Pardazane Faragir (D.P.F). All rights reserved.
http://www.dpfaragir.com
Developed by: Babak Yaghoobi ( b_yaghobi@yahoo.com or bayaghoobi@gmail.com)Вы все действия выполнили?
-
Я сейчас попробовал, симуляторы реально не меняются, но поменяв SDK на 7.1 и указав симулятор например iphone5 он запускается на симуляторе 7.1, а не 8.1.
-
Если нажать сюда, то произойдет обновление устройств(симуляторов) такое же как если бы нажать в контекстном меню, в это время даже на папочке таргет загорается картиночка "рефреш"
-
Ну в общем-то стало понятно что мы до сих пор о разном. Судя по вашему сообщению,вы думаете, что у меня все итемы это какие-то мифические картинки. У меня точно такие же итемы как и в ListView. Точно также в них есть текст и картинка слева. И "список клиентов, и информацию о клиентах и список товара, и информацию о товаре, и документы и информацию о документах" - это все текст. Картинкой в итеме является только картинка, которая слева. К примеру список людей: слева маленькая фотка сотрудника, а справа (ФИО, возраст, цвет трусов) это текст, а не картинка.
-
На ipad не пробовал. Картинки не сделаны под какойто телефон, изначально они на телефоне лежат с разрешением 1024х768, просто загружаются в битмап он ине loadfromfile, а loatThumbnail, соответственно и памяти кушает в 10 раз меньше. Далее. Есть по-моему огромная разница замостить картинками целый ДБгрид на всем экране или по одной картинке в каждый элемент списка, как минимум разница во столько раз, сколько колонок в ДБГриде. Насчет поедаемой памяти вообще вас не понял. Контрол держит в памяти только столько картинок, сколько итемов видно, а это всегда величина постоянная и небольшая с учетом загрузки миниатюр, а не гигантов реальных размеров. ДБГрид и список - огромная разница в этой реализации ибо у списка в момент скрола если появляется новый элемент в области видимости, то загрузить нужно всего 1 картинку и выгрузить 1, а в гриде много картинок одновременно надо подгружать удалять. Ну и критиковать проще всего. У вас есть решение которое бы позволило иметь огромные списки в тысячу и более элементов с картинками и не вызывало out of memory? Проверю это решение на IPad2, если уж на этом говне будет нормально, то о чем еще говорить... А цели сделать этот список чтобы он хорошо работал у всех бомжей у меня нет, спасибо, хватил уже истории когда всем нужна была поддержка идиотского IE6. Думаю не стоит разработчикам 2 раза на 1 грабли наступать.
-
Картинки изначально уже лежат на устройстве. У каждого итема есть поле в котором хранится путь к файлу картинки. При скроле этого контрола каждый раз высчитывается какие итемы сейчас должны быть в области видимости. Дальше идет проверка, загружена ли в память уже картинка для каждого видимого итема ну и соответственно загружается или ничего не делается. Дальше вызывается Paint и в нем начинается рисование итемов контрола. Так что да картинки для итемов подгружаются и выгружаются на лету во время скрола. На андроидах не пробовал, пробовал на своем Iphone 5s. Ни малейшего лага нет, загружаются картинки моментально. Насчет размеров картинок. Не знаю как вы используете списки, но у меня задача отображать итемы с несколькими строками и слева картинка у каждого, в общем как и у стандартного ListViewItem'а. Высота итема у меня 60. Загружаются в итемы не какие-нибудь гиганты непонятных разрешений, а миниатюры картинок размером чуть большим чем высота итемов (90) для того чтобы было приемлимое качество картинки. Можете не верить, ваше право, но при скроле нет ни малейших дерганий или тем более зависаний (1000 итемов), скролится все плавно, в общем также как и ListView без картинок. По сути многое я подсмотрел у ListView, принципиальная разница лишь в том что если у контрола 1к итемов, то они не загружаются все в память. Да и шансов на то что приложение не вылетит при 1000 итемах и загруженных к ним картинках практически нет.
-
Я использую TControl.
-
То ли я вас не понял то ли вы меня. Я сделал так, что в памяти загружены только несколько картинок одновременно, а точнее ровно столько сколько видно итемов. Допустим высота контрола 1000, Высота итема 100. Так вот в памяти всегда загружено именно 11 картинок как бы вы не скролили вниз или вверх количество кушаемой памяти практически не меняется. Если итем не виден то картинка для него выгружается из памяти вообще. Ограничение такого подхода только в том что картинки для этого контрола должны храниться локально в файлах на устройстве.
-
Я делал для мобилок (ФМ). Скорость работы идеальная, ни единого притормаживания. На лету определяет какие итемы сейчас должны быть видны в контроле и подгружает картинки только для этих итемов. Пробовал запилить 1000 итемов с картинками внутри каждого итема, 0 лагов. Ну собственно и лагать не от чего, картинок загружено в память минимум, отрисовка всегда идет только видимых итемов. Хотя конечно и в ListView можно сделать тоже самое, просто устал постоянно ворошить исходники этого монстра (TListView) для того чтобы добавлять/менять свой функционал.
Как отличить жест и событие OnItemClickEx в компоненте TListView
в Жесты
Опубликовано
http://docwiki.embarcadero.com/Libraries/XE6/en/FMX.Types.TInteractiveGestureFlag первая ссылка в гугле