![](https://fire-monkey.ru/uploads/set_resources_12/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
Kitty
-
Постов
792 -
Зарегистрирован
-
Посещение
-
Победитель дней
16
Активность репутации
-
-
Kitty отреагировална xenon54 в TListView при нажатии на один из его элементов происходит повторный вызов процедуры
Порекомендовал бы вам использовать событие "ItemClickEx", в обычном "ItemClick" после очистки списка вылетает AV. после завершения события и перехода к
if AItem <> nil then AItem.SyncCheckedState; А по поводу многократного срабатывания писал выше:
-
-
Kitty получил реакцию от Andrey Efimov в XE 8
What's New in RAD Studio XE8
https://www.embarcadero.com/ru/products/rad-studio/whats-new
-
Kitty отреагировална Евгений Корепов в [Android] Как отключить программную кнопку Меню?
Ура! "screenSize" в сочетании с android:minSdkVersion="9" android:targetSdkVersion="14" помогло! Все работает отлично. Всем огромное спасибо. Привожу измененных темплейт манифеста, вдруг кому пригодится.
<?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14" /> <%uses-permission%> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:installLocation="%installLocation%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%"> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <%activity%> <receiver android:name="com.embarcadero.firemonkey.notifications.FMXNotificationAlarm" /> <%receivers%> </application> </manifest> <!-- END_INCLUDE(manifest) --> -
-
-
Kitty отреагировална xenon54 в [TidHTTP] Не срабатывает Timeout
Именно с "EIdException" у меня работает вменяемо. Как вариант можно сделать так:
type TForm1 = class(TForm) procedure Button1Click(Sender: TObject); private MyFlag : Boolean; public end; ... procedure TForm1.Button1Click(Sender: TObject); begin TThread.CreateAnonymousThread(nil, procedure() var IdHTTP1 : TIdHTTP; begin IdHTTP1 := TIdHTTP.Create(nil); form1.MyFlag := false; IdHTTP1.Get('http://lenta.ru'); form1.MyFlag := true; IdHTTP1.free; end).start; // Ну и тут запустить таймер, который проверит через нужное вам время переменную MyFlag end; -
Kitty отреагировална xenon54 в TMemo скролится вниз не до конца и отрезает буквы.
В общем если кто-то будет искать, то вот такой позорный костыль капельку улучшает ситуацию:
if ((NewViewportPosition.Y+MemoInheritor.Height)- round(MemoInheritor.GetContentBounds.Height)) = 2 then MemoInheritor.ViewportPosition := TPointF.Create(MemoInheritor.ViewportPosition.X, MemoInheritor.ViewportPosition.Y+2); Этот код в событии "OnViewportPositionChange", MemoInheritor - наследник TMemo.
-
Kitty отреагировална Brovin Yaroslav в AV при "Application.ProcessMessages" в событии MouseLeave на любом контроле
Добрый день,
Проблема в том, что когда вы вызываете ProcessMessage в OnMouseLeave, то вы по сути прерываете логику обработки Hovered контрола (Тот, что находится под мышкой). То есть вызывая ProcessMessage вы запускаете новый прогон обработки сообщений заново, не закончив предыдущий. В итоге, новый запуск сбрасывает ссылки на объект Hovered. А после возвращения в обратно в первый ProcessMessage Hovered еще используется, но он уже nil. Тут и возникает AV.
procedure TCommonCustomForm.SetHovered(const Value: IControl); begin if (Value <> FHovered) then begin if FHovered <> nil then begin FHovered.DoMouseLeave; // <Тут вы вызываете ProcessMessage и после выхода, тут будет nil FHovered.RemoveFreeNotify(Self); end; FHovered := Value; if FHovered <> nil then begin FHovered.AddFreeNotify(Self); FHovered.DoMouseEnter; end; end; end; Если очень хочется использовать ProcessMessage в таком месте, можете добавить проверку на нил, после:
FHovered.DoMouseLeave; if FHovered <> nil then FHovered.RemoveFreeNotify(Self); -
Kitty отреагировална haword в [Android] Как нажать кнопку пультом?
попробуй повесить обработку нажатых кнопок на форме OnKeyDown и смотри какие коды покажет какая кнопка в Key и KeyChar.
-
Kitty отреагировална xenon54 в [Android] Как нажать кнопку пультом?
В IOS, например, чтобы в приложение передавались события нажатия кнопок плеера (плей, стоп, вперед, назад, и т.д.) нужно зарегистрировать обрабочтик событий ремоут контрол, ну и соответственно написать сам обработчик. Мб с ведром тоже самое... Но это лишь предположение.
-
Kitty отреагировална Brovin Yaroslav в [Android] Как нажать кнопку пультом?
Добрый день,
Есть вариант для инфракрасных контроллеров:
Либо нужно использовать RemoteController
-
Kitty отреагировална Andrey Efimov в Как узнать версию приложения под Android?
Например, вот так:
{for Delphi XE6/XE7: Add to "uses" module "Androidapi.Helpers"} uses Androidapi.JNI.JavaTypes, FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText; var PackageManager: JPackageManager; VersionPackage,PackageName: JString; begin PackageManager := SharedActivity.getPackageManager; PackageName := SharedActivityContext.getPackageName; VersionPackage := PackageManager.getPackageInfo(PackageName, 0).versionName; Label1.Text := JStringToString(VersionPackage); p.s. Для подобных вопросов, у меня в блоге есть страничка "JNI Code Snippet"
-
Kitty отреагировална Brovin Yaroslav в [Статья] Новый подход разработки компонентов FireMonkey “Контрол – Модель – Презентация”. Часть 2. TEdit с автозавершением
Ссылка: http://yaroslavbrovin.ru/new-approach-of-development-of-firemonkey-control-control-model-presentation-part-2-tedit-with-autocomplete-ru/ Автор: Ярослав Бровин 2 часть статьи о новом подходе разработки визуальных компонентов в FireMonkey. Содерит практическую часть по созданию своего представления. В качестве примера, добавляется функция автозавершения ввода для стандатного компонента TEdit. -
Kitty отреагировална Brovin Yaroslav в [TidHTTP] Как получить ответ от веб-сервера в нужной кодировке?
Мой код компилируется на все платформы. Попробуйте вначале собрать пример с моим кодом, сделав полный копипаст.
-
Kitty отреагировална Brovin Yaroslav в Руководства RAD Studio Mobile Tutorials - Free eBook
Ссылка на скачивание: http://docs.embarcadero.com/products/rad_studio/radstudioXE7/Mobile_Tutorials_en.pdf
-
Kitty отреагировална Brovin Yaroslav в [TidHTTP] Как получить ответ от веб-сервера в нужной кодировке?
Добрый вечер,
У TidHttp есть перегруженный метод получения ответа с возможностью указания потока.
Сервер по указанному адресу присылает ответ в ANSI кодировке. А у функция Get возвращает UnicodeString в С++ Builder. Поэтому решение - это представить полученный ответ в ANSI кодировке:
C++:
TStringStream *SS = new TStringStream(L"", TEncoding::ANSI, false); try { UnicodeString URL = "http://seatr.do.am/AntiCafe48/30.03.2015"; IdHTTP1->Get(URL, SS); ShowMessage("Response: " + SS->DataString); } __finally { SS->Free(); } Delphi:
var SS: TStringStream; begin SS := TStringStream.Create('', TEncoding.ANSI); try IdHTTP1.Get('http://seatr.do.am/AntiCafe48/30.03.2015', SS); ShowMessage('Response: ' + SS.DataString); finally SS.Free; end; end; Результат:
-
Kitty отреагировална Brovin Yaroslav в TMemo скролится вниз не до конца и отрезает буквы.
Я завел багу во внутренний треккер. Можете, конечно, ее продублировать в quality.embarcadero.com
-
Kitty отреагировална Brovin Yaroslav в При ручной отрисовке на битмапе TImage, у меня на форме получаются артефакты. В чем причина?
Добрый день,
посмотрите на свой код внимательнее.
Вначале вы создаете битмап. В нем рисуете линию. Потом очищаете битмап в image1. И заливаете фон белым цветом Потом заменяете очищенный битмап в Image1, своим MyBitmap. В итоге результат работы метода Clear скрывается.
На счет артефактов, я не вижу их на воспроизведенном примере. Линия есть. Если вы выложите ваш проект, чтобы на нем можно было посмотреть, было бы здорово.
-
Kitty отреагировална Brovin Yaroslav в Сообщения чата в виде сообщений в iphone.
Добрый день,
Я бы взял TScrollBox для контейнера сообщений. Каждое сообщени представил в виде TLabel с вашим стилем в виде облаков TLabel поместил в TLayout и внутри него выравнивал бы по правому или левому краю. А сами TLayout выравнивал бы по верху. -
Kitty отреагировална Brovin Yaroslav в заполнение окна формы 2-3 или колонки в зависимости от ориентации экрана
Добрый день,
Используйте TGridLayout. У него вы только указываете размер элемента (ItemWidth, ItemHeight). Далее этот компонент автоматчиески все дочерние контролы выстраивает в сетку с размером ячейки ItemWidth x ItemHeight
-
Kitty отреагировална Brovin Yaroslav в Нужна кнопка удаления своего сообщения на форуме
Такая опция добавлена для пользователей. Поддерживаются два типа удалений:
Скрытие. Скрытие от пользователей вашего сообщений с возможностью восстановление. Скрытое сообщение доступно на просмотр модераторам и администраторам Удаление. Полное удаление сообщение без возможности восстановить. -
Kitty отреагировална xenon54 в Частые сбои приложения при попытке запуска, Android.
Ну естественно они все в памяти висят. Ты создаешь считай объекты типа TBitmap методом LoadFromFile выделяешь память под размеры этой картинки. И пока этот битмап не уничтожен(а пока твой список существует, все битмапы живут), выделенная память под него будет занята. Этот момент уже не единожды обсуждался. Лично мое решение это при скроле листвью тебе нужно определять какие итемы сейчас находятся в области видимости и только для них держать картинки в памяти, т.е. ты должен при скроле динамически подгружать/выгружать картинки. Если размеры картинок небольшие, то думаю что проблем возникнуть не должно. Так же, если у тебя там картинки больших размеров чем реальные битмапы, то лучше используй не LoadFromFile, а LoadThumbnailFromFile.
-
Kitty отреагировална Brovin Yaroslav в Описание TfgApplicationEvents - мониторинг основных событий приложения
Описание:
Назначение: Получение основных событий приложения, путем подвешивания обработчиков на события компонента в дизайнере Поддерживаемые платформы: Windows, OSX, iOS, Android Демо проект: Samples\ApplicationEventsDemo\ApplicationEventsDemo.dproj Доступен с версии: XE7 Возможности:
Все события перехватываю события во всем приложении.
Получение результатов (интентов) из других приложений (OnActivityResult) Нотификация о выполнения Action в TAсtionList (OnActionExecute) Нотификация о обновлении Action в TAсtionList (OnActionUpdate) Перехват любого исключения в приложении (OnException) Простой приложения (OnIdle) Оповещение об изменении размера формы (OnFormSizeChanged) Оповещение о необходимости сохранить данные UI формы при изменении состояния приложения. Особенно актуально для мобильных платформ (OnSaveState) Изменение состояния приложения (OnStateChanged) Факт изменения стиля формы (OnStyleChanged) Изменение ориентации устройства (OnOrientationChanged) Все формы приложения на старте созданы (OnFormsCreated) Форма приложения разрушается (OnFormReleased) Изменение главной формы (OnMainFormChanged) Изменение заголовка главной формы (OnMainFormCaptionChanged) Уведомление об отображении формы (OnFormBeforeShown) Уведомления об активации и деактивации формы (OnFormActive, OnFormDeactivate) Уведомления о создании и разрушении формы (OnFormCreate, OnFormDestroy) Изменение скейла экрана (OnScaleChanged)