Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » RichText,QTF,RTF... » page numbering
page numbering [message #5256] Mon, 11 September 2006 16:11 Go to next message
zsolt is currently offline  zsolt
Messages: 693
Registered: December 2005
Location: Budapest, Hungary
Contributor
Is it possible to put page nubers to page?
Re: page numbering [message #5257 is a reply to message #5256] Mon, 11 September 2006 16:39 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
zsolt wrote on Mon, 11 September 2006 10:11

Is it possible to put page nubers to page?


You can in Report. Header/Footer as QTF, $$P as placeholder for the page number.

Mirek
Re: page numbering [message #5258 is a reply to message #5257] Mon, 11 September 2006 17:09 Go to previous messageGo to next message
zsolt is currently offline  zsolt
Messages: 693
Registered: December 2005
Location: Budapest, Hungary
Contributor
This is very cool, thank you.
Re: page numbering [message #5261 is a reply to message #5256] Tue, 12 September 2006 01:09 Go to previous messageGo to next message
zsolt is currently offline  zsolt
Messages: 693
Registered: December 2005
Location: Budapest, Hungary
Contributor
When using Report::Header(), the stylesheet data is shown also. This is because a bug in Report::FormatHF() method.

The original one was:
String  Report::FormatHF(const char *s, int pageno)
{
	String result;
	while(*s) {
		if(s[0] == '$' && s[1] == '$') {
			if(s[2] == 'P')
				result.Cat(Format("%d", pageno + 1));
			if(s[2] == 'D')
				result.Cat(Format(GetSysDate()));
			s += 3;
		}
		result.Cat(*s++);
	}
	return result;
}


And the fixed one is:
String  Report::FormatHF(const char *s, int pageno)
{
	String result;
	while(*s) {
		if(s[0] == '$' && s[1] == '$') {
			if(s[2] == 'P'){
				result.Cat(Format("%d", pageno + 1));
				s += 3;
			}
			if(s[2] == 'D'){
				result.Cat(Format(GetSysDate()));
				s += 3;
			}
		}
		result.Cat(*s++);
	}
	return result;
}

BTW, this code is very tricky Smile First I thought, this can generate a segfault. I'm learning every time when reading your code Smile
Re: page numbering [message #5270 is a reply to message #5261] Tue, 12 September 2006 10:52 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
String  Report::FormatHF(const char *s, int pageno)
{
	String result;
	while(*s) {
		if(s[0] == '$' && s[1] == '$') {
			s += 2;
			if(*s == 'P') {
				result.Cat(Format("%d", pageno + 1));
				s++;
			}
			else
			if(*s == 'D') {
				result.Cat(Format(GetSysDate()));
				s++;
			}
		}
		else
			result.Cat(*s++);
	}
	return result;
}



OK?

Mirek
Re: page numbering [message #5274 is a reply to message #5270] Tue, 12 September 2006 11:24 Go to previous messageGo to next message
zsolt is currently offline  zsolt
Messages: 693
Registered: December 2005
Location: Budapest, Hungary
Contributor
No, because this filters "$$"s from stylesheet out. My version works well.
Re: page numbering [message #5275 is a reply to message #5274] Tue, 12 September 2006 11:29 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Ooops, sorry. But at least, I would insert "else" between two variants ("$$PD"):

String  Report::FormatHF(const char *s, int pageno)
{
	String result;
	while(*s) {
		if(s[0] == '$' && s[1] == '$') {
			if(s[2] == 'P'){
				result.Cat(Format("%d", pageno + 1));
				s += 3;
			}
                  else
			if(s[2] == 'D'){
				result.Cat(Format(GetSysDate()));
				s += 3;
			}
		}
		result.Cat(*s++);
	}
	return result;
}
Re: page numbering [message #5276 is a reply to message #5275] Tue, 12 September 2006 11:34 Go to previous messageGo to next message
zsolt is currently offline  zsolt
Messages: 693
Registered: December 2005
Location: Budapest, Hungary
Contributor
luzr wrote on Tue, 12 September 2006 11:29

Ooops, sorry. But at least, I would insert "else" between two variants ("$$PD"):

String  Report::FormatHF(const char *s, int pageno)
{
	String result;
	while(*s) {
		if(s[0] == '$' && s[1] == '$') {
			if(s[2] == 'P'){
				result.Cat(Format("%d", pageno + 1));
				s += 3;
			}
                  else
			if(s[2] == 'D'){
				result.Cat(Format(GetSysDate()));
				s += 3;
			}
		}
		result.Cat(*s++);
	}
	return result;
}


Yes, good idea. I wanted to pu that else also, but you were faster Smile
Re: page numbering [message #5277 is a reply to message #5275] Tue, 12 September 2006 11:36 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
I meant "$$PabD".
Re: page numbering [message #5278 is a reply to message #5277] Tue, 12 September 2006 11:42 Go to previous messageGo to next message
zsolt is currently offline  zsolt
Messages: 693
Registered: December 2005
Location: Budapest, Hungary
Contributor
luzr wrote on Tue, 12 September 2006 11:36

I meant "$$PabD".


"a" and "b"? For what kind of data?
Re: page numbering [message #5279 is a reply to message #5278] Tue, 12 September 2006 11:48 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Well, maybe I am wrong, I was never good at these fragile little algorithms, but I think that as there was s+=3 without else, the code would react to the 'D' and "ab" would be skipped.

Mirek
Re: page numbering [message #5280 is a reply to message #5279] Tue, 12 September 2006 11:58 Go to previous message
zsolt is currently offline  zsolt
Messages: 693
Registered: December 2005
Location: Budapest, Hungary
Contributor
Yes, you are right. Sorry for my misunderstanding.
Previous Topic: How to insert and display *.png file in UWord and/or qtf??
Next Topic: report / qtf to pdf saving
Goto Forum:
  


Current Time: Thu Mar 28 10:09:08 CET 2024

Total time taken to generate the page: 0.01567 seconds