Foro | | | | Thomas Freier | Wollte una RTF mehrfach en más Páginas drucken. Ein de Pascal angepasstes Script va. KompilierenMarcaSeparaciónDEMO DRAWRICHTEXT GRÖSSENABFRAGE
window 0,0-400,300
$H Windows.ph
$H Messages.ph
$H RichEdit.ph
proc DrawRichText2---------------------------------------------------------DrawRichText2
parameters RTF&,PosX%,PosY%,MaxX%,MaxY%--Position + Grösse in Pixeln!
declare PrinterDpiX%,PrinterDpiY%
declare WindowDpiX%,WindowDpiY%
declare fx!,fy!
if %printing--Bei Druck: %HDC2 = %HDC = &PDC
~SetMapMode(%hdc2,1)
~SetWindowExtEx(%hdc2,1,1,0)
~SetViewPortExtEx(%hdc2,1,1,0)
PosX%=PosX%+30--Korrektur ???
PosY%=PosY%+30--Korrektur ???
endif
PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)--dpi X des Druckers
PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)--dpi X des Druckers
WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)--dpi X des Bildschirms (!)
WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)--dpi Y des Bildschirms (!)
PosX%=int(PosX%/WindowDpiX%*1440)
PosY%=int(PosY%/WindowDpiX%*1440)
MaxX%=int(MaxX%/WindowDpiX%*1440)
MaxY%=int(MaxY%/WindowDpiX%*1440)
declare Range#
dim Range#,48
clear Range#
long Range#, 0=%hdc2,%hdc2
long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,44=-1
sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)
if %printing
fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
~SetMapMode(%hdc2,~MM_ANISOTROPIC)
~SetWindowExtEx(%hdc2,6400,9600,0)
~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)
endif
dispose Range#
casenot %printing:repaint
endproc---------------------------------------------------------------------------------
Print "Bitte warten, der Druck wird vorbereitet!"
var hFont% = @Create("Font","Arial",20,12,0,0,0)
declare RtfDll&,RichEdit&
RtfDll&=usedll("RichEd20.dll")
RichEdit&=control("RichEdit20A","Test",$500050c4,0,0,0,0,%hwnd,5000,0)
settext RichEdit&,"Diese RTF-Anwendung läßt mich nicht verzweifeln!"
SetFont RichEdit&,hFont%
declare Breite%,Höhe%
Breite%= 400
Höhe%= 200
var y1%=0
var x1%=0
startprint
var y%=0
While y% < 26 ....einfach einmal auf zwei Seiten drucken
DrawRichText2 RichEdit&,(y1%*4.40),(x1%*4.40),400,200
inc y%
y1%=y1% + 105
if y1%>105
y1%=0
x1%=x1%+43
IF x1%>290
x1%=0
NEXTPAGE
endif
endif
wend
endprint
destroywindow(RichEdit&/span>
waitkey
In meiner, hier stark gekürzten, Anwendung se el Font en el zweiten Página geändert y yo finde el Fehler no. KompilierenMarcaSeparaciónLABEL-EDIT-DRUCK-E
$H Windows.ph
$H Messages.ph
$H RichEdit.ph
proc DrawRichText2---------------------------------------------------------DrawRichText2
parámetros RTF&,PosX%,PosY%,MaxX%,MaxY%--Position + Grösse en Pixeln!
declarar PrinterDpiX%,PrinterDpiY%
declarar WindowDpiX%,WindowDpiY%
declarar fx!,fy!
if %printing--En Druck: %HDC2 = %HDC = &PDC
~SetMapMode(%hdc2,1)
~SetWindowExtEx(%hdc2,1,1,0)
~SetViewPortExtEx(%hdc2,1,1,0)
PosX%=PosX%+3--Corrección ???
PosY%=PosY%+3--Corrección ???
endif
PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)--dpi X des Druckers
PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)--dpi X des Druckers
WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)--dpi X des Bildschirms (!)
WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)--dpi Y des Bildschirms (!)
PosX%=int(PosX%/WindowDpiX%*1440)
PosY%=int(PosY%/WindowDpiX%*1440)
MaxX%=int(MaxX%/WindowDpiX%*1440)
MaxY%=int(MaxY%/WindowDpiX%*1440)
declarar Range#
dim Range#,48
clear Range#
long Range#, 0=%hdc2,%hdc2
long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,44=-1
sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)
if %printing
fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
~SetMapMode(%hdc2,~MM_ANISOTROPIC)
~SetWindowExtEx(%hdc2,6400,9600,0)
~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)
endif
disponer Range#
casenot %printing:repaint
ENDPROC---------------------------------------------------------------------------------
#########################################################################################
Proc Label
declarar x1%,y1%
Declarar rtf#
Declarar x&,x%,y%
declarar Label_m&,RtfDll&,Label_dlg&
declarar a#
declarar LB_form&
declarar RichEdit&
declarar MaxB%,MaxH%
declarar IstB%,IstH%
declarar Pos#
declarar WndProc&
dim Pos#,8
dim rtf#,512
RtfDll&=usedll("RichEd20.dll")
WINDOWSTYLE 16
Label_m&=create("Window",%hwnd,"Adresslabelformat: 105x43 ; en el Blatt: 7 Zeilen + 2 Reihen",100,50, 640,640)
usefont "MS Sans Serif",16,0,0,0,0
setdialogfont 1
var hFont% = @Crear("Font",Arial,20,12,0,0,0)
var BP_but4& =@Crear("Button",Label_m&,"Drucken",450,554,82,25)
var BP_but5& = @Crear("Button",Label_m&,"Ende",540,554,82,25)
.....................................................................RTF-Editar erzeugen
Label_dlg&=@Control("STATIC","",$5400110E,0,32,624,340,Label_m&,$7918,%hInstance)
MaxB%=405
MaxH%=243
x%= (MaxB%/2) - 50
Lb_form&=@Control("STATIC","",$5400110E,x%,5,MaxB%/2,20,Label_dlg&,$7918,%hInstance)
RichEdit&=control("RichEdit20A","",$54005004,33,33,MaxB%,MaxH%,Label_dlg&,5000,0)
settext RichEdit&,"Diese RTF-Anwendung läßt mich verzweifeln!"
SetFont RichEdit&,hFont%
mientras que 1
WaitInput
caso GetFocus(BP_but5&): romper
If GetFocus(BP_but4&) ----------------------------Drucken
y1%=0
x1%=0
startprint
y%=0
Mientras que y% < 26 ....simplemente una vez en zwei Páginas drucken
DrawRichText2 RichEdit&,(y1%*4.40),(x1%*4.40),400,200
inc y%
y1%=y1% + 105
if y1%>105
y1%=0
x1%=x1%+43
IF x1%>290
x1%=0
NEXTPAGE
endif
endif
wend
endprint
EndIf
endwhile
destroywindow(RichEdit&)
disponer rtf#
disponer a#
disponer pos#
destroywindow(Label_m&)
freedll RtfDll&
ENDPROC
#########################################################################################
WINDOWSTYLE 543512+8+2
Windowtitle "CSV Daten para Adresslabel"
window 0,0 - 900,600
Label Adresslabel
destroywindow(%hWnd)
end
Sieht ihn uno de euch oder ha una Tip, woran lo mentira podría? |
| | | | |
| | Dieter Zornow | Yo denke veces después de cada nextpage debería oder muss el Font neu transferencia voluntad. Habs no getestet, como Yo nichts para ausdrucken habe. |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 20.08.2008 ▲ |
| |
| | Thomas Freier | @ Dieter , Yo verwende beim Testen "FreePDF XP". Der eigentliche Vorgang: erster dbf Datensatz el blanko.rtf se geladen el Platzhalter (dbf-Feldnamen) voluntad todavía una vez überprüft entonces el entsprechende RTF-Línea con el Daten de el dbf ersetzt Ausdruck a el vorgesehenen Position. el RTF gelöscht nächster dbf Datensatz el blanko.rtf se geladen usw. así debería lo eigentlich ir. Leider sólo en el 1. Página. |
| | | | |
| | Jörg Sellmeyer | | | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 20.08.2008 ▲ |
| |
| | Thomas Freier | @ Jörg, dass Si es usted el ausbuddeln würdest war me klar. Aber, hier erweitert con Daten, ergibt el Gewünschte con "nextpage". KompilierenMarcaSeparaciónDEMO DRAWRICHTEXT GRÖSSENABFRAGE
$H Windows.ph
$H Messages.ph
$H RichEdit.ph
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$I Listview_Funktionen.inc
var lvdll&=usedll("Listview.dll")
Declare bereich#,bytes&,Label_view&,x&,y&,z&,x%
Declare listview&, text$
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Def GetSysColor(1) !"USER32","GetSysColor"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc DrawRichText2---------------------------------------------------------DrawRichText2
parameters RTF&,PosX%,PosY%,MaxX%,MaxY%--Position + Grösse in Pixeln!
declare PrinterDpiX%,PrinterDpiY%
declare WindowDpiX%,WindowDpiY%
declare fx!,fy!
if %printing--Bei Druck: %HDC2 = %HDC = &PDC
~SetMapMode(%hdc2,1)
~SetWindowExtEx(%hdc2,1,1,0)
~SetViewPortExtEx(%hdc2,1,1,0)
PosX%=PosX%+30--Korrektur ???
PosY%=PosY%+30--Korrektur ???
endif
PrinterDpiX%=~GetDeviceCaps(%hdc2,~LOGPIXELSX)--dpi X des Druckers
PrinterDpiY%=~GetDeviceCaps(%hdc2,~LOGPIXELSY)--dpi X des Druckers
WindowDpiX%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSX)--dpi X des Bildschirms (!)
WindowDpiY%=~GetDeviceCaps(~GetDC(%hwnd),~LOGPIXELSY)--dpi Y des Bildschirms (!)
PosX%=int(PosX%/WindowDpiX%*1440)
PosY%=int(PosY%/WindowDpiX%*1440)
MaxX%=int(MaxX%/WindowDpiX%*1440)
MaxY%=int(MaxY%/WindowDpiX%*1440)
declare Range#
dim Range#,48
clear Range#
long Range#, 0=%hdc2,%hdc2
long Range#, 8=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,24=PosX%,PosY%,PosX%+MaxX%,PosY%+MaxY%
long Range#,44=-1
sendmessage(RTF&,~EM_FORMATRANGE,1,Range#)
if %printing
fx!=~GetDeviceCaps(%hdc2,~LOGPIXELSX)/300
fy!=~GetDeviceCaps(%hdc2,~LOGPIXELSY)/300
~SetMapMode(%hdc2,~MM_ANISOTROPIC)
~SetWindowExtEx(%hdc2,6400,9600,0)
~SetViewPortExtEx(%hdc2,int(2200*fx!),int(3300*fy!),0)
endif
dispose Range#
casenot %printing:repaint
endproc---------------------------------------------------------------------------------
Proc ErsetzeMultiLine
Parameters REdit&,Line&
Declare Index&,Index1&
Index& = ~sendMessage(REdit&,~EM_LINEINDEX,Line&-1,0)
Index1& = ~sendMessage(REdit&,~EM_LINEINDEX,Line&,0)
~sendmessage(REdit&,~EM_SETSEL,Index&,Index1&)
~sendmessage(REdit&,~EM_REPLACESEL,0,addr(c$)) Ersetzt den markierten Text
Endproc----------------------------------------------------------------------------------
WINDOWSTYLE 543512+8+2
Windowtitle "CSV Daten für Adresslabel"
window 0,0 - 900,600
AppendMenuBar 3," Adresslabel "
x&=MixRGBs(GetSysColor(15),$00ffffff)
listview&=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
text$="Pliete.csv"
bytes&=@FileSize(text$)
If bytes&>0
Dim bereich#,bytes&
ReadFileQuick(addr(text$),bereich#,0,bytes&)
x&=SetColumnsFromMem(listview&,bereich#,addr(y&))
CsvToListview(listview&,(bereich#+y&),(bytes&-y&),x&)
EndIf
AutoSortListview listview&,1,1,1,1,2,2
ShowListView(listview&,100,32,754,456)
Print "Bitte warten, der Druck wird vorbereitet!"
var hFont% = @Create("Font","Arial",20,12,0,0,0)
declare RtfDll&,REdit&
RtfDll&=usedll("RichEd20.dll")
REdit&=control("RichEdit20A","Test",$500050c4,0,0,0,0,%hwnd,5000,0)
RTF("LoadRTF",REdit&,"Aufkleber Brief.rtf")
x%=3
declare c$
declare Breite%,Höhe%
Breite%= 800
Höhe%= 400
var y1%=0
var x1%=0
startprint
y&=0
While y& < 226 ....einfach einmal auf zwei Seiten drucken
c$="Herrn"+"
"
ErsetzeMultiLine(REdit&,4)Zeile ersetzen
GetItemText(listview&,bereich#,1,y&)
c$=String$(bereich#,0)
GetItemText(listview&,bereich#,2,y&)
c$=c$ + " " + String$(bereich#,0) + "
"
ErsetzeMultiLine(REdit&,5)Zeile ersetzen
GetItemText(listview&,bereich#,11,y&)
c$=String$(bereich#,0) + "
"
ErsetzeMultiLine(REdit&,6)Zeile ersetzen
GetItemText(listview&,bereich#,9,y&)
c$=String$(bereich#,0)
GetItemText(listview&,bereich#,10,y&)
c$=c$ + " " + String$(bereich#,0) + "
"
ErsetzeMultiLine(REdit&,8)Zeile ersetzen
DrawRichText2 REdit&,(y1%*4.40),(x1%*4.40),400,200
inc y&
y1%=y1% + 105
if y1%>105
y1%=0
x1%=x1%+43
IF x1%>290
x1%=0
NEXTPAGE
endif
endif
wend
endprint
WaitInput
destroywindow(REdit&)
dispose bereich#
destroywindow(%hWnd)
/../../funcion-referencias/XProfan/freedll/'>freedll lvdll&
$I Listview_Dispose.inc
Posesiones aber todavía una code gefunden: KompilierenMarcaSeparaciónStartDoc(PrinterDC&,DocInfo#)
Sinestar encargado O(iTextOut& >= iTextLength&,itextOut& = -1)
StartPage(PrinterDC&)
Largo FormatRange#,44 = -1
iTextOut& = SendMessage(RichEdit&, 1081, 1, FormatRange#)
Largo FormatRange#,40 = iTextOut&
SendMessage(RichEdit&,1075,0,cRect#)
EndPage(PrinterDC&)
Wend
EndDoc(PrinterDC&)
el Yo ausprobieren voluntad. |
| | | | |
| | Thomas Freier | @Jörg, Yo hoffe mein Kommentar war no a hart. Aber UseFont darf eigentlich en el Font en el RTF auch beim Drucken oder erzwungenem Seitenwechsel no Einfluß nehmen. Obwohl, en XProfan es el no gewiss. Un A5 RTF se beim Guardar a uno A4 RTF. ¿Por qué??? Genaues probablemente sólo Roland wissen. Sombrero no uno una Tip, como una Seitenwechsel erzwungen se, außer Druckersteuerzeichen a senden? |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 3 subscriber: |