Fensterproblem



  • Ja Hallo.

    Ich habe 3 zusätzliche Formen mit je einem Image und möchte darauf malen.
    Ich habe auch verschiedene Mal-Routinen.

    DrawImageRoutine1(Form2->Image1);
    DrawImageRoutine2(Form2->Image1);
    DrawImageRoutine3(Form2->Image1);

    Jetzt wähle ich in einer Auswahl aus, auf welcher Form ich malen möchte und in einer anderen Auswahl, welche DrawImageRoutine ich benutzen möchte.

    Das ganze klappt natürlich ohne Probleme, aber die Abfragen sind praktisch doppelt, weil ich das alles für jede zusätzliche Form machen muss.

    Anstatt:

    if (routine==2)
    {
    if (auswahl==2)
    DrawImageRoutine2(Form2->Image1);
    else if (auswahl==3)
    DrawImageRoutine2(Form3->Image1);
    }
    

    lieber soetwas

    if (routine==2)
    {
    AnsiString CompName = "Form"+IntToStr(auswahl);
    TForm *Form = dynamic_cast<TForm *> (FindComponent(CompName));
    DrawImageRoutine2(Form->Image1);
    }
    

    Das Problem hierbei ist nun, das dies so nicht funktioniert, da Image1 keine Komponente von TForm ist. Weiss jemand welche Klasse ich für soetwas benutzen kann oder wie anders das geht?

    Ich habe es auch über Template probiert, aber da meckerte er weil ich muss dort TForm2 angeben.. einen Pointer davon akzeptiert er nicht. Ich kann also dort die Namen nicht wie ich gern möchte dynamisch erstellen.



  • Hallo

    Du brauchst ein Array von den Forms, oder besser gleich ein Array von den Images.
    Siehe auch die FAQ hier im Forum, Abschnitt Komponenten benutzen.

    bis bald
    akari


Anmelden zum Antworten