Page 1 of 1
clear tImage
Posted: Tue Jul 22, 2008 9:36 pm
by Natter
Hi all !
I created image
oIm:=tImage():New()
oIm:LoadBmp(cFile)
I want delete BMP from oIm. How do it ?
Posted: Tue Jul 22, 2008 9:53 pm
by StefanHaupt
Natter,
if you want to change the image just load load a new one
oIM:SetBmp(cResName) or oIM:ReLoad( cResName, cBmpFile )
if you want to delete the bmp you can destroy the object, just write oIM := nil or you try to load an unexisting image (not tested)
Posted: Tue Jul 22, 2008 10:09 pm
by Natter
... delete the bmp you can destroy the object, just write oIM := nil or you try to load an unexisting image (not tested)"
I do it. It's not work
Posted: Wed Jul 23, 2008 3:59 am
by ralph
try this:
oIm:hbitmap := 0
oIm:Refresh()
Ralph
Posted: Wed Jul 23, 2008 6:19 am
by Natter
It's not work
Posted: Wed Jul 23, 2008 7:19 am
by mmercado
Natter wrote:It's not work
May be:
Code: Select all
PalBmpFree( oIm:hBitMap, oIm:hPalette )
Regards.
Manuel Mercado.
Posted: Wed Jul 23, 2008 9:45 am
by Enrico Maria Giordano
This is a sample:
Code: Select all
#include "Fivewin.ch"
FUNCTION MAIN()
LOCAL oDlg, oImg
DEFINE DIALOG oDlg;
SIZE 700, 500
@ 1, 1 IMAGE oImg;
FILE "SFONDO.JPG";
SIZE 200, 200;
ADJUST
@ 0, 1 BUTTON "Save";
ACTION MSGINFO( oImg:SaveImage( "SAVED.JPG", 2 ) )
@ 0, 7 BUTTON "Print";
ACTION PRINT( oImg )
@ 0, 13 BUTTON "Paste";
ACTION ( oImg:LoadFromClipboard(),;
oImg:Refresh() )
@ 0, 19 BUTTON "Load";
ACTION ( oImg:LoadImage( , "GRIGIO.JPG" ),;
oImg:Refresh() )
@ 0, 25 BUTTON "Clear";
ACTION ( PalBmpFree( oImg:hBitMap, oImg:hPalette ),;
oImg:hBitmap := 0,;
oImg:hPalette := 0,;
oImg:cResName := NIL,;
oImg:cBmpFile := NIL,;
oImg:Refresh() )
ACTIVATE DIALOG oDlg;
CENTER
RETURN NIL
STATIC FUNCTION PRINT( oImg )
LOCAL oPrn
PRINT oPrn PREVIEW MODAL
PAGE
oPrn:SayImage( 0, 0, oImg, oPrn:nHorzRes(), oPrn:nVertRes() )
ENDPAGE
ENDPRINT
RETURN NIL
EMG
Posted: Wed Jul 23, 2008 12:58 pm
by James Bott
It looks like the TImage class needs an End() method.
James
Posted: Wed Jul 23, 2008 3:29 pm
by mmercado
James Bott wrote:It looks like the TImage class needs an End() method.
Hi James:
It has. TImage is a TBitmap subclass, then inherits Destroy Method.
Best regards.
Manuel Mercado
Posted: Wed Jul 23, 2008 4:56 pm
by Natter
Thank everybody !
@ 0, 25 BUTTON "Clear";
ACTION oImg:hBitmap := 0, ;
oImg:cBmpFile := NIL,;
oImg:Refresh() )
It work right !
Posted: Wed Jul 23, 2008 4:59 pm
by James Bott
It has. TImage is a TBitmap subclass, then inherits Destroy Method.
It is not clear if we should call the Destroy() method or the End() method. I see that TBitmap inherits from TControl which inherits from TWindow, yet I do not see the Destroy() method being called by any of those classes' End() method.
To be consistant with all the other classes, the End() method should be the one that ends the object.
James
Posted: Wed Jul 23, 2008 5:01 pm
by James Bott
Natter,
Try calling oImg:End() or oImg:Destroy() to see if one of those also works.
James
Posted: Wed Jul 23, 2008 5:21 pm
by Natter
1) calling oImg:End() - this method deleted control
2) calling oImg:Destroy() - this method not work right.
Posted: Wed Jul 23, 2008 5:36 pm
by Enrico Maria Giordano
Natter wrote:Thank everybody !
@ 0, 25 BUTTON "Clear";
ACTION oImg:hBitmap := 0, ;
oImg:cBmpFile := NIL,;
oImg:Refresh() )
It work right !
It's not enough. Please use what I put in my sample if you don't want to have resource leak.
EMG