This is a very simple sample I created for someone years ago. It will work with TX 15 and any further version. Insert your license-code and it will create a simple word processor with a context menu in it. It needs the name of an RTF-file als parameter. Slight changes needed to add support for any other format. The used function "RTFImport" may be replaced by others (LoadFromMemory). Used in a program, this function will also work with any ASCII text oder stored RTF-text from memos.
Code: Select all
#include 'dcdialog.ch'
#pragma library("dclipx.lib")
#PRAGMA LIBRARY("ASCOM10.LIB")
function main(cTextFile)
local oStatic1, oTxDlgArea, oDialog, oTxControl,oTxButtonBar,oTxStatusBar,;
cText := '', oTxMenu, GetList := {}, GetOptions := {}
if pcount()>0
cText := cTextFile
endif
@ 2,2 DCSTATIC type XBPSTATIC_TYPE_TEXT object oStatic1 SIZE 120,22
DCGET OPTIONS AUTORESIZE
DCREAD GUI ;
TITLE "TX Text Control Test" ;
OPTIONS GetOptions ;
PARENT @oDialog ;
eval {||MyCreateTxControl(@oTxMenu,.T.,.T.,oDialog,oStatic1,@oStatic1,@oTxControl,@oTxButtonBar,@oTxStatusBar,cText,.T.),SetAppFocus(oTxControl)} ;
FIT
RETURN nil
FUNCTION MyCreateTxControl(oTxMenu,lResizeable,lEditAble,oOwner,oWindow, oDlgArea,oTxControl,oTxButtonBar,oTxStatusBar,cMemoText,lIsDatei )
Local oThread,cTxFile, oTwDlg
Local w,h,hbutton,htext,hstatus, xWhatEver, xWhatSav
DEFAULT lIsDatei := .F.
w:=oDlgArea:currentSize()[1]
h:=oDlgArea:currentSize()[2]
hButton := if(lEditAble,32,0)
hstatus := 20
htext := h-(hbutton+hstatus)
oTxControl := XbpActiveXControl():new( oDlgArea )
oTxControl:CLSID := 'TIS.TX.TextControl.15'
oTxControl:license := 'TP-XXXXXXXXXXX'
oTxControl:Userevents := .F.
oTxControl:create(oDlgArea,,{0,hstatus},{w,htext} )
if lEditable
// Buttonbar
oTXButtonBar := XbpActiveXControl():new( oDlgArea )
oTXButtonBar:CLSID := 'TIS.TX.ButtonBarControl.15'
oTXButtonBar:create(oDlgArea,,{0,hstatus+htext},{w,hbutton} )
oTxButtonBar:Userevents := .F.
endif
// Statusbar
oTXStatusBar := XbpActiveXControl():new( oDlgArea )
oTXStatusBar:CLSID := 'TIS.TX.StatusBarControl.15'
oTXStatusBar:create(oDlgArea,,{0,0},{w,hstatus} )
oTxStatusBar:Userevents := .F.
if lEditAble
oTxControl:ButtonBarHandle := oTXButtonBar:hWnd
oTXButtonBar:Appearance := 2
oTXStatusBar:Enabled := .T.
oTXStatusBar:Language := 49
oTXButtonBar:PosControlChars := 1
endif
oTxControl:StatusBarHandle := oTXStatusBar:hWnd
oTXControl:Enabled := .T.
oTXControl:EditMode := if(lEditAble,0,1)
oTxControl:InsertionMode := .T.
oTXControl:PageHeight := 16160
oTXControl:ScrollBars := 3
oTXControl:SizeMode := 0
oTXControl:PageWidth := 12000 // was 14000
oTXControl:FontName := "Tahoma"
oTXControl:FontSize := 8
oTXStatusBar:TextColumn := "Spalte"
oTXStatusBar:TextLine := "Zeile"
oTXStatusBar:TextPage := "Seite"
oTXStatusBar:FontName := "Tahoma"
if len(cMemoText) > 0
if lIsDatei
oTXStatusBar:Text := (cMemoText)
oTxControl:RTFImport(cMemoText)
else
if left(cMemoText,5) = "{\rtf"
oTxControl:RTFSelText := cMemoText
else
oTxControl:Text := (hardcr(cMemoText))
endif
endif
endif
if lEditable
oTxMenu := XbpMenu():new( oDlgArea ):create( )
oTxMenu:AddItem( {"Format (Font)",{ || oTxControl:FontDialog(),SetAppFocus(oTxControl) } } )
oTxMenu:AddItem( {NIL, NIL, XBPMENUBAR_MIS_SEPARATOR, 0 } )
oTxMenu:AddItem( {"Delete",{ || oTxControl:Clip(4) } } )
oTxMenu:AddItem( {"Cut",{ || oTxControl:Clip(1) } } )
oTxMenu:AddItem( {"Copy",{ || oTxControl:Clip(2) } } )
oTxMenu:AddItem( {"Paste",{ || oTxControl:Clip(3) } } )
oTxControl:RbDown := { |mp1, mp2, obj|oTxMenu:PopUp ( oDlgArea, mp1 , 1 ,XBPMENU_PU_DEFAULT + XBPMENU_PU_MOUSE_RBDOWN) }
endif
RETURN nil
procedure AppSys() ; return