TImage erzuegen!



  • Hallo,

    ich erstelle ein TImage normal indem ich es von der Menüleiste in mein TForum per DRAG&DROP. Aber wie kann ich das TImage erstelle wenn ich kein TFrom habe.

    Ich will das so in der art wie z.b mit TCanvas:

    Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas();
    

    Mache. Geht das auch irgendwie mit dem TImage?

    Gruß

    zyon



  • Ähm, vielleicht so!?

    TImage *image = new TImage(Form1);
    


  • Reyx schrieb:

    Ähm, vielleicht so!?

    TImage *image = new TImage(Form1);
    
    TImage(Form1)
    

    geht das auch irgendwie ohne ein Form ? Wenn ich z.b eine DLL baue die eine funktion hast die TImage benötigt!?



  • Application

    Du solltest dir evtl. mal die Parameter des Konstruktors ansehen, dann währe dir schon geholfen 😉

    Im Übrigen würde ich nie VCL-Instanzen oder Pointer bei DLL-Extraktionsfunktionen verwenden.



  • Reyx schrieb:

    Im Übrigen würde ich nie VCL-Instanzen oder Pointer bei DLL-Extraktionsfunktionen verwenden.

    Wieso? Ich brauch nun einmal die TJPEGImage !? Was daran so schlimm?



  • Hallo

    geht das auch irgendwie ohne ein Form ? Wenn ich z.b eine DLL baue die eine funktion hast die TImage benötigt!?

    VCL in DLL-Schnittstelle geht schon, läuft dann wegen mangelndem Standard dan auch nur unter Builder.
    Wenn du das TImage nur als Parameter der Funktion brauchst, must du gar nichts neues erstellen

    void Func(TImage* curimage)
    {
    }
    

    Wenn du natürlich in der Funktion ein TImage erstellenb willst, hast du zwei möglichkeiten : Du übergibst den Owner (Das im Konstruktor ist der Owner, nicht der Parent) als Parameter an die Funktion, oder du setzt NULL stattdessen im Konstruktor ein. Dann must du dich aber selber um das Löschen des TImage kümmern.

    bis bald
    akari



  • akari schrieb:

    Hallo

    geht das auch irgendwie ohne ein Form ? Wenn ich z.b eine DLL baue die eine funktion hast die TImage benötigt!?

    VCL in DLL-Schnittstelle geht schon, läuft dann wegen mangelndem Standard dan auch nur unter Builder.
    Wenn du das TImage nur als Parameter der Funktion brauchst, must du gar nichts neues erstellen

    void Func(TImage* curimage)
    {
    }
    

    Wenn du natürlich in der Funktion ein TImage erstellenb willst, hast du zwei möglichkeiten : Du übergibst den Owner (Das im Konstruktor ist der Owner, nicht der Parent) als Parameter an die Funktion, oder du setzt NULL stattdessen im Konstruktor ein. Dann must du dich aber selber um das Löschen des TImage kümmern.

    bis bald
    akari

    Danke für diesen Tipp, habe es mal so gemach :

    TImage* pImage;
    

    leider bekomme ich sobald ich etwas mit pImage mache eine Speicherfehlermeldung.
    Beispiel wenn ich soetwas machen:

    pImage->Picture->Bitmap->Width = width;
    


  • Eine Instanz von TImage solltest du schon erzeugen. siehe Reyx
    Das Form1 da drin brauchst du nicht (Owner). Du kannst hier auch 0 eintragen, mußt dann aber selber für das delete sorgen.


Log in to reply