home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 31 / CDASC_31_1996_juillet_aout.iso / vrac / del2faq.zip / ALLFAQ.ZIP / DELSEC04.FAQ < prev    next >
Text File  |  1996-02-07  |  12KB  |  251 lines

  1. Delphi Integrated Development Environment (IDE) Frequently  Asked  Questions (F A Q: 
  2. Last Updated - March 16, 1995
  3.  
  4.  
  5. 1 Q: Where cabn I get more Delphi Information?
  6. 1 A: Now available on the "From Borland" download library are the 
  7.      following Delphi informational files:
  8.      DELBKS.TXT   -=> Delphi BookList
  9.      DEL_FS.ZIP     -=> Delphi Fact Sheet
  10.      DEL_ QI.ZIP      -=> Delphi  Quick Info Sheet
  11.  
  12. 2 Q:  How do you make Button controls align themselves to the
  13.       bottom of a window when the window/dialog is resized?
  14. 2 A:  Create a TPanel, set alignment to bottom, and place your
  15.       button on the panel. If you don't want the panel visible,
  16.       turn off ctl3d, set bevels to none and parentcolor = true.
  17.  
  18. 3 Q:  How to I add a "Help Break" to a main menu so that it is
  19.       aligned on the right edge?
  20. 3 A:  You can't do it at design time.  At run time, add the
  21.       following to your form's OnCreate handler:
  22.               Help1.Caption := #8 + Help1.Caption;
  23.       Note: This is discouraged by Microsoft's latest design
  24.           guidelines, and doesn't work at all under Windows 95.
  25.  
  26. 4 Q:  What can I read/buy to learn about the hidden "methods"?
  27. 4 A:  The Component Writer's Help goes into deeper detail, or Buy
  28.       the VCL source code and look at it directly.
  29.  
  30. 5 Q:  How do I do decimal alignment all right justified?
  31.         0.50
  32.        10.55
  33.       245.98
  34. 5 A: For TEdit objects, make them multi-line edits and set style
  35.      to es_Right. For TDBEdits, you can add the fields to your form,
  36.      and set the  Alignment and DisplayFormat properties.
  37.  
  38. 6 Q: How do I set Tab Order?
  39. 6 A: Click on the form holding the controls, then choose 
  40.      Edit | Tab Order.
  41.  
  42. 7 Q: How do I make Windows recognize a program written in VB as a 
  43.      screen saver?
  44. 7 A: 1) Put this line in the Project Source:
  45.         {$D SCRNS AVE:NameOfScreenSaver}
  46.    2) Compile the project
  47.    3) Rename the .EXE to .SCR and put it in the Windows directory
  48.       To make it  ACT as a screen saver and respond to OnClick and 
  49.       OnKeyUp by calling Close. Respond to OnMouseMove by checking
  50.       if this is the FIRST OnMouseMove and, if not, calling Close.
  51.            CONST FirstTime : Boolean = True;
  52.               begin
  53.                IF NOT FirstTime THEN Close;
  54.  
  55. 8 Q: How do I handle a Stream Read Error?
  56. 8 A: Try deleting the *.DSM file, and re-compiling your project.
  57.  
  58. 9 Q: Is there any way to create global variables in Delphi?  
  59. 9 A: Open up a new unit and declare the global structures in the
  60.      interface portion of that unit (the implementation portion
  61.      can be empty).  Add the name of that unit to the USES list of
  62.      any other units from which you want to access the globals.
  63.  
  64. 10 Q: Why does closing the unit (pas) window also close the form?
  65. 10 A: Because Delphi has to be able to manipulate the code when you
  66.       work with the dialog. It is constantly watching what you do
  67.       and alters the code to reflect the changes to the form.
  68.  
  69. 11 Q: When I compile code that calls the WinPrn unit, Delphi says it
  70.       can't find WinPrn.DCU.
  71. 11 A:  Add \DELPHI\SOURCE\RTL70 to your application's Search Path.
  72.  
  73. 12 Q: How do you center a form on the screen?
  74. 12 A: Use the div, operator not the / operator:
  75.       MyLeft := (Screen.Left - Form1.Left) div 2;
  76.       Or You can also set the Position property of
  77.       the form to poScreenCenter.
  78.  
  79. 13 Q: If I compile my BP7 project in Delphi, will I be able to 
  80.       use Delphi's integrated debugger with it? If so, how do I
  81.       tell Delphi what my "Primary File" is? Since I don't have
  82.       any forms?
  83. 13 A: Yes, you can use the integrated debugger. The primary file
  84.       is the *.P AS file that you opened as a project.  You have to 
  85.       select Open Project and change the file type from *.DPR to
  86.       *.P AS and then select the BP7 program you want to compile.
  87.  
  88. 14 Q: As I add items (listBoxName.items.add('xxx')), how can I
  89.       show the newest item?  When there are more items than show,
  90.       and the scrollbar appears, the new items are added below 
  91.       what is visible on the screen.  I would like to have the 
  92.       list 'move up' so that the latest item is visible.
  93. 14 A: Try setting:
  94.       listBoxName.items.add('xxx')
  95.       listBoxName.itemIndex := (listBoxName.items.count-1)
  96.  
  97. 15 Q: Is there a property to align the text in the listBox
  98.       to the right?
  99. 15 A: No. Try padding the string with spaces.
  100.  
  101. 16 Q: What does the debugger message "Debugger Is Unable To Stop 
  102.       Due To 'Hard Mode'" mean?
  103. 16 A: DEFINITION:Hard mode is a state of Windows when no message
  104.       processing can take place. It happens during menu drawing 
  105.       and some kernel operations.  It means that you are in a 
  106.       state that Delphi can not "freeze" your application without 
  107.       locking up Windows. Typically, that arises as a result of 
  108.       multiple SendMessage calls. In addition a workaround which 
  109.       often works: What you need to do is kick the system out of 
  110.       hard mode. Interestingly enough, this can happen when the
  111.       debugger puts up the system modal messagebox to tell you it's 
  112.       in hard mode! So try putting an additional breakpoint on the
  113.       line *before* your breakpoint. This first one will cause the 
  114.       hard mode warning and should kick Windows out of hard mode. 
  115.       When you OK that messagebox the second, desired, breakpoint
  116.       should work.
  117.       NOTE: Since the debugger is message driven, it cannot 
  118.              allow you to stop at a breakpoint if it thinks 
  119.              the system is in hard mode, because you wouldn't
  120.              be able to do anything and the system would appear
  121.              to be hung.
  122.  
  123. 17 Q: Is it possible to load a BP program (either as a project or 
  124.       as a program) in the IDE and have it compiled?
  125. 17 A: Yes, it is possible, but let me qualify that.  More precisely,
  126.       a BPW program can be loaded into Delphi. Select Open Project
  127.       from the menu or speedbar, and then in the filter combo box 
  128.       select *.P AS files.  This will allow you to load BPW *.P AS 
  129.       programs. You'll need to add \DELPHI\SOURCE\RTL70 to your 
  130.       project's search path.
  131.  
  132. 18 Q: Why are simple EXE's so large(1 form and 1 button about 200K)?
  133. 18 A: Delphi's VCL is based on RTTI and exceptions. This requires a 
  134.       'footprint' of about 120Kb for an 'empty' application. The 
  135.       200K you get has additional debug info or is not optimised by 
  136.       the compiler. Note that the size of your .EXE doesn't go to 
  137.       400K for two buttons, but rather to 201K, i.e. after the
  138.       footprint each additional control just adds the 'usual' amount
  139.       of data/code size.   Additionally, you can slim your EXE's down
  140.       by checking the "Optimize For Size  And Load Time" checkbox on
  141.       the Linker page of the OPTIONS|PROJECT dialog.  
  142.  
  143. 19 Q: Can I use a second monitor to watch the BP program output?
  144. 19 A: In order to use two monitors one must be an MD A monitor
  145.       (the old Hercules monochrome style) and the other VG A 
  146.       (or EG A etc.).  They must use two address spaces $B000 for the 
  147.       MD A and $B800 for the VG A.  Once you have these monitors 
  148.       installed you can tell the BP IDE to use the second monitor in
  149.       Options/Environment/StartUp.  The default monitor at starting 
  150.       up the BP IDE will become the program's output display. 
  151.        NOTE: once the Hercules card is installed, your VG A card
  152.              will be accessed as an 8 bit card.
  153.                     NOT  APPLIC ABLE TO DELPHI 
  154.  
  155. 20 Q: How does a speedbutton on a frame trigger a save event in the 
  156.       active child MDI Sheet?  A call to TEditForm.Save1click does 
  157.       not work.
  158. 20 A: Try:
  159.       with  Application.MainForm. ActiveMDIChild as TEditForm do
  160.       Save1Click(Sender);
  161.       Or Try:
  162.       if  ActiveMDIChild is TEditForm do
  163.         TEditForm( ActiveMDIChild).Save1Click(Sender);
  164.  
  165. 21 Q: Why in a comboboxcomponent if the 'Style'-property is set to
  166.       'csDropDownList' does the following do nothing?
  167.       combobox1.text := 'Something strange going on here!';
  168. 21 A: That's standard behavior of the windows combobox working as 
  169.       DropDownList. The concept is that the shown text has to be 
  170.       exactly the same as one of the elements of the list. The right
  171.       way to execute this code is to choose the appropiate element 
  172.       from the list:
  173.        combobox1.ItemIndex:=0;
  174.  {assuming combobox1.Item[0] = 'Something strange going on here!'}
  175.  
  176. 22 Q: The edit controls automatically respond to CTRL-C, CTRL-X, 
  177.       CTRL-Y, CTRL-Z for copy, cut, paste and undo. How do I display
  178.       these options on the menubar and have them to the appropriate 
  179.       places?
  180. 22 A: Try these event handlers:
  181.       procedure 
  182.       TStaffSearch.SpeedButtonCutToClipBoardClick(Sender: TObject); 
  183.        begin if ((  ActiveControl ) is TCustomEdit ) then
  184.          TEdit( ActiveControl).CutToClipBoard; end;
  185.       procedure TStaffSearch.Delete1Click(Sender: TObject);
  186.        begin if ((  ActiveControl ) is TCustomEdit ) then
  187.          TEdit( ActiveControl).ClearSelection; end;
  188.      In both cases you must determine which control is active and 
  189.      call its appropriate method.  All of the controls that allow 
  190.      editing of data descend from TCustomEdit. The above code 
  191.      determines if the active control descends from TCustomEdit 
  192.      and if it does calls the the desired method.
  193.  
  194. 23 Q: What does the Object Inspector Display?
  195. 23 A: The Object Inspector displays all published properties 
  196.       (that can be read and written and aren't array properties) of 
  197.       a class.  The Object Inspector doesn't display the methods of
  198.       a class.
  199.  
  200. 24 Q: What is the difference between "SetKey / GoToKey" and 
  201.       "FindKey"? What determines when one should be used instead of 
  202.       the other?
  203. 24 A: There really is no difference in the functionality. SetKey + 
  204.       some assignments to IndexFields + GotoKey is equivalent to a 
  205.       simple FindKey. If the IndexFields are extraordinarily complex
  206.       then the SetKey sequence may be simpler to code.
  207.  
  208. 25 Q: Is there any way to determine if a particular button on a 
  209.       TDBNavigator control is enabled?
  210. 25 A: Try:
  211.          type
  212.            TDBNavCracker = class(TDBnavigator);
  213.           ...
  214.          if TDBNavCracker(DBNavigator1).Buttons[nbEdit].Enabled 
  215.          then...;
  216.  
  217. 26 Q: Can I use older versions of S QL Links use those with the ID API
  218.       that ships with Delphi?
  219. 26 A: No, For old S QL linkers, you can get everything in the 
  220.       Client/Server edition, or you can get Delphi + new S QL Links.  
  221.  
  222. 27 Q: How does Delphi handle run-Time errors?
  223. 27 A: When a run-time error occurs in Delphi an exception is 
  224.       generated. If the appropriate option is set in the Environment
  225.       settings, when an exception occurs while running your app from
  226.       within Delphi, then Delphi will position the cursor on the 
  227.       offending line. However, the program is not terminated. Since,
  228.       an exception was generated, your app. does not exit 
  229.       automatically.
  230.  
  231. 28 Q: How does Delphi store code/forms? 
  232. 28 A: Forms are stored in DFM files (as binary) but if you open a it 
  233.       (FILE|OPEN FILE) in the IDE Editor it opens as text, which you
  234.       can edit directly.
  235.  
  236. 29 Q: Will the TMediaPlayer in Delphi play avi files?
  237. 29 A: Delphi will play avi files with the TMediaPlayer, just set the
  238.       media type, filename to the right values, set the display to a
  239.       TPanel, and use the open method. Playing  AVI files requires an
  240.       up-to-date copy of Video for Windows propertly installed on 
  241.       your system. Once you've done that, though, it's as easy as 
  242.       playing a W AV file. Leave the media player on dt AutoSelect for
  243.       device type, assign FOOB AR. AVI to the filename, and play. The 
  244.       movie will appear in a separate little window.
  245.  
  246. 30 Q: How do you set a field's display to have a 'No Echo' effect
  247.       for Password entry?
  248. 30 A:  All you need to do is specify which character ( * for example)
  249.       you want to display in the Password property of the TEdit.  If
  250.       you don't want to display any character, use a space, #32.
  251.