1
私は現在の作業システムの中に小さな入れ子関数を作成しようとしています。私が問題を抱えているのは、コレクションに3番目のシェイプを追加し、コレクションに追加された以前のシェイプに基づいて3番目のシェイプを配置しようとすると、それは最初のシェイプに基づいて配置されます。私が最後にしているのは、元の位置にあるオリジナルと、コピーが互いの上に積み重ねられていることです。コレクション内の特定の図形を選択するCorelDraw
Function ArrangeImages(ByRef scol1 As Collection, ByRef sA, sB As Shape)
Dim i, ii As Long
i = scol1.Count
ii = i - 1
If i = 1 Then
Set sB = scol1.Item(i)
End If
If scol1.Count > 1 Then
Set sA = scol1.Item(ii)
Set sB = scol1.Item(i)
sB.SetPosition sA.PositionX, sA.PositionY + (sA.SizeHeight/2) +
(sB.SizeHeight/2) + 0.15
End If
End Function
私は、SAが異なり、私はこれをテストしたが、それはまだ正常に動作しませんでした設定しているために、コードを編集しました。私はLetメソッドをまだ探っていない。私にそれをさせて、あなたと一緒に戻ってください。 –
@ JamesCunninghamあなたが 'Set'している限り、それはまだ参照オブジェクトになります。 'Set sC = sB'でも' Set sA = sC'なら 'sA'は' sB'の参照となります。私はあなたが試したことを知らず、それを前提として提供しています。 – GibralterTop
オブジェクトを再配置する前にオブジェクトの位置を保持するために二重を作成する必要がありました。また、CorelのオブジェクトのStaticIDを使用して正しいものにアクセスし、どこに行かせるべきかを指定する必要がありました。最終的に私のコードは元のコードとはかなり違って見えますが、@ GibralterTopは非常に便利なポストを持っていました。ありがとう。 –