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!