Thank you very much! But in my version of Express++ in a help description of this function is not.
I have this function is not documented. Could not give a working example of its use. Compilation is ok, but the performance gives an error that the function can not be applied to the object.
DC_Scrn2ClipBoard()
DC_PrintClipBoard(.t.)
With that also does not work.
Code: Select all
FUNCTION DC_Scrn2ImageFile( oXbp, cFileName, nFormat )
LOCAL oSourcePS, oBitmap, oClipBoard, aPos
oSourcePS := oXbp:lockPS()
IF oXbp:isDerivedFrom('XbpDialog')
aPos := { -4, -4 }
ELSE
aPos := { 0, 0 }
ENDIF
oBitmap := GraSaveScreen( oSourcePS, aPos, oXbp:currentSize() )
RETURN oBitMap:saveFile( cFileName, nFormat )
Function GraSaveScreen() also not documented.
**************************************
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\ALASKA\AIDOS-X\GraFonts.exe" Datum: 18.07.2014 10:12:23
Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: O CLASS: XbpPresSpace
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: Y
oError:cargo : NIL
oError:description : Object has no method with this name
oError:filename :
oError:genCode : 23
oError:operation : lockPS
oError:osCode : 0
oError:severity : 2
oError:subCode : 2220
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von DC_SCRN2IMAGEFILE(168)
Aufgerufen von LC_MULTILINE(150)
Aufgerufen von (B)_PRESSPACE(99)
Aufgerufen von DC_GETLIST:EVENTLOOP(4596)
Aufgerufen von DC_GETLIST:READGUI(3800)
Aufgerufen von DC_READGUI(111)
Aufgerufen von MAIN(87)
******************************************************
Code: Select all
*************************************
PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN
*************************************
PROCEDURE Main()
LOCAL GetList := {}, oStatic
LOCAL oPS, oDevice
DC_IconDefault(1000)
SET COLLATION TO SYSTEM // Руссификация
PRIVATE aAttr // Массив атрибутов отображаемых линий
PRIVATE nEvent, mp1, mp2, oXbp // Переменные анализа событий
* DC_PopFont() // от Роджера
@0, 0 DCSAY "Gra Fonts" FONT ("22.HelveticalBold") SIZE 0
PUBLIC X_MaxW := 1280, Y_MaxW := 850 // Размер графического окна в пикселях
@ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE X_MaxW, Y_MaxW PIXEL; // Размер окна для отображения графика
OBJECT oStatic;
EVAL {|| _PresSpace(oStatic ) }
DCREAD GUI ;
TITLE "Типовое решение по отображению семейства графиков"; // Надпись на окне графика
FIT ;
BUTTONS DCGUI_BUTTON_EXIT
RETURN
*************************************************
STATIC FUNCTION _PresSpace( oStatic )
LOCAL oPS, oDevice
oPS := XbpPresSpace():new() // Create a PS
oDevice := oStatic:winDevice() // Get the device context
oPS:create( oDevice ) // Link device context to PS
oPS:SetViewPort( { 0, 0, X_MaxW, Y_MaxW } )
oStatic:paint := {|mp1,mp2,obj| mp1 := LC_MultiLine( oPS ) }
RETURN NIL
*******************************************************
STATIC FUNCTION LC_MultiLine( oPS )
LOCAL GetList[0], GetOptions, oSourcePS, oBitmap, oDlg, aPos
****** Исследование графических шрифтов
****** Инициализация графического шрифта
aFonts := XbpFont():new():list() // Все доступные шрифты
* oFont := XbpFont():new():create("48.Helvetica") // Конкретный шрифт с указанием размера
* oFont := aFonts[1] // Конкретный шрифт по номеру из списка (всего доступно 1681 графических шрифтов)
* GraSetFont(oPS , oFont) // установить шрифт
oFont := aFonts[1]
GraSetFont(oPS , oFont) // установить шрифт
aAttrF := ARRAY( GRA_AS_COUNT )
aAttrF [ GRA_AS_COLOR ] := GRA_CLR_BLACK
* aAttrF [ GRA_AS_BOX ] := { 300, 50 } // Размер поля вывода
aAttrF [ GRA_AS_HORIZALIGN ] := GRA_HALIGN_CENTER // Выравнивание символов по горизонтали по центру относительно точки начала вывода
aAttrF [ GRA_AS_VERTALIGN ] := GRA_VALIGN_HALF // Выравнивание символов по вертикали по средней линии относительно точки начала вывода
GraSetAttrString( oPS, aAttrF )
GraStringAt( oPS, { 200, 10 }, "Всего шрифтов:"+ALLTRIM(STR(LEN(aFonts),15)) )
S = 1
* FOR j=1 TO LEN(aFonts) // Цикл по шрифтам
FOR j=1 TO 40 // Цикл по шрифтам
oFont := aFonts[j]
GraSetFont(oPS , oFont) // установить шрифт
aAttrF := ARRAY( GRA_AS_COUNT )
aAttrF [ GRA_AS_COLOR ] := GRA_CLR_BLACK
* aAttrF [ GRA_AS_BOX ] := { 300, 50 } // Размер поля вывода
aAttrF [ GRA_AS_HORIZALIGN ] := GRA_HALIGN_LEFT // Выравнивание символов по горизонтали по центру относительно точки начала вывода
aAttrF [ GRA_AS_VERTALIGN ] := GRA_VALIGN_HALF // Выравнивание символов по вертикали по средней линии относительно точки начала вывода
GraSetAttrString( oPS, aAttrF ) // Установить символьные атрибуты
GraStringAt( oPS, { 100, 20+(S-1)*20 }, "Шрифт №"+ALLTRIM(STR(j,15))+IF(oFont:vector,"-векторный","") )
S++
**** Записать графический файл
cFileName = "GraFont"+ALLTRIM(STR(j))
DC_Scrn2ImageFile(oPS, cFileName, "bmp" )
* GraSaveScreen(oPS, cFileName )
* DC_Scrn2ClipBoard()
DC_PrintClipBoard(.t.)
NEXT
*** Конец исследования шрифтов
RETURN NIL
FUNCTION DC_Scrn2ImageFile( oXbp, cFileName, nFormat )
LOCAL oSourcePS, oBitmap, oClipBoard, aPos
oSourcePS := oXbp:lockPS()
IF oXbp:isDerivedFrom('XbpDialog')
aPos := { -4, -4 }
ELSE
aPos := { 0, 0 }
ENDIF
oBitmap := GraSaveScreen( oSourcePS, aPos, oXbp:currentSize() )
RETURN oBitMap:saveFile( cFileName, nFormat )
[/size]