[Kylix] OnClick durch TAnimate durchleiten



  • Hallo,

    habe folgendes Problem. Ich brauche unter Linux in einer Oberfläche animierte Bedienelemente, also Schalter, Buttons etcera. Leider hat TAnimate keine OnClick-Eigenschaft, also wollte ich etwas darüber legen, was eine solche Eigenschaft hat, z.B. ein transparentes TImage. Geht nicht, denn TAnimate ist immer "vorn".

    Also muss ich irgendwie mit dem Mausklick durch die Animation "durchklicken". Irgendwie stehe ich auf dem Schlauch. 😕 Kann mir da jemand helfen? Danke schonmal...

    mfG, Jens



  • Ich glaube nicht, dass es für das "durchklicken" eine Möglichkeit gibt.

    Was genau meinst du denn mit "animierte Bedienelemente", und wie wolltest du das mit TAnimate realisieren (vom Klick mal abgesehen)?



  • Jansen schrieb:

    Was genau meinst du denn mit "animierte Bedienelemente", und wie wolltest du das mit TAnimate realisieren (vom Klick mal abgesehen)?

    Zuerst hatte ich z.B. ein TImage, dessen Inhalt (zwei Bitmaps) über einen Timer gewechselt wurde. Leider gibt es unter Kylix keine Doublebuffer-Eigenschaft, weshalb dieses TImage ziemlich geflackert hat. Beim TAnimate unter Kylix kann man animierte Gif's einbinden. Die flackern auch nicht, haben aber kein OnClick. Also wollte ich eigentlich ein transparentes TImage darüberlegen, was aber nicht geht, weil die Animation immer vorn liegt. Warum auch immer. Also muss ich irgendwie dem unter dem TAnimate liegenden Objekt mitteilen, daß da über ihm ein Mausklick erfolgt ist.

    mfG, Jens



  • Ist das Flackern wirklich so schlimm? Mit folgendem Code kann ich bei einem Intervall von 100 ms ohne sichtbare Verzögerungen zwischen den fünf Bildern aus /images/splash/256color umschalten, und mit 240x180 sind das doch schon recht grosse "Buttons".

    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {  
      Timer1->Tag == 4 ? Timer1->Tag -= 4 : Timer1->Tag++;
      ImageList1->Draw(Image1->Canvas, 0, 0, Image1->Tag, false);
      // für Bitmaps geht auch das hier:
      //ImageList1->GetBitmap(Timer1->Tag, Image1->Picture->Bitmap);
    }
    

    Getestet unter Suse 7.3 in 'ner VMware.



  • Jansen schrieb:

    Ist das Flackern wirklich so schlimm?

    Ja, ist schon ganz schön zu sehen. Der Zielrechner ist nur ein VIA Eden mit 533 MHz, da sieht man sowas schon. Aber Dein Tip mit der ImageList hat schon geholfen, ist zwar noch nicht perfekt, aber wesentlich besser. Ich hatte die Dateien zwar auch schon vorher geladen und nur noch die Bitmaps getauscht, ist ja eigentlich das Gleiche, aber es geht so trotzdem besser.

    Interessant wäre trotzdem, warum man nix vor ein TAnimate legen kann.

    Danke, Jens


Anmelden zum Antworten