Image verschwinden bei klick



  • Hallo,

    ich habe folgendes Problem: Ich habe in meiner Form 3 Image zum klicken eingerichtet, eins für vor und zurück blättern und ein x zum schließen.
    Wenn ich jetzt auf vor oder zurück klicke verschwinden alle 3 image und kommen erst wieder wenn der mauszeiger auf der form selbst ist..

    ich habe mouseleave und mouseenter im programm drin, aber was er bei mouseenter tut, tut er auch in die klicks vor udn zurück.... woran könnte das noch liegen?

    Ist schon etwas unschön... hmpf

    Gruß



  • Quellcode?



  • mit diesem quellcode funktioniert es das die drei image sichtbar bleiben... :

    Form1->Width  = width;
    Form1->Height = height;
    Form1->Canvas->Rectangle(0,0,width,height);
    
    IBack->Repaint();
    INext->Repaint();
    ImClose->Repaint();
    RichAsk->SetFocus();
    

    aber wenn sich jetzt width oder height ändern, wird der rahmen nicht verändert...

    bei dieser reihenfolge, wird der rahmen richtig gezeichnet, aber die elemente in der form sind nicht mehr sichtbar... woran liegt das? bestimmt irgendwie an

    Form1->Canvas->Rectangle(0,0,width,height);
    
    Form1->Width  = width;
    Form1->Height = height;
    
    IBack->Repaint();
    INext->Repaint();
    ImClose->Repaint();
    Form1->Canvas->Rectangle(0,0,width,height);  // <-----
    RichAsk->SetFocus();
    


  • Hallo,

    Problem schrieb:

    in meiner Form 3 Image zum klicken eingerichtet, eins für vor und zurück blättern und ein x zum schließen

    was meinst du mit blättern?

    Problem schrieb:

    Wenn ich jetzt auf vor oder zurück klicke verschwinden alle 3 image und kommen erst wieder wenn der mauszeiger auf der form selbst ist

    Ganz sicher wird mit

    Form1->Canvas->Rectangle(0,0,width,height);
    

    der komplette Inhalt des Formulares überzeichnet. Verwende statt dieser Funktion vielleicht besser Canvas->Polyline.



  • Außerdem solltest du nur im Paint-Ereignis zeichnen (d.h. Canvas benutzen), denn sonst ist deine Änderung nur solange sichtbar, wie man das Formular nicht verkleinert bzw. ein anderes Formular darüber zieht.

    Statt "Polyline" könntest du auch "FrameRect" verwenden, da es einfacher zu benutzen ist (du mußt nur "Brush" statt "Pen" für die Farbeinstellung etc. benutzen).

    P.S: Außerdem solltest du innerhalb der Form-Methoden nicht explizit "Form1->" schreiben, sondern z.B.

    // entweder
    Width = width;
    
    // oder
    this->Width = width;
    

    Es könnte ja sein, daß du das Formular mehrmals benutzen willst (mit unterschiedlichen Instanzen).
    Die globalen Variablen "Form1" etc. sind eigentlich eine Unsitte der VCL-Programmierer!


Log in to reply