Slym
-
Постов
180 -
Зарегистрирован
-
Посещение
-
Победитель дней
39
Сообщения, опубликованные Slym
-
-
CustomEditor
не говорит? только едитор... один (1). если на много строк то что-то другое надо
кастом дроу.... -
type TSpinBoxEx=class(TSpinBox) protected procedure SetData(const Value: TValue); override; end; { TSpinBoxEx } procedure TSpinBoxEx.SetData(const Value: TValue); begin if Value.IsType<string> then Self.Value := StrToFloatDef(Value.AsString,0) else inherited SetData(Value); end; procedure TForm1.StringGrid1CreateCustomEditor(Sender: TObject; const Column: TColumn; var Control: TStyledControl); begin if Column.Index=1 then Control:=TSpinBoxEx.Create(self); end;
-
0. нафега лишние преобразования image?
1. Не жирно битмапы в базе? пользуй png/jpeg или в формате п.0
2. streamы надо иногда перематывать... position=0
-
Не используй много форм: одна форма - много фреймов
-
uses pngimage;
-
type
TOpenForm=class(TForm) end;TOpenForm(FForm).ReleaseForm;
Ты так никогда не делал?
До protectedов регулярно так делаю, TOpenForm становится френдли объектом и разрешает protected -
не Release а ReleaseForm
-
не надо глобальные переменные... делай локальные
var FFrom := TFrom.Create(nil);
-
переменная FForm -не глобальная?
тогда FForm .ReleaseForm, но оно тоже через TThread.ForceQueue работает
-
очищай
Thread.ForceQueue(nil, procedure begin FFrom.Free; end);
-
вангую в что frmEditor - переменная негде не присвоенная...
нужно либо при создании TfrmNewArticleList передавать ссылку на текущий frmEditor, или по Parentам искать его внизEditorWorkFrame->Parent = EditorFrameLayout; EditorWorkFrame->frmEditor = this; EditorWorkFrame->Align = TAlignLayout::Client;
-
Наоборот: сначала ShowModal, в колбеке ForceQueue Free
FFrom := TFrom.Create(nil); FFrom.ShowModal(procedure(Res: TModalResult) begin TThread.ForceQueue(nil, procedure begin FreeForm(FFrom); end); end);
-
Включай logcat и смотри логи... я тоже портировался недавно, споткнулся о
Failed to register native method com.embarcadero.rtl.ProxyInterface.dispatchToNative2(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;J)Ljava/lang/Object; in base.apk
Вылечил пересозданием проекта: создаем чистый проект с тем же названием, в рабочем подменяем все кроме dpr, заново настраиваем deploy и тп.
-
К счетчику Гейгера...? Что за девайс? Nokia ww3 edition?
-
multisoft.zip
Проект jar файла, aidl+ exceptioncallback -
ищи по тексту --min-sdk-version
или делай дешугаринг либе
-
-
Линковка Kotlin (Котлин) библиотек в Delphi, как делаю:
Хедеры линкуемых библиотек обычно громадны описанием всех типов...
Я обычно делаю свой jar на java в нем линкую зависимости и наружу для дельфи оставляю один объект с простыми функциями.
Хедер дельфи получается компактным и понятным:package com.MyCompany.evotor; public interface J2DCallback { void Log(String str); String Trans(String str); String GetValue(String name); void SetValue(String name, String value); Activity GetActivity(); Context GetContext(); } public class FiscalCoreConnection { final private Global Instance; public FiscalCoreConnection(J2DCallback aj2d) throws NullPointerException { Instance = new Global(aj2d); } public String SendJSON(String JSON){ try{ return Instance.SendJson(JSON); } catch (Exception e) { return FiscalCoreException.MakeJson(e); } } } type J2DCallbackClass = interface(IJavaClass) ['{856654D5-7939-44DF-ACD5-E2EF8C6D3AA4}'] end; [JavaSignature('com/MyCompany/evotor/J2DCallback')] J2DCallbackIntf = interface(IJavaInstance) ['{025B14E9-C041-4105-9E85-83CC127CC340}'] procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; TJ2DCallbackImp = class(TJavaGenericImport<J2DCallbackClass, J2DCallbackIntf>) end; [JavaSignature('com/MyCompany/evotor/FiscalCoreConnection')] JFiscalCoreConnection = interface(JObject) ['{5797747D-D61D-4EF6-94F7-5E8994545CC2}'] function SendJSON(JSON:JString):JString; cdecl; end; JFiscalCoreConnectionClass = interface(JObjectClass) ['{81782882-DFCF-4FA9-BD37-02CCCF2409EA}'] function init(j2d : J2DCallbackIntf) : JFiscalCoreConnection; cdecl; end; TJFiscalCoreConnection = class(TJavaGenericImport<JFiscalCoreConnectionClass, JFiscalCoreConnection>) end; TJ2DCallback = class(TJavaLocal, J2DCallbackIntf) public procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end;
Все зависимости в build.gradle:
dependencies { implementation 'com.github.evotor:integration-library:v0.4.50' implementation 'com.google.zxing:core:3.4.0' }
В Дереве External Libraries забираем jarы зависимостей
ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя.
Там же забираем kotlin-stdlib
ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя.
Но в kotlin-stdlib.jar есть "лишний" файл kotlin-stdlib-1.5.10.jar\META-INF\versions\9\module-info.class
Открываем архиватором и удаляем файл или всю папку versionsПочти все готово... Но котлин еще и посыпан сахаром и не хочет Дельфей dexится, хочет -min-sdk-version=26
Поможем Delphi:
Ищем CodeGear.Common.Targets, у меня он в "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin"\
Ищем в нем --output, и перед ним вставим все про sdk. У меня получилось так:
<DxCmd>PATH $(JDKPath)\bin;$(PATH); %26 set JAVA_HOME=$(JDKPath)%26 "$(JavaDxPath)" --dex --min-sdk-version=26 --output=</DxCmd>Далее цепляем все jar в проект
Либа производителя, Либа своя обертка, и котлин
Иии собираем!
Если есть еще зависимости делаем аналогично:
находим jar, выпиливаем META-INF\versions\9\module-info.class, линкуем в проект и собираем...
Не все зависимости используются и нужны, поэтому добавляем поштучно до тех пор пока не заведется. -
DLIB_JNI_METHOD(jniBitmapExtractFaceGazes)(JNIEnv* env, jobject thiz, jobject bitmap, jobject gazesList)?
-
-
Не пробовал... может так?
вместо form1.close пишем
TAndroidHelper.Activity.setResult(RESULT_OK, Intent);
TAndroidHelper.Activity.Finish; -
билять гоню... это защита от onClick
MouseUp/Down имхо никак -
билять гоню... это защита от onClick
MouseUp/Down имхо никак -
тогда сначала так, без проверки парента
//if TOpenCustomScrollBox(Sender).ContainsObject(ICtrl.GetObject) then
закоментируй иф... так понятней?:
procedure TScrollBoxService.OnViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean); var ICtrl:IControl; begin ICtrl:=TControl(Sender).Root.Captured; if not assigned(ICtrl) then begin ICtrl:=TControl(Sender).Root.Focused; if not assigned(ICtrl) then exit; end; ICtrl.MouseUp(TMouseButton.mbLeft,[],0,0); ICtrl.DoMouseLeave; end;
Изменение TDragOperation в процессе перетаскивания
в Мышь
Опубликовано
https://delphisources.ru/pages/faq/base/is_key_down.html