数日前、私は、QRCodeライブラリを使用しようとしました。そこで私はいくつかの研究を行い、ここにいる人々が私を案内しました。 だから私は、私はこれは私がインテリセンスを見ると、他のclassessのオブジェクトと変数のいくつかを作成することができましたが、私は私が見ているクラスとのトラブルだ https://whoisburiedhere.wordpress.com/2011/07/12/creating-a-com-object-from-scratch-with-c/制約のある抽象クラスへのインタフェースの実装方法は?
ステップに続いインタフェースを作ることにしました廃棄()が、私は、MSへのアクセスの新機能は使用できません。
[Dim QRCD as New QRCode]
私は新しいの使用が有効ではありませんが、私はラインで宣言することができ、エラーを取得:[
Dim QRCD as QRCode
を私はそれがないと思うobject {QRDataと等しくしようとすると "それは許可されていません"というエラーが発生する}そのクラスは抽象クラスを実装している抽象クラスを抽象クラスに実装しようとしましたが、メソッドを実装しないでください "私がChildクラスに入れた場合、オブジェクトを作成することはできません。後でバインドされたメソッドのいずれも参照しません。 ここにQRCoderライブラリがあります。 https://github.com/codebude/QRCoder これは提供されている抽象クラスです。
{
using System;
public abstract class AbstractQRCode<T>
{
protected QRCodeData qrCodeData;
protected AbstractQRCode(QRCodeData data)
{
qrCodeData = data;
}
public abstract T GetGraphic(int pixelsPerModule);
}
}
これは、それを実装して子クラスです。インターフェイスで既に変更されています。すべてのコードではないが、GetGraphic(何かのもの)と呼ばれる、互いに異なるいくつかのメソッドがあります。
[ComVisible(true)]
[Guid("It's filled in the program"), InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface neker
{
Bitmap GetGraphic(int pixelsPerModule);
}
[ComVisible(true)]
[Guid(""), ClassInterface(ClassInterfaceType.AutoDual)]
public class QRCode :AbstractQRCode<Bitmap>, IDisposable, neker
{
public QRCode(QRCodeData data) : base(data) {}
public override Bitmap GetGraphic(int pixelsPerModule)
{
return GetGraphic(pixelsPerModule, Color.Black, Color.White, true);
}
public Bitmap GetGraphic(int pixelsPerModule, string darkColorHtmlHex, string lightColorHtmlHex, bool drawQuietZones = true)
{
return GetGraphic(pixelsPerModule, ColorTranslator.FromHtml(darkColorHtmlHex), ColorTranslator.FromHtml(lightColorHtmlHex), true);
}
これはこれがVBAで自分のコードされたサンプルコード(また提供)
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("The text which should be encoded.", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
ある[これはモジュール内にある]
Public Sub QRCreator(QRtext As String)
Dim QRCG As QRCoder.QRCodeGenerator
Set QRCG = New QRCoder.QRCodeGenerator
Dim QRCD As QRCodeData
Set QRCD = QRCG.CreateQRCode(QRtext, ECCLevel_Q, False)
Dim QRCO As QRCode
Set QRCO = Factory.CreateQRCode(QRCD)
Forms!Formulario1.[Oleobject].Picture = QRCO.GetGraphic(5)
End Sub
Public Sub InitiateProperties(Data As QRCodeData)
//I declared it as Variant since QRCode is not avaliable
Dim m_data As Variant
m_data = Data
End Sub
これは別のモジュールである[Iはこのモジュールを使用してパラメータ付きオブジェクトを作成する] Pass arguments to Constructor in VBA
Public Function CreateQRCode(Data As QRCodeData) As QRCode
//you see the word new is missing If I run it it says "An object is required"
Set CreateQRCode = QRCode
CreateQRCode.InitiateProperties Data:=Data
End Function
マイクロソフトアクセス2013から使用できるように変更するにはどうすればよいですか? インタフェースを使用しないでもう1つの方法はありますか? アクセスはvbaのビットマップをサポートしていますか? 私はこのすべてのものでとても新しいので、ありがとうございました。
編集: 私はそれができない理由を知ることができませんでした。なぜなら、パラメータを持つサポート担当者およびオーバーライドのあるメソッドを使用しているからです。どのように私はイメージをいつでも作成することができましたか?
IStdPcitureにビットマップを変換する必要はありますか?またはビットマップを直接使用できますか? –
VBAはビットマップ形式をサポートしておらず、 '[Oleobject] .Picture'は' IPictureDisp'または 'IPictureDisp'インターフェースを実装するオブジェクトを必要とします。 –
私は 'IpictureDisp'インターフェースを実装するためにどのライブラリを使うべきかを見つけることができません。私はいくつかのStdOle.dllへの参照を見つけました。プロジェクトの参照を追加してから、 'stdole;そして、この線を 'class _QRCodeGenerator:i_QRCodeGenerator、IDispatch'に変更しました。私はまだその曲線の赤い線xDを取得します。私はプログラミングでうまくいきません、私は道で学んでいます。 –