我已经为IDE编写了一些组件,它们看起来像这样:
unit xxx;
interface
uses
System.Classes, System.SysUtils;
type
TMyClass = class(TComponent)
//code...
end;
implementation
end.
通过这种方式,我可以在VCL和FMX上使用它们;换句话说,我可以制作VCL获胜计划和使用我的组件的FMX Android应用程序。你看不到的代码是类的实现,但这并不重要。
在第2点我的意思是在FMX win32下我有这样的组件:
如果我改变平台(比如说android),我会得到这个
我做错了什么?我进入了IDE>工具>选项>库和每个平台我添加了IDE可以在其中找到.pas的路径。有什么想法吗?
奇怪的是,在FMX下如果我想能够使用我的组件创建Android应用程序,我必须将平台更改为win32,拖放组件然后更改回Android。该组件在Android上也运行良好。
答案 0 :(得分:4)
您只需要包含<!DOCTYPE html>
<html>
<head>
<script>
function init() {
var num = prompt("Enter a number");
if (num != null) {
document.getElementById("here").innerHTML = num ;
}
}
</script>
</head>
<body onload="init()">
<h1>We math!</h1>
Your number is
<p id ="here">MEMEME</p>
perfect!
</body>
</html>
(您已经从我看到的内容中获得),然后可以使用此属性:
System.Classes
通过这种方式,即使您已切换到Android,也可以将组件从IDE拖放到视图中。基本上你的代码很好,它适用于VCL和FMX,但是使用该属性,你告诉IDE该组件与你指定的平台兼容。
ComponentPlatformsAttribute为组件构建器提供了更具体的功能 控制暴露的组件。
要解决问题,您应该:
您可以找到更多参数传递给属性的构造函数,我已在type
[ComponentPlatformsAttribute(pidWin32 or pidAndroid)]
TTestComponent = class(TComponent)
//...
end;
pas文件中找到它们:
System.Classes
如果要包含每个平台,有一个答案here可以提供帮助,您可以将0传递给属性的构造函数,如 pidWin32 = $0001;
pidWin64 = $0002;
pidOSX32 = $0004;
pidiOSSimulator = $0008;
pidAndroid = $0010;
pidLinux32 = $0020;
pidiOSDevice32 = $0040;
pidiOSDevice = pidiOSDevice32;// deprecated 'Use pidiOSDevice32';
pidLinux64 = $0080;
pidWinNX32 = $0100;
pidWinIoT32 = $0200; // Embedded IoT (Internet of Things) Windows w/ Intel Galileo
pidiOSDevice64 = $0400;
pidWinARM = $0800;
pidOSX64 = $1000;
pidOSXNX64 = pidOSX64 deprecated 'Use pidOSX64';
pidLinux32Arm = $2000;
pidLinux64Arm = $4000;
pidAndroid64 = $8000;
。它似乎有效,但我不会使用它,我更喜欢逐个声明平台,即使它可能很乏味!