dynamisch auf Größenänderung reagieren



  • Hallo,

    Ich generiere Automatisch eine Form und lade in diese ein Bild, nun möchte ich dieses immer zentriert haben --> heist wenn ich ein Bild reinlad und die Form vergrößere soll das Bild dennoch zentriert sein...

    if(OpenDialog1->Execute())
    {
    	TForm *Window = new TForm(this);
    	TImage *Image = new TImage(Window);
    
    	Image->Picture->LoadFromFile(OpenDialog1->FileName);
    
    	Image->AutoSize=true;
    	Image->Width=Image->Picture->Width;
    	Image->Height=Image->Picture->Height;
    	Image->Parent=Window;
    
    	Window->Position=poScreenCenter;
    	Window->Caption=ExtractFileName(OpenDialog1->FileName);
    	Window->BorderStyle=bsSizeToolWin;
    	Window->Width = Image->Picture->Width;
    	Window->Height = Image->Picture->Height;
    
    	Image->Top=(Window->Height)/2-(Image->Height)/2;
    	Image->Left=(Window->Width)/2-(Image->Width)/2;
    
    	Window->Show();
    }
    

    Es geht hierbei um

    Image->Top=(Window->Height)/2-(Image->Height)/2;
    	Image->Left=(Window->Width)/2-(Image->Width)/2;
    

    Statisch gesehen würde ich hierbei auf ein"OnResize" reagieren, doch hier ist gar nichts statis 😕
    wie kann ich ein "OnResize" hierbei dynamisch abfangen ?



  • Hallo,

    was spricht dagegen "Align" zu verwenden?

    Image->Align = alClient;
    

    Ansonsten eben eine Ereignisbehandlungsroutine für OnResize schreiben
    und der Eigenschaft zuweisen.

    // header
    void __fastcall OnFormResize(TObject *Sender);
    // cpp
    Window->OnResize = OnFormResize;
    

    Gruß

    Alexander


Anmelden zum Antworten