|
Thanks Justin,
When looking for the performance, your suggestion would serve better.
I will have to make a trade-off which way best suits for my Application.
Anyway, Thank you once again for your valuable suggestion.
Regards,
Subrahmanyam K
|
|
|
|
|
|
Hi,
I am trying to print a crytal report using my application programaticaly. I want the user to select the printer and number of copies etc from the print dialog box.
please tell me a way to do this i tried with the following method Where i am giving the Num of pages in the coding and the defualt printer prints the report.
But that is not how i want.
Here is my coding
RepStockSalesCatByLoc repstkslscat = new RepStockSalesCatByLoc();
repstkslscat.SetDataSource(dsreportDiv);
repstkslscat.PrintToPrinter(1, false, 1, 2);
Regards
Ruwandi
rkherath
|
|
|
|
|
Try using ReportViewier to print and use
ReportDocument rptDoc = new ReportDocument();
rptDoc.Load(Server.MapPath("ReportName.rpt"));
rptDoc.SetDataSource(yourDataSet);
CrystalReportViewer1.ReportSource = rptDoc;
the ReportViewer has a print button option, set it to true
CrystalReportViewer1.ShowPrintButton = true;
This usually selects all the printers added on that machine
i hope this helps
|
|
|
|
|
Hi,
Thax, but i have to print 112 reports at once using a foreach. This report is a stock and sales for 112 outlets of a supermarket. user wanna print all the reports at once. but he need to select the printer.
any idea!
regards
Ruwandi
rkherath
|
|
|
|
|
There is a property, PrinterName or some such, that you can set the printer name to.
|
|
|
|
|
I am writing a C# console program that needs to read a file from the same directory as the application. I can't use the current directory as that is not the same as the application directory.
Normally I would use Application.ExecutablePath, but console apps don't derive from Application.
Ideas?
|
|
|
|
|
The current directory is NOT the application directory.
If I open a command prompt, change to C:\Windows and run the application C:\MyProg.exe your example will not work. The file 1.log is in C:\, but the current directory is C:\Windows so I will get a file not found exception.
|
|
|
|
|
try this.
static void Main(string[] args)
{
string loc = Assembly.GetCallingAssembly().Location;
string path = Path.GetDirectoryName(loc);
Console.WriteLine(path);
string[] bla = File.ReadAllLines(path + "\\1.log");
foreach (string var in bla)
{
Console.WriteLine(var);
}
}
|
|
|
|
|
System.Reflection.Assembly execAsm = System.Reflection.Assembly.GetExecutingAssembly();
string asmPath = execAsm.CodeBase.Replace("file:///", "").Replace('/', '\\');
MessageBox.Show(asmPath);
|
|
|
|
|
I'd just got to that point, but I'm using :
System.Reflection.Assembly.GetExecutingAssembly().Location
Thanks.
|
|
|
|
|
Application.ExecutablePath works anyway, try it before you discard it.
"We learn more from our mistakes than we do from getting it right the first time."
|
|
|
|
|
That's easy, just use AppDomain.CurrentDomain.BaseDirectory to get the running directory and add to it your console application name and you have a path just like Application.ExecutablePath.
http://stefanprodan.wordpress.com
|
|
|
|
|
Application.ExecutablePath or Environment.CurrentDirectory for your need
Hope this helps...
|
|
|
|
|
hi
i am trying to chage the text of a label,
but the thing is that its not fast
i am setting the text before some function calls but the text is changed after all the functions.
Do you know any effective method to quickly change the text of a label
My small attempt...
|
|
|
|
|
Can you post the code snippet? Also run the application in debug mode to see what happens
|
|
|
|
|
like
label1.Text = " method1";
method1();
label1.Text = "method2";
method2();
label1.Text = "method3";
method3();
this will disply method3 after all function call we will not get the other text
i maen no refreshing
My small attempt...
|
|
|
|
|
This because it executes method1() and method2() quickly and you can't see the change. Write something like this
label1.Text = " method1";
System.Threading.Thread.Sleep(5000);
method1();
label1.Text = "method2";
System.Threading.Thread.Sleep(5000);
method2();
label1.Text = "method3";
method3();
and you will see the process
|
|
|
|
|
You can check you sample it will not work,i mean will not give the textchange
i had tried this earlier...
actually the thing is that my methods itself taking more time to execute.
You know anyother methods
My small attempt...
|
|
|
|
|
Search for the Asynchronous processing that will help you
Thanks and Regards
Sandeep
If you want something you never had,
do something you have never done!
|
|
|
|
|
Can you just expalin, what you mean by that?
My small attempt...
|
|
|
|
|
That won't work, it will just delay the code.
You need to tell Windows to redraw the label with :
label1.Text = " method1";
label1.Refresh();
method1();
label1.Text = "method2";
label1.Refresh();
method2();
label1.Text = "method3";
label1.Refresh();
method3()
From the help for Control.Refresh:
Forces the control to invalidate its client area and immediately redraw itself and any child controls.
|
|
|
|
|
This won't fix the problem. Sleeping the UI for 5 seconds, after each update of a label, will only hang his app unnecessarily. Application.DoEvents() is what is needed in his situation.
Dave Kreskowiak
Microsoft MVP
Visual Developer - Visual Basic 2006, 2007
|
|
|
|
|
I think this cannot work. Setting the label text generates under water a message to the control. The label control then must update itself. If you change the label text three times inside the same method, you do not give control back to the message loop. So the message loop starts updating only after the third change and you will not notice the change.
I'm not sure how to solve this. It may be a design error. Maybe you can solve this using an owner drawn label or by using timers.
|
|
|
|
|
i got it.........
we can use doevents for repainting the form.......
thanks to all
My small attempt...
|
|
|
|