We have one machine in the office running XP that displays the following
error code when a bitmap is included in the field... OLE error 0x80040154
class not registered. The machine will not display the bmp files in visual
foxpro 8. the other 6 machines in the office do not have this problem. The
app is accessed from a networked server. Could this problem be
related to activex control? and if so which ocx file controls displaying bmp
files in a field? ROB


--
Message posted via DBMonster.com
http://www.dbmonster.com/Uwe/Forums.aspx/foxpro-general/200508/1

SV: bmp display in general field by Anders

Anders
Sun Aug 28 08:25:37 CDT 2005

General fields assume the client will have a copy of the same application to
display the bitmap, Excel sheet or whatever it is you put into the General
field as was used on the machine that inserted the record. That's why
General fields have been abandoned as impractical.

-Anders


Den 05-08-28 13.14, i artikeln 5383BDC7B0321@DBMonster.com, skrev "Rob N via
DBMonster.com" <forum@DBMonster.com>:

> We have one machine in the office running XP that displays the following
> error code when a bitmap is included in the field... OLE error 0x80040154
> class not registered. The machine will not display the bmp files in visual
> foxpro 8. the other 6 machines in the office do not have this problem. The
> app is accessed from a networked server. Could this problem be
> related to activex control? and if so which ocx file controls displaying bmp
> files in a field? ROB
>


RE: SV: bmp display in general field by Leemi

Leemi
Mon Aug 29 08:58:07 CDT 2005

Hi Rob:

To add a to Anders' post, he is an alternative method to use that bypasses
the usage of general fields.

Visual FoxPro is at the mercy of external applications for the display of
items embedded in general fields. This would be true no matter what type of
file it is (Excel Worksheet, bitmap, jpg, etc). Going forward, your app
needs to have a more encapsulated way of dealing with this. Following is
just such a method.

REPORT
---------------
By using the MEMO BINARY field type and a UDF(), we can store .JPG files in
a table field yet when the report runs have them read from DISK. Here's how:

(1) Create a table or cursor with a structure like this (plus any added
fields as necessary)

FileName C (150)
MemBin MEMO(BINARY)

The command would be CREATE TABLE GENDBF (FileName c(150), MemoBin M
NOCPTRANS)

(2) Append .JPGs file into the MEMO(Binary) field using FILETOSTR() and set
the filename field accordingly. For instance:

INSERT INTO CURSORNAME VALUES("ToothBrush.JPG", FILETOSTR(<PathToFile>))

(3) The FoxPro report will still need an OLEBOUND control on it to print
pictures, but instead of pointing the OLEBOUND to a general field, point it
FILE and use this as the expression:

MYUDF(FileName, MemoBin)

Where MyUDF is in some program made available via SET PROC and reads thusly:

PROCEDURE MYUDF(lpFileName, lpMemoBinFld)
LOCAL lcTemp as String
lcTemp = ADDBS(SYS(2023)) + "JPGTEMP\"
IF !DIRECTORY(lcTemp)
MD (lcTemp)
ENDIF
SET SAFETY OFF
STRTOFILE(lpMemoBinFld, lcTemp + lpFileName)
SET SAFETY ON
RETURN lcTemp + lpFileName

(4) Finally, preview/print the report. You may also want to fire some lines
like this to clean up afterward:

ERASE ADDBS(SYS(2023)) + "JPGTEMP\*.jpg"
RD ADDBS(SYS(2023)) + "JPGTEMP"

The .PRG uses the code above and the .JPGs that come with W2K, so it should
run on that OS with no problem.

----------------------------------------------------------------------------
---



FORM
----------
Let's assume we have the table created earlier:

FileName C (150)
MemBin MEMO(BINARY)

This form will display images from it:

PUBLIC oform1

oform1=NEWOBJECT("form1")
oform1.Show
RETURN


**************************************************
DEFINE CLASS form1 AS form
Top = 71
Left = 48
Height = 310
Width = 504
Caption = "Fox Image Demo"
Name = "Form1"

ADD OBJECT image1 AS image WITH ;
Height = 296, ;
Left = 3, ;
Top = 8, ;
Width = 381, ;
Name = "Image1"

ADD OBJECT cmdPrevious AS commandbutton WITH ;
Top = 27, ;
Left = 422, ;
Height = 27, ;
Width = 24, ;
Caption = "<", ;
Name = "cmdPrevious"

ADD OBJECT cmdNext AS commandbutton WITH ;
Top = 27, ;
Left = 446, ;
Height = 27, ;
Width = 24, ;
Caption = ">", ;
Name = "cmdNext"

ADD OBJECT cmdQuit AS commandbutton WITH ;
Top = 72, ;
Left = 405, ;
Height = 27, ;
Width = 84, ;
Caption = "Quit", ;
Name = "cmdQuit"

PROCEDURE getimage
LPARAMETERS lpFileName, lpMemoBinFld

LOCAL lcTemp AS STRING
lcTemp = ADDBS(SYS(2023)) + "JPGTEMP\"
IF !DIRECTORY(lcTemp)
MD (lcTemp)
ENDIF
SET SAFETY OFF
STRTOFILE(lpMemoBinFld, lcTemp + lpFileName)
SET SAFETY ON
RETURN lcTemp + lpFileName
ENDPROC

PROCEDURE Destroy
USE IN SELECT("PICTURES")
ERASE ADDBS(SYS(2023)) + "JPGTEMP\*.jpg"
RD ADDBS(SYS(2023)) + "JPGTEMP"
ENDPROC

PROCEDURE Load
CD JUSTPATH(SUBSTR(SYS(16),AT(' ',SYS(16),2)))
USE PICTURES
ENDPROC

PROCEDURE Init
THISFORM.Image1.Picture = ;
THIS.GetImage(Pictures.FileName, Pictures.MemBin)
ENDPROC

PROCEDURE cmdPrevious.Click
IF RECNO() <> 1
SKIP -1
THISFORM.Image1.Picture = ;
THISFORM.GetImage(Pictures.FileName, Pictures.MemBin)
THISFORM.REFRESH
ENDIF
ENDPROC

PROCEDURE cmdNext.Click
IF RECCOUNT() <> RECNO() AND !EOF()
SKIP
THISFORM.Image1.Picture = ;
THISFORM.GetImage(Pictures.FileName, Pictures.MemBin)
THISFORM.REFRESH
ENDIF
ENDPROC

PROCEDURE cmdQuit.Click
THISFORM.RELEASE
ENDPROC
ENDDEFINE
**************************************************

I hope this helps.

This posting is provided "AS IS" with no warranties, and confers no rights.

Sincerely,
Microsoft FoxPro Technical Support
Lee Mitchell

*-- VFP9 HAS ARRIVED!! --*
Read about all the new features of VFP9 here:
http://msdn.microsoft.com/vfoxpro/

*--Purchase VFP 9.0 here:
http://www.microsoft.com/PRODUCTS/info/product.aspx?view=22&pcid=54787e64-52
69-4500-8bf2-3f06689f4ab3&type=ovr

Keep an eye on the product lifecycle for Visual FoxPro here:
http://support.microsoft.com/gp/lifeselectindex
- VFP5 Mainstream Support retired June 30th, 2003
- VFP6 Mainstream Support retired Sept. 30th, 2003

>General fields assume the client will have a copy of the same application
to
>display the bitmap, Excel sheet or whatever it is you put into the General
>field as was used on the machine that inserted the record. That's why
>General fields have been abandoned as impractical.

>-Anders


>Den 05-08-28 13.14, i artikeln 5383BDC7B0321@DBMonster.com, skrev "Rob N
via
>DBMonster.com" <forum@DBMonster.com>:

> We have one machine in the office running XP that displays the following
> error code when a bitmap is included in the field... OLE error 0x80040154
> class not registered. The machine will not display the bmp files in visual
> foxpro 8. the other 6 machines in the office do not have this problem. The
> app is accessed from a networked server. Could this problem be
> related to activex control? and if so which ocx file controls displaying
bmp
> files in a field? ROB
>