调色板中无法使用Delphi 10.2 CE中导入的ActiveX控件

时间:2018-07-25 19:44:11

标签: delphi com activex

我正在使用社区版,但是在这方面没有任何限制。

我已通过// // DragReorderCollectionViewController.swift // SW4Temp // // Created by Don Mag on 7/25/18. // import UIKit private let reuseIdentifier = "DragMeCell" class DragMeCell: UICollectionViewCell { @IBOutlet var theLabel: UILabel! } class DragReorderCollectionViewController: UICollectionViewController { fileprivate var longPressGesture: UILongPressGestureRecognizer! fileprivate var dataArray = Array(0 ..< 25) override func viewDidLoad() { super.viewDidLoad() longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongGesture(gesture:))) if let cv = self.collectionView { cv.addGestureRecognizer(longPressGesture) } } @objc func handleLongGesture(gesture: UILongPressGestureRecognizer) { if let cv = self.collectionView, let gestureView = gesture.view { switch(gesture.state) { case .began: guard let selectedIndexPath = cv.indexPathForItem(at: gesture.location(in: cv)) else { break } cv.beginInteractiveMovementForItem(at: selectedIndexPath) case .changed: cv.updateInteractiveMovementTargetPosition(gesture.location(in: gestureView)) case .ended: cv.endInteractiveMovement() default: cv.cancelInteractiveMovement() } } } // MARK: UICollectionViewDelegate override func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool { return true } override func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { let i = dataArray[sourceIndexPath.item] dataArray.remove(at: sourceIndexPath.item) dataArray.insert(i, at: destinationIndexPath.item) } // MARK: UICollectionViewDataSource override func numberOfSections(in collectionView: UICollectionView) -> Int { return 1 } override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return dataArray.count } override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! DragMeCell // Configure the cell cell.theLabel.text = "\(dataArray[indexPath.item])" return cell } } 导入了mstscax.dll并选择了“ ActiveX”。该组件未显示在组件面板中,直接编辑DFM以包括TMsRdpClient [digit]组件会导致表单生成器错误,指出找不到该组件。

但是,如果这些错误是“已取消”而不是“被忽略”,则可以使一个预制项目(RDPWrap的RDPCheck)生成并运行。还必须解决错误mentioned here

在一个我自己创建的项目中,我能够将生成的文件Component |> Import Component...添加到uses子句,并可以将MSTSCLib_TLB类型的变量添加到表单。例如,在TMsRdpClient7函数中,我可以调用FormCreate,然后访问对象的属性。如果我设置了足够的属性(请参见下文),则会显示授权弹出窗口,并在调用TMsRdpClient7.Create(Self)之后看到登录屏幕。

TMsRdpClient7.Connect

1 个答案:

答案 0 :(得分:0)

导入MSTScax.Dll在Delphi 10.2.3上对我来说工作正常,并导致25个组件从ActiveX组件开始显示在组件面板的TMsTScaxNotSafeForScripting选项卡上。

我可以发布使用的确切步骤,但是我想知道您是否只是缺少一个步骤:

在将ConnectWithEndpoint属性类型更正为OleVariant并编译了包含导入单元MSTSCLib_TLB.Pas的包之后,我们将其称为RDP.Pkg,您需要转到Project Manager,右键单击RDP.Bpl,然后单击Install-然后,它应显示在ActiveX标签上。这样对您有用吗?

顺便说一句,我以普通的方式从Win10 64位的桌面停止链接中启动Delphi,而不使用诸如“以管理员身份运行”之类的特殊措施。