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
Ereignis ohne Klick auslösen
-
- Beiträge: 4
- Registriert: Sa 23. Jul 2011, 21:35
Ereignis ohne Klick auslösen
Win7 64 Bit, Lazarus v0.9.30, TBGRABitmap, Portierung von Delphi 5 -> Lazarus
-
- 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
Um ein Bild darzustellen ist ein TImage da.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- 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
Konkurriert dein selbstgezeichnetes Bild mit einer Komponente, die an derselben Stelle sitzt?
-
- Beiträge: 4
- Registriert: Sa 23. Jul 2011, 21:35
Re: Ereignis ohne Klick auslösen
In meinem Fall ist es ein BGRABitmap - darstellen kann ich es ja.MmVisual hat geschrieben:Um ein Bild darzustellen ist ein TImage da.
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...carli hat geschrieben:Konkurriert dein selbstgezeichnetes Bild mit einer Komponente, die an derselben Stelle sitzt?
Win7 64 Bit, Lazarus v0.9.30, TBGRABitmap, Portierung von Delphi 5 -> Lazarus
-
- 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
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
-Michael