Ereignis ohne Klick auslösen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aristophanes
Beiträge: 4
Registriert: Sa 23. Jul 2011, 21:35

Ereignis ohne Klick auslösen

Beitrag von Aristophanes »

Eigentlich ist es fast dieselbe Frage wie letztens schon einmal. Es geht um das Verschwinden von Bildern.
Auf dem Formular habe ich 1 oder 2 Panels, auf deren Canvas Bilder gezeichnet werden sollen.
Zunächst ein großes Panel. Durch Klicken auf den Filenamen in der Listbox wird ein Bild geladen und brav dargestellt.
Durch Klick auf einen Radiobutton wird nun die Panelgröße halbiert und ein zweites Panel daneben gesetzt. Das klappt wunderbar, auch reversibel.

Das (halbe) Bild sollte nun nur auf dem linken Panel dargestellt werden, das rechte ist noch ohne. Der entsprechende Befehl zum Neuzeichnen ist da, das Bild flackert auch kurz auf, aber dann sieht man nur noch die beiden leeren Panels.

Ich habe den draw-Befehl nach dem Erzeugen des zweiten Panels versuchsweise in ein OnPaint-Ereignis des Formulars sowie einen OnResize-Befehl für das Panel und einen OnTimer-Befehl gepackt. Das Bild wird aber nur dauerhaft gezeichnet, wenn ich entweder das Formular mit der Maus in der Größe verändere oder wenn die Taskleiste unten mal kurz über das Formular kommt und wieder verschwindet oder aber, wenn ich erneut auf den Namen des Files in der Listbox klicke. Das kann es aber doch nicht sein!?

Es muss eine einfache Lösung geben - wer kennt sie? - Aristophanes
Win7 64 Bit, Lazarus v0.9.30, TBGRABitmap, Portierung von Delphi 5 -> Lazarus

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Ereignis ohne Klick auslösen

Beitrag von MmVisual »

Um ein Bild darzustellen ist ein TImage da.
EleLa - Elektronik Lagerverwaltung - www.elela.de

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Ereignis ohne Klick auslösen

Beitrag von carli »

Konkurriert dein selbstgezeichnetes Bild mit einer Komponente, die an derselben Stelle sitzt?

Aristophanes
Beiträge: 4
Registriert: Sa 23. Jul 2011, 21:35

Re: Ereignis ohne Klick auslösen

Beitrag von Aristophanes »

MmVisual hat geschrieben:Um ein Bild darzustellen ist ein TImage da.
In meinem Fall ist es ein BGRABitmap - darstellen kann ich es ja.
carli hat geschrieben:Konkurriert dein selbstgezeichnetes Bild mit einer Komponente, die an derselben Stelle sitzt?
Nicht dass ich wüsste. Es sind dort nur meine beiden Panels, auf deren Canvas gezeichnet wird. Erst kommt die Größenänderung, dann soll das Bild darauf darauf gezeichnet werden, erscheint auch kurz und verschwindet wieder, bis ich ein anderes Event auslöse. Leider hilft OnTimer nicht, und auch kein Application.ProcessMessages...
Win7 64 Bit, Lazarus v0.9.30, TBGRABitmap, Portierung von Delphi 5 -> Lazarus

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Ereignis ohne Klick auslösen

Beitrag von mschnell »

Wenn ich mich recht erinnere: TImage zeichnet die ehemals überlagerten Bild-Teile automatisch neu. Es hat dazu eine eigene Canvas, die das Pixel-Bild in der aktuellen Vergrößerung enthält.

-Michael

Antworten