Konu: dikey yazı
herkese günaydın,
label da yada report ta dikey yazı nasıl yazdırabilirim.
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Raporlar ve Etiketler » dikey yazı
herkese günaydın,
label da yada report ta dikey yazı nasıl yazdırabilirim.
ben bu işi için yazımı paintbrush ta dikey yazıp bmp olarak kaydediyorum ve onu report ta kullanıyorum.
sabit değerleri yazdırmak için mi kullanıyorsunuz yoksa değişkenleride o şekildemi yazdırıyorsunuz
dikey derken
DENEME yazısını
D
E
N
E
M
E
şeklinde değilde DENEME yazısını saat yönünde veya tersine çevirerek yazmaya çalışıyorum
Eğer VFP9 kullanıyorsan
http://msdn.microsoft.com/library/defau … ports2.asp
Sanırım Report listener ile bu işi çözebilirsin.
VFP da artık label align yapilabiliyor
benim bildiğim kadarıyla rotation property sadece formlardaki labeller için geçerli. reportlarda sedna ile geleceğini biliyorum. xfrx ise şu an destekliyor. ben onu kullanıyorum. sednax report çıktığında bile xfrx kadar güzel olmayacak anladığım kadarıyla...
Eğer VFP9 kullanıyorsan
http://msdn.microsoft.com/library/defau … ports2.aspSanırım Report listener ile bu işi çözebilirsin.
bu linki inceledim. anladığım kadarıyla kendi listenerini yazman gerekiyor rotate yapabilmek için. veya örnektekini kopyalayacaksın. ama sedna da hazır verilecek bu -diye biliyorum...
Sanirim rotate dememk istedin:
myLabel.rotate = 90
evet
Report oldugunu farketmemistim bile. Ben VFP9 reportlarini kullanmadigim icin herhalde hicbir zaman da gormeyecegim.
xfrx'i bir kere denedim, hic begenmedim ve sildim (herkesi memnun edemiyorlar:)
cetinyasar yazdı:Eğer VFP9 kullanıyorsan
http://msdn.microsoft.com/library/defau … ports2.aspSanırım Report listener ile bu işi çözebilirsin.
bu linki inceledim. anladığım kadarıyla kendi listenerini yazman gerekiyor rotate yapabilmek için. veya örnektekini kopyalayacaksın. ama sedna da hazır verilecek bu -diye biliyorum...
Bence Foxpro'nun report generator'u bedavaya bulunabilecek en güzellerinden bir tanesi. Başka dilde program yazıp bedava olduğu için VFP report'u kullananlar bile var. XFrx'de güzel ancak oda bana göre çok yavaş çalışıyor.
report listener la ilgili örneği olan varmı,yada nasıl hazırlanır,nereye yazılır,nasıl çalıştırılır,faydalı bir esermidir
Tarik,
(beni dinleme ama) listener'i ve reportbehavior 90'i kullanma.
Report oldugunu farketmemistim bile. Ben VFP9 reportlarini kullanmadigim icin herhalde hicbir zaman da gormeyecegim.
xfrx'i bir kere denedim, hic begenmedim ve sildim (herkesi memnun edemiyorlar:)
merak ettim şimdi. vfp report'u kullanmıyorsun, xfrx kullanmıyorsun. frx2any veya crystal reports mu kullanıyorsun? yoksa daha başka bişey mi? başkaysa ne? report benim için çok önemli. hatta formlardan daha önemli. mevcut vfp formları yeterli oluyor, ama reportlarla ilgili sıkıntılar çok sık oluyor...
report listener la ilgili örneği olan varmı,yada nasıl hazırlanır,nereye yazılır,nasıl çalıştırılır,faydalı bir esermidir
oPC = null
do (_REPORTPREVIEW) with m.oPC
opc.Caption = "BAŞLIK"
opc.TopForm = .T.
opc.Top = 75
opc.Left = 75
opc.Height = 600
opc.Width = 800
opc.CanvasCount = 1
opc.ZoomLevel = 5
oListener = createOBJECT("EffectsListener")
oListener.OutputType = 1
oListener.ListenerType = 1
oListener.PreviewContainer = m.oPC
REPORT FORM aaa OBJECT oListener TO PRINTER PROMPT PREVIEW
define class EffectsListener as _ReportListener of ;
home() + 'ffc\_ReportListener.vcx'
oEffectHandlers = .NULL.
lDevirTamam = .F.
&& a collection of effect handlers
dimension aRecords[1]
function Init
dodefault()
with This
.oEffectHandlers = createobject('Collection')
.oEffectHandlers.Add(createobject('DynamicForeColorEffect'))
.oEffectHandlers.Add(createobject('DynamicStyleEffect'))
.oEffectHandlers.Add(createobject('AyIsimleriEffect'))
endwith
endfunc
function BeforeReport
dodefault()
with This
.SetFRXDataSession()
dimension .aRecords[reccount(), 2]
.ResetDataSession()
endwith
endfunc
function EvaluateContents(tnFRXRecno, toObjProperties)
local loEffectObject, ;
loEffectHandler, ;
lcExpression
with This
if not .aRecords[tnFRXRecno, 1]
.aRecords[tnFRXRecno, 1] = .T.
.aRecords[tnFRXRecno, 2] = .SetupEffectsForObject(tnFRXRecno)
endif not .aRecords[tnFRXRecno, 1]
for each loEffectObject in .aRecords[tnFRXRecno, 2]
loEffectHandler = loEffectObject.oEffectHandler
lcExpression = loEffectObject.cExpression
loEffectHandler.Execute(toObjProperties, lcExpression)
next loEffect
endwith
dodefault(tnFRXRecno, toObjProperties)
endfunc
function SetupEffectsForObject(tnFRXRecno)
local loFRX, ;
loHandlers, ;
loObject
with This
loFRX = .GetReportObject(tnFRXRecno)
loHandlers = createobject('Collection')
for each loEffectHandler in .oEffectHandlers
loObject = loEffectHandler.GetEffect(loFRX)
if vartype(loObject) = 'O'
loHandlers.Add(loObject)
endif vartype(loObject) = 'O'
next loEffectHandler
endwith
return loHandlers
endfunc
procedure GetReportObject(tnFRXRecno)
local loObject
This.SetFRXDataSession()
go tnFRXRecno
scatter memo name loObject
This.ResetDataSession()
return loObject
endproc
enddefine
define class EffectObject as Custom
oEffectHandler = .NULL.
cExpression = ''
enddefine
define class EffectHandler as Custom
function Execute(toObjProperties, tcExpression)
endfunc
function GetEffect(toFRX)
local loObject
loObject = .NULL.
return loObject
endfunc
function EvaluateExpression(tcExpression)
return evaluate(tcExpression)
endfunc
enddefine
define class UserEffectHandler as EffectHandler
cEffectsDirective = '*:EFFECTS' && the directive that indicates an effect is needed
cEffectName = '' && the effect name to look for (filled in in a subclass)
function GetEffect(toFRX)
local lcEffect, ;
loObject
lcEffect = This.cEffectsDirective + ' ' + This.cEffectName
if atc(lcEffect, toFRX.User) > 0
loObject = createobject('EffectObject')
loObject.oEffectHandler = This
loObject.cExpression = strextract(toFRX.User, lcEffect + ' = ', ;
chr(13), 1, 3)
else
loObject = .NULL.
endif atc(lcEffect, toFRX.User) > 0
return loObject
endfunc
enddefine
define class DynamicForeColorEffect as UserEffectHandler
cEffectName = 'FORECOLOR'
function Execute(toObjProperties, tcExpression)
local lnColor, ;
lnPenRed, ;
lnPenGreen, ;
lnPenBlue
lnColor = This.EvaluateExpression(tcExpression)
if vartype(lnColor) = 'N'
lnPenRed = bitand(lnColor, 0x0000FF)
lnPenGreen = bitrshift(bitand(lnColor, 0x00FF00), 8)
lnPenBlue = bitrshift(bitand(lnColor, 0xFF0000), 16)
with toObjProperties
if .PenRed <> lnPenRed or ;
.PenGreen <> lnPenGreen or ;
.PenBlue <> lnPenBlue
.PenRed = lnPenRed
.PenGreen = lnPenGreen
.PenBlue = lnPenBlue
.Reload = .T.
endif .PenRed <> lnPenRed ...
endwith
endif vartype(lnColor) = 'N'
endfunc
enddefine
define class DynamicStyleEffect as UserEffectHandler
cEffectName = 'STYLE'
function Execute(toObjProperties, tcExpression)
local lnStyle
lnStyle = This.EvaluateExpression(tcExpression)
with toObjProperties
if vartype(lnStyle) = 'N' and .FontStyle <> lnStyle
.FontStyle = lnStyle
.Reload = .T.
endif vartype(lnStyle) = 'N' ...
endwith
endfunc
enddefine
define class AyIsimleriEffect as UserEffectHandler
cEffectName = 'AL_AYADI'
function Execute(toObjProperties, tcExpression)
local lnAy
lnAy = This.EvaluateExpression(tcExpression)
with toObjProperties
if vartype(lnAy) = 'N'
DO CASE
CASE lnAy = 1
.text = "Ocak" + .text
CASE lnAy = 2
.text = "Şubat" + .text
CASE lnAy = 3
.text = "Mart" + .text
CASE lnAy = 4
.text = "Nisan" + .text
CASE lnAy = 5
.text = "Mayıs" + .text
CASE lnAy = 6
.text = "Haziran" + .text
CASE lnAy = 7
.text = "Temmuz" + .text
CASE lnAy = 8
.text = "Ağustos" + .text
CASE lnAy = 9
.text = "Eylül" + .text
CASE lnAy = 10
.text = "Ekim" + .text
CASE lnAy = 11
.text = "Kasım" + .text
CASE lnAy = 12
.text = "Aralık" + .text
OTHERWISE
.text = "??????"
ENDCASE
.Reload = .T.
endif vartype(lnAy) = 'N' ...
endwith
endfunc
enddefine
Yukarıdaki report listener için class
Report içinde detail bölümüne yerleştirdiğin Field'ın properties bölümüne gel, Other sayfasını aç
Edit User Data'ya tıkla ve içine
*:EFFECTS FORECOLOR = iif(recno() = 1,RGB(255,0,0), RGB(0,0,0))
Yaz
recno()=1 sadece örnek orada istediğin değişkene göre farklı şeyler yapabilirsin
Yukarıdaki örnekte AyIsimleriEffect'i ayları yazdırmak için kullanıyorum.
Bence güzel olan raporun her satırında yazdırılacak olan text eline obje olarak ulaşıyor ve istediğin değişikliği yapabiliyorsun.
Biraz raporların ekrana gelmesini yavaşlatıyor ancak kısa raporların süslenmesinde kullanılabilir bence.
cetinbasoz yazdı:Report oldugunu farketmemistim bile. Ben VFP9 reportlarini kullanmadigim icin herhalde hicbir zaman da gormeyecegim.
xfrx'i bir kere denedim, hic begenmedim ve sildim (herkesi memnun edemiyorlar:)
merak ettim şimdi. vfp report'u kullanmıyorsun, xfrx kullanmıyorsun. frx2any veya crystal reports mu kullanıyorsun? yoksa daha başka bişey mi? başkaysa ne? report benim için çok önemli. hatta formlardan daha önemli. mevcut vfp formları yeterli oluyor, ama reportlarla ilgili sıkıntılar çok sık oluyor...
VFP report kullaniyorum ama 90 ile listener'i kullanmiyorum. MindsEyeInc.com'dan ME'yi kullaniyorum ek olarak eger xfrx gibi birsey istersem. Ayrica kendi excel/word/html export rutinlerim var (dogrudan frx'ten degil, datadan).
Bu arada ben xfrx ile frx2any'i karistirmis olabilirim emin degilim.
Bu arada ben xfrx ile frx2any'i karistirmis olabilirim emin degilim.
bence frx2any dir. onu ben de pek beğenmedim. xfrx word, excel, open office, pdf, html vs. vs.. hepsine report'u aynen gönderiyor. yalnız excel'e report'u aynen göndericem derken hücreleri bir tuhaf yapıyor.
preview'i çok güzel. arama filan yapabiliyorsun. solda bir pageframe oluyor, ordan istdeğin başlıklara tıklıyorsun report'un o kısmına gidiyor. full türkçe desteği var.
360" rotate desteği var.
bir de benim isteğimle bir özellik eklediler. reportta herhangi bir field veya label a tıklayınca istediğin foxpro komutu çalışıyor.
version 10'dan itibaren script eklediler. tamamen kodla output oluşturuyorsun. outputları bir dosyaya kaydedip daha sonra da preview edebiliyorsun.
yalnız her yeni versiyonda yeni buglar çıkıyor. sadece ben en az 10 bug düzelttirdim. bu çok şaşırtıcı geldi bana. full source kod dahil olduğu için kendi keşfedebildiğim bugları onların düzeltmesini beklemiyorum. martin haluza ve martin jindra gerçekten ellerinden gelen yardımı yapıyorlar.
minds eye nin de report unu inceledim. bence xfrx e göre çok zayıf. ha belki ben xfrx i aldıktan sonra geliştirmişlerdir onu bilemem.
peki report listeneri neden kullanmıyorsun? çok merak ettim...
Report listener'i sadece ilk ciktigi zamalar (SP1 oncesi) denedim. Daha ilk denememde (ne yazikki mevcut 8000+ sayfalik gercek bir raporumla oldu ilk deneme) once hersey asiri yavasladi, mouse bile zor hareket ediyordu. Dakikalar sonra da iyice sacmalayip atti beni. Makineyi komple resetledim. Sonradan isin aslini ogrendim. Akillilar sayfa basina yapacaklarina once tum sayfalarin memoryde GDI+ goruntulerini hazirliyorlarmis. Tabii GDI+ handle sayisi maximum 10000 oldugundan 10000+ sayfalik raporlari hic isleme sansi bile yok (performans kismini sineye ceksende). Tabii o kadar sayfalik raporu kim kullanir gibi yaklasimlar bana uymuyor cunku benim kullanicilarim kullaniyor:) Bazen basmasalar bile kullaniyorlar, grid karsiliklari olsa da, napayim.
Eski reportun en sevdigim yani o raporlari bile hemen getirip gerekirse diger sayfalari hazirlayip gostermesiydi.
Bencede listener kullanmanın en mantıklı yolu kısa raporlar, Fatura irsaliye vs. gibi 1-2 sayfalık raporlar. Ben bazı uzun raporlarda kullanmayı denedim ama sonrada ne gerek var deyip kaldırdım.
fox4um » Raporlar ve Etiketler » dikey yazı