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 » Developing U++ » UppHub » Ole Automation [FEATURE REQUEST?]
Re: Ole Automation [FEATURE REQUEST?] [message #21163 is a reply to message #21159] Wed, 06 May 2009 09:52 Go to previous messageGo to previous message
tojocky is currently offline  tojocky
Messages: 607
Registered: April 2008
Location: UK
Contributor

Hello Koldo!

I added new methods
for classes OfficeSheet and MSSheet:
	// >>>Ion Lupascu 06.05.2009 Add this methods
	int GetSheetsCount();
	bool SetActiveSheet(int index);
	bool SetActiveSheet(String name);
	bool SetSheetName(String new_name);
	// <<<Ion Lupascu 06.05.2009


Details for MSSheet:
// >>> Ion Lupascu 06.05.2009 Add this methods
int MSSheet::GetSheetsCount(){
	if (!Book)
		return(-1);
	
	return((int)Ole::GetValue(Ole::GetObject(Book, "Sheets"), "Count"));
}

// Set active sheet start with 0(zero)
bool MSSheet::SetActiveSheet(int index){
	if(!Book)
		return false;
	
	VariantOle index_ole;
	index_ole.Int4(index + 1);
	
	if (!(Sheet = Ole::GetObject(Book, "Sheets", index_ole)))
		return false;

	return true;
}

// Set active sheet by name
bool MSSheet::SetActiveSheet(String name){
	if(!Book)
		return false;
	
	VariantOle name_ole;
	name_ole.BString(name);
	
	if (!(Sheet = Ole::GetObject(Book, "Sheets", name_ole)))
		return false;

	return true;
}

bool MSSheet::SetSheetName(String new_name){
	if(!Sheet)
		return false;
	
	VariantOle new_name_ole;
	new_name_ole.BString(new_name);
	
	return Ole::SetValue(Sheet, "Name", new_name_ole);
}
// <<< Ion Lupascu 06.05.2009


Details for OfficeSheet:
// >>> Ion Lupascu 06.05.2009 Add this methods
int OfficeSheet::GetSheetsCount(){
	if (!data)
		return -1;
	if (type == SheetOPEN)
		return -1; //... need to add ((OPENSheet*)data)->GetSheetsCount();
	else if (type == SheetMS)
		return ((MSSheet*)data)->GetSheetsCount();
	else
		return -1;
}

// Set active sheet start with 0(zero)
bool OfficeSheet::SetActiveSheet(int index){
	if (!data)
		return false;
	if (type == SheetOPEN)
		return false; //... need to add ((OPENSheet*)data)->SetActiveSheet(index);
	else if (type == SheetMS)
		return ((MSSheet*)data)->SetActiveSheet(index);
	else
		return false;
}

// Set active sheet by name
bool OfficeSheet::SetActiveSheet(String name){
	if (!data)
		return false;
	if (type == SheetOPEN)
		return false; //... need to add ((OPENSheet*)data)->SetActiveSheet(name);
	else if (type == SheetMS)
		return ((MSSheet*)data)->SetActiveSheet(name);
	else
		return false;
}

bool OfficeSheet::SetSheetName(String new_name){
	if (!data)
		return false;
	if (type == SheetOPEN)
		return false; //... need to add ((OPENSheet*)data)->SetActiveSheet(name);
	else if (type == SheetMS)
		return ((MSSheet*)data)->SetSheetName(new_name);
	else
		return false;
}
// <<< Ion Lupascu 06.05.2009


I do not added this method for Open office. Please check this and add methods for Open calc too. Maybe exists memory leak in method:
// Set active sheet by name
bool MSSheet::SetActiveSheet(String name){
	if(!Book)
		return false;
	
	VariantOle name_ole;
	name_ole.BString(name);
	
>>HERE  if (!(Sheet = Ole::GetObject(Book, "Sheets", name_ole)))
		return false;

	return true;
}


I tested this new methods and works fine!

Thank you for changes with MSC8 and gdi32.lib
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: MAPIEx works with MinGW
Next Topic: [Controls4U] IE shows script errors
Goto Forum:
  


Current Time: Tue May 14 23:38:14 CEST 2024

Total time taken to generate the page: 0.02226 seconds