Grafikzugriff auf TPictureOpenDialog



  • Das mit dem "an den TOpenDialog anhängen" stellst du dir wohl vergleichsweise einfach vor!? Naja, die Position und Abmessungen des Dialogs kannst du jedenfalls per GetWindowRect ermitteln. Siehe dazu auch den FAQ-Beitrag betreffend der Dialog-Buttons.

    Ansonsten: wenn du die Bilder anzeigen kannst sollte es theoretisch auch möglich sein, das Format bei TPicture zu registrieren, so dass es vom BCB (und somit dem OpenDialog) automatisch unterstützt wird. Du könntest dir dazu die in der FAQ erwähnte TGifImage-Komponente ansehen, dort wird das offensichtlich auf diese Weise gelöst.



  • Guten Morgen zusammen,
    erstmal Danke ich dir Jansen für dein Posting.
    Die Sache mit dem Anhängen, an den Dialog gestaltete sich tatsächlich nicht gar so einfach.

    Die Sache mit der TGifImage habe ich aber allerdings nicht in der FAQ finden können. Vielleicht liegt das auch am Montag morgen.
    Könntest du mir vielleicht etwas genauer beschreiben, welchen FAQ- Beitrag du meinst.

    Ich dank dir 🙂



  • Moin!

    Ich glaube Jansen meinte den hier -> TGifImage



  • Genau.

    Aber du könntest natürlich auch einfach eine zusätzliche Form mit dem Image darauf anzeigen, die in Abessungen und Position an das Dialogfenster angepasst ist.



  • Genau an so etwas ähnliches habe ich auch gedachte, deshalb auch meine Frage nach dem Auslesen der Abemessungen (Left, Top, Width, Buttom).

    Ich habe die Sache mit GetWindowRect(HWND, &RECT) auch schon mal getestet, aber leider blieb der Erfolg sehr gering. Ich bekomme zwar die Masse eines Rechtecks, diese sind aber jenseits von Gut- und Böse (z.B. Left = 149256). Ich glaube kaum, dass dieser Wert sinnvoll ist.

    Hat jemand eine Idee warum der Wert so riesig ist?



  • Bist du sicher,
    a) dass du das richtige Handle hast, und
    b) dass GetWindowRect() erfolgreich ist, in RECT also nicht nur Zufallszahlen drinstehen?



  • Guten Morgen zusammen,

    die Sache mit GetWindowRect(...) funkioniert irgendwie nicht so richtig bei mir.
    Ich erhalte zwar jetzt einigermassen reelle Werte, aber Rect.Left und Rect.Right, die ich als Referenz von GetWindowRect erhalte sind genau die gleichen Werte. Auch Rect.Top passt nicht so ganz perfekt zu dem TOpenDialog- Fenster. Wohl etwas konfus.

    Wenn mir jemand weiterhelfen könnte wäre ich sehr dankbar.



  • Welches Event benutzt du denn? OnShow wird wohl "zu früh" sein, da ist der Dialog noch nicht gezeichnet und demzufolge gibt's auch keine korrekten Koordinaten. Nimm stattdessen zB. OnFolderChange, das wird nach dem Laden des Dialogs auch automatisch ausgelöst.



  • Oh sorry Jansen,
    du hast Recht, ich habe die Antwort vergessen.
    Ich habe es in die Methode
    OpenDialogFolderChange...
    gepackt.
    Aber der Erfolg hielt sich sehr in Grenzen.
    SORRY schäm

    [ Dieser Beitrag wurde am 30.06.2003 um 10:23 Uhr von maam editiert. ]



  • //---------------------------------------------------------------------------
    void __fastcall TForm1::OpenDialog1FolderChange(TObject *Sender)
    {
      RECT R;
      if(GetWindowRect(GetParent(OpenDialog1->Handle), &R))
      {
        Form2->SetBounds(R.right, R.top, 150, R.bottom - R.top);
        Form2->Show();
      }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::OpenDialog1Close(TObject *Sender)
    {
      Form2->Hide();
    }
    //---------------------------------------------------------------------------
    

    Funktioniert hier einwandfrei.



  • 🙂 Danke Jansen,

    Es funktioniert bei mir jetzt auch. Mir hat wohl die Fenster- Zuordnung gefehlt.
    (GetParent...)

    Ich danke dir.

    Was ich unbedingt mal los werden muss:
    Euer Forum (c-plusplus) finde ich echt klasse.
    Ich habe mittlerweile schon einige Probleme mit eurer Hilfe lösen können.
    Besten DANK dafür

    P.S.: Macht so weiter !!!



  • Original erstellt von maam:
    Mir hat wohl die Fenster- Zuordnung gefehlt. (GetParent...)

    Steht aber mehrmals im erwähnten Dialog-Buttons-Thread aus der FAQ, und deshalb auch meine Nachfrage, ob du das richtige Handle hast. 😉

    Macht so weiter !!!

    Danke, machen wir. 🙂



  • Tja, ich dachte wohl, ich hätte das richtige Fenster Handle, weil die Rechteck.top und Rechteck.Bottom einigermassen zu dem Dialog passten.
    Nur Rechteck.left und Rechteck.right sind aus der Reihe geschlagen.

    Habe mich aber wohl doch getäuscht.

    Trozdem Dank nochmal

    Bis bald


Anmelden zum Antworten