Put VCL Forms Application in the File|New menu Icons and things are stored in C:\Program Files (x86)\Common Files\Borland Shared\Images To create standalone apps: Project|Options|Linker|Linking| uncheck the Use Dynamic RTL box Project|Options|Packages| uncheck Build with Runtime Packages Project|Options|Optimizations| optimize for fastest possible code To make things look nice: Form->Position->DesktopCenter Form->Scaled->False Form->maximum size = 1028 by 768 Project|Options|Application|Application Name gives the program a title in the task bar To use LMD components project|add to project| C:\LMD70SE\LIB\D10\lmd70se_d10.lib To save on space in the programming folder, do an occasional search for "history" "thumbs" ".tds" and "debug" If you want to be able to use replace with wildcards, import to Word first Double Click on a color's name to define a new custom color You can create new colors like so: #define clTan (TColor) 0x00388DC7 //0xPPBBGGRR PP == 0: system palette In a class, use: "const static int num = 5;" to make a private constant number. For object which you can click on that have multiple settings, like a combobox or a set of radio buttons, double click on the object and then the code you enter here will be activated every time the item's setting is changed. In Borland, SHIFT+arrows resize something, while CTRL+arrows moves them Globally define things and #include in the .h, also write a form destructor to kill dynamic global stuff Project|Build will occassionally lower the file size of the executable if you haven't done it in awhile Use ShowMessage("Hey!"); for debug stuff. That way you don't need to waste time adding extra labels to the form and stuff FocusControl(Form Object); will bring the focus to that object. if a button's name starts with an &, then the first letter will be underlined and you can press ALT+"that letter" to click the button. if you want the user to be able to copy/paste something, use a Memo, and set it to read-only. Memo1->Lines->SetText( String().c_str ); String().FormatFloat("0.000E+",num) is a good way to format numbers for output Use getline(source, destination) to pull entire sentences from input in a console app and store them in a string. Don't forget about and, or, and not (&&, ||, !) Remember that srand((unsigned)time(NULL)); should only be called once in the program. Use a simple if test with a static variable. Use cerr to print unbuffered messages (good for debugging, because you still get to see them if the program crashes before buffer is printed) The .tds file is not essential, neither are any with a ~ in them or the .obj. These can all be safely removed. To append Label1->Caption, say Label1->Caption = Label1->Caption + "new stuff"; A carriage return is "\r\n" test this to see if you can print a carraige return on a Panel To create another form that is controlled by your main one, File>new form. Rename the form to whatever you want, and then go to File|Include Unit Hdr Select your new form.cpp and click okay. To edit the forms, you will have to use File>open, but they will always be compiled with the program. File|Include Unit Hdr just adds #include "UnitName.h" to the form. You can have multiple files controlling things in multiple other files by simply adding #include "UnitName.h" to each A Try/Catch statement will disregard errors. To use it, uncheck Tools>Debugger Options>Integrated Debugger. I suggest something like: try { //Something which can give an error } catch(...) { //what to do if you get an error, perhaps: ShowMessage("Input = No Good!"); return; } Look in Borland/Examples for cool stuff (esp in Apps) To clear the screen of stuff you'd drawn on the canvas, just create a box the same color as the background and the same size as the main form (use the form's properties, not a number) When you press a button and a bunch of stuff happens in your program as a result, often the button's cursor takes over the whole form. If you want to -say, have the cursor change to an hourglass- then you need to change the button's cursor, not the form's. To create functions that can use variables from objects, click on the form (not the project... the FORM!!!) in the window on the left side of the code editor,then go to Add Method It's kind of cool to add version info to your programs in PROJECT>OPTIONS>APPLICATION (unsigned long double) is the most precise way to store data. Unsigned integers are one bit longer. So if you need to store a long number, save the sign as a boolean, and then store the number in an unsigned variable. sizeof... (long double) = 10 (double) = 8 (__int64) or (INT64) = 8; unsigned __int64, UINT64 (int) = 4 (long int) = 4 You can solve integrals with the Monte Carlo method: generate a whole bunch of random points. tally the quantity of points <= the function at the random value for x. Then, divide that number by the total number of random points, and multiply by the test area to get the integral of that function. Use Project|Options|CodeGuard during design to catch memory leaks from dynamic allocation. But turn it off when you're done designing because it really slows things down. The biggest an integer can get is 2147483647, or around 2e9 use //fixme and //! in the code to remind yourself of where things will be needing attention later things that are "static" are also "private" to the files they are declared in The following bit of code will show PEBKAC if num2 == 0, or give the specific error otherwise double num1, num2, num3; String error; try { num1 = Edit1->Text.ToDouble(); num2 = Edit2->Text.ToDouble(); if(num1 == 1) throw error = "num1 equals 1"; if(num2 == 1) throw error= "num2 equals 1"; error = "PEBKAC!"; //this will be the error if num2 == 0 num3 = num1/num2; } catch(...) { ShowMessage(error); } To bring an old project up to date: create a new project. remove the form component from the project (Project|Remove from Project). Then, add the old form component (and rename the TForm1 in the default header to match if there's a problem compiling). Then go to Save As and save it as "title"_MainForm. Then Save Project As "Project_Name" (this will also be the name of the Executable). Don't forget to copy all of the custom headers and other forms into the new directory, as well as all of your custom images and icons.