Komponentenentwicklung – übergeben eines TBitmap schlägt fehl



  • Hallo
    Ich habe folgendes Problem. Ich habe mir eine Komponente geschrieben und wollte mir ein TBitmap auf eine Zeichenfläche zeichnen lassen.
    Aber wenn ich das Bild über LoadFromFile lade hält das Programm an und ein Fehler wird ausgegeben. Kann mir jemand helfen?

    .h

    class PACKAGE TmyButton : public TGraphicControl
    {
     private:
    //    Graphics::TBitmap *Bild;
    protected:
        virtual void __fastcall Paint();
         void __fastcall TmyButton::SetGlyph(Graphics::TBitmap *Value);
    public:
        __fastcall TmyButton(TComponent* Owner);
        __fastcall ~TmyButton(){}
     __published:
        __property Graphics::TBitmap* myBild = {read=Bild, write=SetGlyph};
    };
    

    .cpp

    void __fastcall TmyButton::SetGlyph(Graphics::TBitmap *Value)
    {
     Bild=Value;
    }
    
    void __fastcall TmyButton::Paint()
    {
         Canvas->Draw(1,1 ,Bild);
    }
    

    Beim Aufrufen und wenn über Objektinspektor(über die […]) trit ein Fehler auf.

    TmyButton *MeinB= new TmyButton(Application);
    
    MeinB->myBild->LoadFromFile("D:\\Suchen.bmp");
    


  • Warum leiteest du nicht von TBitButton ab?

    Auch hier wieder:

    Welcher Fehler, ich kann nicht hellsehen



  • Tach
    Wenn ich die fertigen classe nehme bräuchte ich mir überhaupt keine Komp. Schreiben!
    Mich interessiert es ja mal selber eine solche zu schreiben und Erfahrung zu sammeln.

    Mit freundlichen Grüßen cesa



  • Wenn ich die fertigen classe nehme bräuchte ich mir überhaupt keine Komp. Schreiben!
    Mich interessiert es ja mal selber eine solche zu schreiben und Erfahrung zu sammeln.

    Dann fehlt dir offenbar Fantasie

    http://www.marquardtnet.info/cecke/komponenten.2/2_index.html

    Und weiterhin wird dir ohne Fehlermeldung keiner helfen können



  • Wenn ich die fertigen classe nehme bräuchte ich mir überhaupt keine Komp. Schreiben!

    Dann fehlt dir offenbar Fantasie

    http://www.marquardtnet.info/cecke/komponenten.2/2_index.html

    Und weiterhin wird dir ohne Fehlermeldung keiner helfen können



  • Fehler:

    im Projekt xxxx.exe ist eine Exception der Klasse EAcessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei
    Adresse 00402E83 in Modul 'xxxx.exe'. Lesen von Adresse 00000000'. Prozeß wurde angehalten. Mit Einzelne
    Anwendung oder Start fortzetzen.

    und dann bei erneutem Start

    Zugriffsverletzung bei Adresse 00402E83 in Modul 'xxxx.exe'. Lesen von Adresse 00000000



  • Hallo

    die Übergabe der Bitmap ist nicht I.O.
    Ich hab es immer mit diesem Code gemacht und funktioniert:

    // ------------------------ Mouse Over Graphik setzen -----------------------
    void __fastcall TCLSpeedButton::SetBitmapMouseOver(Graphics::TBitmap *bmp)
    {
      FBmpMouseOver->Assign(bmp);
    }
    

    Vielleicht liegt da das Problem.

    Pronto451



  • Vielen Dank für heure hilfe bin gereade selber dahinter gekommen.
    Einfach ein Flüchtigkeitsfehler

    __fastcall TmyButton:: TmyButton  (TComponent* Owner)
       : TGraphicControl(Owner)
    {
      Graphics::TBitmap* Bild = new Graphics::TBitmap();
      myBild =new Graphics::TBitmap();  // hat gefehlt
    }
    

Anmelden zum Antworten