Borland®
Shop
Products Downloads Services Support Partners News & Events Company Community
Delphi
Documentation
Support

Additional Resources
Technology Partners
Books
Community

 DELPHI DEVELOPER SUPPORT

Delphi 4 fixes and known issues
VCL SECTION

Areas of concentration under: vcl


Area: vcl\additional controls

Reference Number: 79 (Published: 11/6/98)
Status: Deferred to Next Rel
Date Reported: 4/7/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

When calling BeginDrag for a speedbutton inside ot 
the Mousedown event, the speed button is never 
repainted after it has been painted as pressed.  
When you drag off of the speed button the drag 
operation works correctly but the speedbutton stays 
depressed and never returns to the up position. 

Steps:

1) Put a speedbutton onto a form.
2) Double click on the OnMouseDown  event.
3) Put in the following line of code for the event.
                 SpeedButton1- > BeginDrag(true);
4) Run the program and drag the SpeedButton and 
then release it.
5) The drag works properly but the SpeedButton 
says depressed.

Area: vcl\additional controls\tbitbtn

Reference Number: 559 (Published: 11/13/98)
Status: Deferred to Next Rel
Date Reported: 5/23/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Button pressed drawing is incorrect.

Steps:

The background of the arrow of the IDE should 
look like the tools on the palette. Instead it looks 
like it is offset by a few pixals making it look way too 
black.

Area: vcl\additional controls\tchecklistbox

Reference Number: 277 (Published: 11/11/98)
Status: Deferred to Next Rel
Date Reported: 1/7/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

Check mark of TCheckListBox do not save when 
use Items- > Exchange method.

Steps:

1.Put on TCheckListBox.
2.Add some items.
3.Execute.
4.Check On some items.
5.Do CheckListBox1- > Items- > Exchange(0,1);

Area: vcl\additional controls\tcontrolbar

Reference Number: 788 (Published: 8/4/98)
Status: Fixed in Version 4 Update Pack 1
Date Reported: 6/17/98
Severity: Serious
Type: Crash

Problem:

Deleting second button on TToolBar gives an AV:

Access violation at address:  77F6CC66 in module 
'ntdll.dll'.  Write of address 00000010.

Occures on Win98 beta 3 and NT4.0 server sp3.  
Delphi RC3

Area: vcl\additional controls\tcontrolbar

Reference Number: 551 (Published: 11/13/98)
Status: Deferred to Next Rel
Date Reported: 5/22/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

TControlBar doesn't resize any of its controls when 
you scale a form.

Steps:

* Drop a TControlBar on a form
* Drop a TButton and a TCheckBox in the 
controlbar
* Right click, select Scale
* Enter 50, click OK
// Note that the button and checkbox have the 
same size

Area: vcl\additional controls\tcontrolbar

Reference Number: 954 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/14/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Control placed in controlbar loses dragging 
capability after dragging outside of controlbar area

Steps:

1. Create a new project. Place a TControlBar on the 
form.
2.  Place a control (any control will do, I've used a 
TPanel) on the TControlBar object. Leave the 
DragKind property of the new control as the default 
value of ckDrag). 
3. Run the project. Start dragging the control (the 
panel) using the grip. You will be able to move it 
around the TControlBar, as if the DragKind property 
was set to ckDock. 
4.  Try dragging it outside the boundaries of the 
TControlBar. The cursor would change to the 
non-draggable cursor, and you won't be able to 
drag the panel anymore.

Area: vcl\additional controls\tcontrolbar

Reference Number: 979 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/16/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Dragging windowed controls outside a TControlBar, 
then aborting the drag put the controlBar in a 
strange "frozen" state.

Area: vcl\additional controls\tcontrolbar

Reference Number: 1151 (Published: 10/22/98)
Status: Deferred to Next Rel
Date Reported: 8/20/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

With AutoDrag = False you can't undock controls 
by double clicking the nibs on the control bands, 
which is the default behavior when AutoDrag = 
True. 

One bad side effect is if a form is docked to a 
ControlBar with AutoDrag = False you can't undock 
it at all.

Area: vcl\additional controls\tcontrolbar

Reference Number: 431 (Published: 12/10/98)
Status: Deferred to Next Rel
Date Reported: 4/14/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

When moving a ControlBar's bands (?), if you move 
off the control bar there is a brief flicker showing the 
entire image of the control bar.

Area: vcl\additional controls\tcontrolbar

Reference Number: 1532 (Published: 12/18/98)
Status: Deferred to Next Rel
Date Reported: 10/8/98
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

Docking fails when docked control dragged over 
Delphi's IDE windows. This happens even when 
the application is not being run in the IDE. This is in 
all versions of D4 (including Update 2 FT).

Steps:

Create a new application. Place a TControlBar on 
the new form, and a panel on the TControlBar. Set 
the panel's DragKind property to dkDock. Compile 
the program and run it. You don't have to run it from 
the IDE, but make sure Delphi is open.
Drag the panel out of the TControlBar, and leave it 
as a floating window. Now start dragging this 
floating window over the IDE main form (for 
example, over the component palette), and leave it 
there. Move the mouse away from the window (no 
buttons are pushed now). The floating window 
frame will move with the mouse, ignoring the fact 
you have dropped the window.

Area: vcl\additional controls\tmaskedit

Reference Number: 1491 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 10/2/98
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

The FormatMaskText function does not work 
properly. The only thing this function seems to do is 
chop off characters if you've entered too many 
characters to check.

It appears to not be formatting the value correctly.

Steps:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, 
Controls, Forms, Dialogs,
  StdCtrls, Mask;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := FormatMaskText('99999', ',?');
end;

end.

Area: vcl\additional controls\tmaskedit

Reference Number: 1197 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/23/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

Submitted by user via web:

MASK.PAS
When I'd format using mask containing characters 
used 
mDirLiteral(\) followed by mMskTimeSeparator (:) or 
mMskDateSeparator (/), then / or : is evaluated not 
as 
literal but as time or date separator from .ini.

This bug is in Delphi 1, Delphi 3. Delphi 4 I haven't.

Area: vcl\additional controls\tscrollbox

Reference Number: 1192 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/22/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The scrollbox component is not setting the 
scrollable region properly.
Creating a scroll box which contains an object that 
is larger than the client size results in either the 
vertical or horizontal scroll bar to go beyond the 
range by the width/height of vertical/horizontal 
scroll bar.

Steps:


I've put an GIF of a < ALT > - < PRINT 
SCREEN > of the form on:

    http://www.digitalpaws.com/adam/window.gif


1) Open a new application.
2) Add a scrollbox to the form.
3) Add a shape to the scrollbox.
4) Set the width and height of the shape to a large 
number (e.g. 1024).
5) Compile and run the application.
6) Scroll to scroll box to the bottom right.


UNIT1.DFM:
object Form1: TForm1
  Left = 190
  Top = 107
  Width = 272
  Height = 223
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object ScrollBox1: TScrollBox
    Left = 0
    Top = 0
    Width = 264
    Height = 196
    Align = alClient
    TabOrder = 0
    object Shape1: TShape
      Left = 0
      Top = 0
      Width = 1024
      Height = 1024
    end
  end
end

UNIT1.PAS:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, 
Controls, Forms, Dialogs,
  ExtCtrls;

type
  TForm1 = class(TForm)
    ScrollBox1: TScrollBox;
    Shape1: TShape;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

end.

PROJECT1.DPR:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Area: vcl\additional controls\tspeedbutton

Reference Number: 1102 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/12/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Speed Buttons with 'Flat' property set to TRUE stay 
raised after cursor passes accross them. The 
Speed Buttons 'MUST' be on a CoolBar component 
to see this bug.

Area: vcl\additional controls\tsplitter

Reference Number: 810 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 6/18/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

TSplitter.MinSize have problem.
Assuming that  TSplitter.Align  is alLeft, If Splitter 
move to left edge of Form, Splitterwill  move to Left 
edge.

And If resize a form by left edge, Splitter will disable.

Steps:

1. Create a new application.
2. Drop TPanel in Form1. Set Panel1.Align to alLeft.
3. Drop TSplitter in Form1
3. Drop TPanel in Form. Set  Panel2.Align to 
alClient.
4. Compile and Run.
5. Glab a splitter by mouse, and move to left.
6. Panel1 will vanished.
7. Resize form1 used by left edge 
8. Can not glab a splitter.

Area: vcl\additional controls\tsplitter

Reference Number: 964 (Published: 12/18/98)
Status: Deferred to Next Rel
Date Reported: 7/15/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The Canvas property of TSplitter is not public, so 
you can't use the OnPaint event. This is 
documented as if the Canvas property is public.

Area: vcl\additional controls\tsplitter

Reference Number: 234 (Published: 7/22/98)
Status: Fixed in Version 4.0
Date Reported: 3/17/97
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

TSplitter needs a Visible property. When using a 
Splitter besides a pane that can be hidden by the 
user, it would be desirable to have the splitter be 
hidden too.

Area: vcl\additional controls\tsplitter

Reference Number: 1033 (Published: 10/27/98)
Status: Deferred to Next Rel
Date Reported: 7/27/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The TSplitter seems to have a problem when when 
dragged below its MinSize.

Steps:

For example, drop a TPanel on a blank form, align it 
left.  Drop a
TSplitter on the form, alight it left, with default 
MinSize of 30.  Drop
another TPanel on the form, aligned client.  Run the 
program, then drag
the TSplitter all the way to the right.  It correctly 
limits the Minsize
of the panel.

Now drag the TSplitter all the way to the left.  The 
left panel gets
sized to zero instead of the TSplitter's MinSize. Click 
on the TSplitter
and its drag image is displayed where the MinSize 
should be.  Now
Maximize the form with the TSplitter all the way to 
the left.  The
TSplitter can't be dragged anymore, even when the 
form is restored to
its original size.

Area: vcl\additional controls\tsplitter

Reference Number: 811 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 6/18/98
Severity: Commonly Encountered
Type: Documentation Problem

Problem:

TSplitter AutoSnap/AutoHide property is not exist.


Area: vcl\additional controls\tsplitter

Reference Number: 317 (Published: 11/12/98)
Status: Deferred to Next Rel
Date Reported: 2/17/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

The Splitter retains the crHSplit or crVSplit cursor 
when escape is pressed.

Area: vcl\additional controls\tstringgrid

Reference Number: 1286 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 9/8/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The TStringGrid OnSetEditText event is fired every 
time the user presses a key

Steps:

1.  Drop a TStringGrid on the form
2.  Add goEdit to the options property
3.  Add a OnSetEditText event handler, run the 
application.  Note that the event fires for every key 
press while in edit where it should fire when the user 
has left the cell after an edit.

The docs state that "Occurs when the user has 
finished editing the value of a cell.", but this 
behavior seems contrary to that description.  Either 
this is a doc bug or the event if misfiring.

Area: vcl\additional controls\tstringgrid

Reference Number: 1249 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/31/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Consecutive comma's in SDF CommaText do not 
seem to be parsed as empty strings

Steps:

File | New application

Drop a StringGrid on the form

In a button click add the following code

var
  TheString: String;
begin
  TheString := ',,1';
  StringGrid.Rows[0].CommaText := TheString;
end;

//  StringGrid.Cells[0][0] is '1' and not '' as I would 
have
//  expected;

Area: vcl\additional controls\tstringgrid

Reference Number: 939 (Published: 12/18/98)
Status: Deferred to Next Rel
Date Reported: 7/13/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

TStringGrid not repainting properly

Steps:

1.  place a TStringGrid component on a form.
(Make sure there are more columns than fit in the 
grid's width, so the horizontal scroll bar is visible. It is 
also a good idea to make sure the right edge of the 
grid is in the middle of a column)

2.  Run the program, and press Ctrl-End to move to 
the last cell of the grid.

 A few pixels from the header row will remain on the 
right side of the control.

Area: vcl\core vcl classes

Reference Number: 422 (Published: 12/7/98)
Status: Deferred to Next Rel
Date Reported: 4/6/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The Constraints.AnchorHorz and 
Constraints.AnchorVert don't work properly on 
controls when their immediate container is a Form 
with AutoScroll set to True.

Workaround: set AutoScroll to False.

Steps:

1. Place Button1 on Form1 near the right edge.
2. Set Constraints.AnchorHorz to akMove.
3. Resize form's width using mouse in quick 
movements -- notice that scrollbars sometimes 
appear on form.

Area: vcl\core vcl classes

Reference Number: 486 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 5/9/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

CM_CANCELMODE message is not getting called 
when grabbing the title caption and moving the 
window or when resising a window.

Steps:

Place a TTable, TDataSource, 
TDBLookupComboBox on a form.
Connect TTable to DataSource1
TDataSource to DBDemos Database, Animals table 
and Active to True
Connect TDBLookupComboBox's ListSource to 
TDataSource1, and set ListField and KeyField to 
NAME. 
Run the application
Drop down the drop down, and then resize the form 
or move the form using the titlebar..
The drop down does not close because it does not 
get the CM_CANCELMODE message.

Area: vcl\core vcl classes

Reference Number: 630 (Published: 11/19/98)
Status: Deferred to Next Rel
Date Reported: 6/3/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

TApplication.UpdateVisible should not make the 
application window visible in the following case:
 - you are building a DLL in Delphi that contains a 
Form, which is intended to be created as a child of 
a foreign window (i.e.that's not implemented in 
Delphi).
 - the Application.Handle window is a foreign 
window handle (in this case, the window handle of 
the encapsulating frame window)
 - the Application.Handle window is hidden.
 - after creating the Form initially hidden, you then 
set Form.Visible := True.

This last step sets the Visible property to True and 
then eventually calls Application.UpdateVisible.  

TApplication.UpdateVisible will loop through all the 
Forms and if any are visible it will make the 
Application visible as well.

The problem is that this code assumes all the forms 
are top-level windows and not child windows.  In 
general, making a child window visible does not 
necessarily cause its parent to become visible, and 
only when the parent becomes visible do all the 
windows appear on the screen.

Workaround:

Here is a rewrite that works around the problem:
procedure TApplication.UpdateVisible;
....
var
  I: Integer;
begin
  if FHandle < > 0 then
  begin
begin
  if FHandle < > 0 then
  begin
    for I := 0 to Screen.FormCount - 1 do
      // If form is visible, show the Application.
      // But don't if the form is a child of a non-Delphi 
window,
      // since if that is hidden then calling SetVisible 
will cause
      // it to become visible.
      with Screen.Forms[I] do
        if (Visible and 
           ((ParentWindow = 0) or (not IsChild( 
FHandle, ParentWindow )))) then
        begin
          SetVisible(True);
          Exit;
        end;
    SetVisible(False);
  end;
end;

Area: vcl\core vcl classes

Reference Number: 961 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/13/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The implementation of the new routine 
Forms.KeyboardStateToShiftState is faulty. It fails to 
correctly ascertain whether certain keys are 
pressed down or not

The routine in question is only used in the 
implementation of the mousewheel event support 
(as far as I can see), but this simple code in the 
Steps section should hopefully demonstrate the 
point. Note that in the code supplied, there is an 
OnKeyPress event handler that uses 
KeyboardStateToShiftState to see if the Ctrl key is 
down.

Area: vcl\core vcl classes

Reference Number: 279 (Published: 11/11/98)
Status: Deferred to Next Rel
Date Reported: 1/12/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

TWinControl.Canfocus does not check to see if the 
form itself is visible/enabled.

Steps:

1. File | New Application
2. File | New Form
3. Place a button on form1 with the following code:
if Form2.Canfocus then
  Form2.SetFocus;
4. Compile/run the application and press Button1
// Notice that an exception occurs

Area: vcl\core vcl classes

Reference Number: 883 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/7/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

Moving the mouse over a disabled menu item draws 
the selection and hides the text.  It should not draw 
the selection.

[Note: this only happens if the clHighlight system 
color is = to the clBtnShadow system color. - rbr]

Area: vcl\core vcl classes

Reference Number: 230 (Published: 7/22/98)
Status: Fixed in Version 4.0
Date Reported: 3/15/97
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

[ TStrings ]

LoadFromFile requires exclusive access to a file or it 
will fail. 

When calling TFileStream.Create it should use 
"fmOpenRead or fmShareDenyWrite" instead of 
only "fmOpenRead".

Area: vcl\core vcl classes

Reference Number: 354 (Published: 11/16/98)
Status: Deferred to Next Rel
Date Reported: 3/2/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

If you define your own collection property, you must 
call ReadValue before you call ReadCollection or 
you'll get an error.

Steps:

o  Comment out the ReadValue in 
TQuery.ReadParamData().
o  Recompile
o  Drop down a TQuery add a SQL statement (" 
select * from customer where custno = :CustNo")
o  Run the project.

Area: vcl\core vcl classes

Reference Number: 976 (Published: 12/18/98)
Status: Deferred to Next Rel
Date Reported: 7/15/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The Anchors property doesn't perform correctly 
when the WindowsState of a form is set to 
wsMaximize.

Area: vcl\core vcl classes

Reference Number: 1088 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/6/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The problem is with GetFormImage most nest 
windows controls like comboboxes, etc. are drawn 
blank. 

Area: vcl\core vcl classes

Reference Number: 786 (Published: 12/15/98)
Status: Deferred to Next Rel
Date Reported: 6/17/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

The TThread.WaitFor method can't be used for 
threads where the FreeOnTerminate property is set 
true.

This is because the FHandle field of the TThread 
object is accessed after the thread has terminated 
and, if FreeOnTerminate was true, after the object 
has been freed.

My suggestion is to store the value of FHandle 
locally and use the local variable instead of 
FHandle.

Steps:

Concrete suggestion:


function TThread.WaitFor: Integer;
var
  Msg: TMsg;
  H: THandle;
begin
  H := FHandle;
  if GetCurrentThreadID = MainThreadID then
    while MsgWaitForMultipleObjects(1, H, False, 
INFINITE,
      QS_SENDMESSAGE) = WAIT_OBJECT_0 + 1 
do PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE)
  else WaitForSingleObject(H, INFINITE);
  GetExitCodeThread(H, Result);
end;

Area: vcl\core vcl classes

Reference Number: 1261 (Published: 10/24/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/31/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

The Align property is interacting with the new 
Anchors property in a way that breaks old code and 
causes very strange side effects.  For example, by 
changing the Align property of a component, it is 
possible for the component to "disappear" from the 
form, because its width has been set to 0.

The point is that the Align property should not be 
controlled by the Anchors property and vise-versa.  
And although there is a work-around it is certainly 
not an acceptable solution. 

Area: vcl\core vcl classes

Reference Number: 1516 (Published: 12/18/98)
Status: Deferred to Next Rel
Date Reported: 10/6/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

WindowState property is not reported correctly in 
FormResize

Steps:

From the dellphi bug list: (using D4 update 2 beta)

A Form's WindowState property is not reported 
correctly in the FormResize event when
maximizing/minimizing/restoring. The WindowState 
property gets updated AFTER the FormResize 
event.



     To fix this bug, you need to edit the 
FORMS.PAS file. I haven't attempted a workaround 
that doesn't involve editing the VCL code,
     although I'm sure it would be possible by 
trapping the WM_SIZE message. 

     You need to adjust the TCustomForm.WMSize 
procedure so that the "inherited" line comes 
AFTER the case statement that sets the
     WindowState property. i.e.: 

     procedure TCustomForm.WMSize(var Message: 
TWMSize);
     begin
       {inherited;}  // remove this line

       if not (csDesigning in ComponentState) then
         case Message.SizeType of
           SIZENORMAL: FWindowState := wsNormal;
           SIZEICONIC: FWindowState := 
wsMinimized;
           SIZEFULLSCREEN: FWindowState := 
wsMaximized;
         end;
       inherited;    // move line to here.
       RequestAlign;
       ......

Area: vcl\core vcl classes

Reference Number: 1540 (Published: 10/21/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 10/9/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

The crSize cursor constant is invalid. 

Area: vcl\core vcl classes

Reference Number: 1541 (Published: 12/21/98)
Status: Deferred to Next Rel
Date Reported: 10/9/98
Severity: Commonly Encountered
Type: New Feature

Problem:

the function VarArrayFromStrings includes both the 
name & the value pair in each entry.  I would think 
that it should only have the Name or perhaps the 
values in a second diminsion.

The work around is to not use the method.

Steps:

1)  In the following example the output string will 
include both the name & the value in the single 
diminsion of the variant array:

var
  vMachines: olevariant;
  vList: TStringList;
  i: integer;
begin
  Edit1.Text := '';
  ListBox1.Items.Clear;

  vList := TStringList.Create;
  for i:=0 to 9 do
  begin
    vList.Add('Test' + IntToStr(i) + '=');
    vList.Values['Test' + IntToStr(i)] := IntToStr(i);
  end;
  Edit1.Text := IntToStr(vList.Count);

   vMachines := VarArrayFromStrings(vList);
   vList.Free;

   for i := 0 to VarArrayHighBound(vMachines, 1) do
      ListBox1.Items.Add(vMachines[i]);
end;

Output: 
 Test0=0
 Test1=1
 Test2=2
...

when I would expect:
 Test0
 Test1
 Test2

Area: vcl\core vcl classes

Reference Number: 699 (Published: 12/15/98)
Status: Deferred to Next Rel
Date Reported: 6/10/98
Severity: Infrequently Encountered
Type: Documentation Problem

Problem:

The Anchors property causes a visual display 
problem upon certain resize operations

Steps:

Make sure you are using a version of Windows that 
has the option of having window contents display 
whilst dragging turned on. I am using Windows 95

Place a DBGrid on a form

Use the Anchors property and make sure all four 
possible elements are included in the set

Now resize the form (either at design-time or at 
run-time) so that the form shrinks and the gris 
shrinks in tandem

When the grid gets small enough for the column 
headers to get clipped, keep shrinking the form

When the form is sized, such that the grid is almost 
non-visible, start enlarging the form again

Notice that the column headers are redrawn very 
badly. 

To remedy the problem you need to invalidate the 
grid

Area: vcl\core vcl classes

Reference Number: 84 (Published: 11/6/98)
Status: Deferred to Next Rel
Date Reported: 6/3/98
Severity: Extremely Rare Case
Type: Basic Functionality Failure

Problem:

The TStringList.CommaText property does not work 
correctly if the last item entered in the CommaText 
property is a NULL.

Steps:

Add the following code to a project:

void foo(void){
  TStringList *sl = new TStringList;
  sl- > CommaText = "A,B,C,D";
  int count = sl- > Count;
  sl- > CommaText "A,B,C,";
  if (sl- > Count != count){
    throw Exception ("Welcome to the Builder 
CommaText Bug!:  " + String (sl- > Count));
  }
}

there should be 4 items in the string list but it shows 
as three.

Area: vcl\core vcl classes\streaming

Reference Number: 1093 (Published: 10/28/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/11/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The VCL streaming code does not handle published 
variant properties with Null values when converting 
to and from text.

Steps:

Drop a TQuery.
In the SQL put: :p1 :p2
In the params editor, select ftInteger for the 
datatype of each param.
Set the value of the first param to Null (from the type 
drop down) and the second param to 0.
Try to view the form as text.

Area: vcl\core vcl classes\tform

Reference Number: 651 (Published: 11/19/98)
Status: Deferred to Next Rel
Date Reported: 6/7/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The VertScrollBar and HorzScrollBar.Size can't be 
reset to it WIn95 default after it value has changed. 
If we set it back to 0 it should set to the default size. 

Steps:

1. Place some compnents on a TForm
2. Resize the form so it is smaller the the 
components. Scrollbars are now displayed.
3. Set HorzScrollBar.Size to 50
4. Set HorzScrollBar.Size back to 0

The default value isn't set.

Area: vcl\core vcl classes\tform

Reference Number: 1210 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/24/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Anchors don't work correctly for components on 
forms whose Position property isn't set to 
poDesigned or poDefaultPosOnly.

Area: vcl\core vcl classes\tform

Reference Number: 1155 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/20/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Cannot minimize the main form after closing modally 
shown form form a dll compiled with runtime 
packages

Area: vcl\core vcl classes\tform

Reference Number: 1545 (Published: 10/20/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 10/12/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Setting TForm.Align to anything other than alNone 
causes other visible forms (with Align < > alNone) 
which happen to be parented (i.e. Parent < > nil) 
to flicker like crazy.

Steps:

1. Set Form1.Align to alTop
2. Set Form2.Align to alClient
3. Create a Form3 (Align = alNone)
4. Make sure for all forms Visible = True
5. In Form3.FormCreate:
  Form2.Parent := Form3
6. Run and resize Form3 - notice incorrect 
alignment of Form2 and crazy flicker.

Area: vcl\core vcl classes\tform

Reference Number: 932 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/10/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

The OnActivate of TForm fires before the OnCreate 
event under some circumstances.  This can cause 
problems with existing code that depends on the 
form being fully instantiated at this point.  This was 
not the behaviour in previous versions.

Steps:

1) Create a 2nd Form in an applicaiton.  Leave it 
autocreated and not visible.
2) AutoScroll := True;
3) Drop a button on the form and shrink the form so 
that the button is partially out of the viewable area 
(i.e. the scrollbar should automatically appear.
4) Create event handlers in OnCreate and 
OnActivate of the form.
5) Set break points or what ever to see that the 
OnActivate fires BEFORE the OnCreate

Area: vcl\core vcl classes\tform

Reference Number: 1091 (Published: 10/28/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/10/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

In FORMS.PAS, TScreen.DestroyCursors does not 
free one of the cursors :

procedure TScreen.DestroyCursors;
var
  P, Next: PCursorRec;
  Hdl: THandle;
begin
  P := FCursorList;
  while P < > nil do
  begin
    if (((P^.Index > = crSqlWait) and (P^.Index < = 
crDrag)) 
       or (P^.Index = crHandPoint))          
//modification
       or (P^.Index > 0) then
    DestroyCursor(P^.Handle);
    Next := P^.Next;
    Dispose(P);
    P := Next;
  end;
  Hdl := LoadCursor(0, IDC_ARROW);
  if Hdl < > FDefaultCursor then
  DestroyCursor(FDefaultCursor);
end;

Steps:

Customer recommends adding this line.  Moving on 
for verification.

Area: vcl\core vcl classes\tform

Reference Number: 1341 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 9/16/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

when minimizing a maximized MDI child Form, the 
title bar gets placed a touch to low in the MDI 
parent Form causing vertical scroll bars to appear in 
the parent.

Steps:

1.  File | New...  Projects, MDI Application
2.  Run the project.  
3.  Create a new Child Form.  
4.  Maximize the Child Form.
5.  Minimize the child Form.
  Vertical scrollbars now appear in the parent Form

Area: vcl\core vcl classes\tform

Reference Number: 1204 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/24/98
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

TCustomForm.OldCreateOrder does not have a 
default value, so it is always stored in the DFM.  I 
don't think you'd want this for boolean values.


Area: vcl\core vcl classes\tform

Reference Number: 80 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 5/14/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

When printing a TForm the top and left borders of 
the printed image have a black line. This black line 
was not there in Delphi 3 applications, it started 
showing up in Delphi 4.

Steps:

1. Start a new project
2. Drop a button on the form
3. Double click on the button and type:

    Form1.Print();

4. Run project (press the little green play button)
5. When application comes up click "Button1"
6. Get up and go to the printer
7. Pick up the piece of paper that printed and look 
at it
8. See a black line on the top and left boarders of 
the printed image. It should not be there.

Area: vcl\core vcl classes\tform

Reference Number: 358 (Published: 11/16/98)
Status: Deferred to Next Rel
Date Reported: 3/4/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

A very hand debug tool is to turn on $APPTYPE 
CONSOLE in a GUI application to enable writeln of 
debug messages etc to the console. The forms in 
the application continue to work as before.

However in D3, this is not fully supported, because 
the VCL code checks the IsConsole variable at 
run-time and the result is that all the forms in the 
application gets an icon in the task-bar, not just the 
main window.

Problem:
In Forms you have:

procedure TApplication.CreateHandle;
var
  TempClass: TWndClass;
  SysMenu: HMenu;
begin
  if not FHandleCreated and not IsConsole then
  begin

I.e. the Application Handle is only created if 
IsConsole returns false.

TApplication.CreateHandle is called from 
TApplication's Create constructor when IsLibrary is 
false. TApplication is created from the InitControls 
procedure in Controls and the InitControls 
procedure is called in the initialization part of 
Controls.

Area: vcl\core vcl classes\tform

Reference Number: 1384 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 9/22/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

It appears scrolling a form in Delphi 4 is 50 to 100% 
slower than Delphi 3. 
[ I see 9.84 sec vs 4.36 sec - about 100% - MD]

Steps:

Compare following code in Delphi 3 and Delphi 4.

var i: Integer;
    t1,t2: TDatetime;
    e: Integer;
begin
   Screen.Cursor := crHourGlass;
   t1 := Now;
   for i := 1 to 400 do
   begin
     Label1.Left := 10+i;
     Label1.Top := 10+i;
     Label1.Width := 100+i;
     Label1.Height := 100+i;
   end;
   for i := 1 to 400 do
   begin
     Label1.Left := 10+i;
     Label1.Top := 10+i;
     Label1.Width := 100+i;
     Label1.Height := 100+i;
   end;
   t2 := Now;
   Label2.Caption := 'Testtime: ' + 
FormatFloat('0.00',(t2-t1) * 100000) + ' sec';
   Screen.Cursor := crDefault;

Area: vcl\core vcl classes\tscreen

Reference Number: 1076 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/4/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

Screen.Fonts does not update in response to 
Wm_FontChange messages.

Area: vcl\core vcl classes\tthread

Reference Number: 1392 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 9/23/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

Proper multithreading support is made even more 
difficult with D4.

To allow the main thread to block on the message 
queue as well as any
number of events, semaphores and threads, I've 
implemented a
TMultiThreadedMainLoop class that hooks the 
Application.OnIdle event
and calls MsgWaitForMultipleObjects.

When it detects that there is a message waiting in 
the queue, it exits
the idle event handler returns to let 
TApplication.HandleMessage
handle the message (sic). However, to ensure that 
control returns back
to the OnIdle event handler to again call 
MsgWaitForMultipleObjects,
it always sets Done := false before exiting. This 
works nicely in D3,
but in D4 it has the side-effect of never calling the 
new DoActionIdle
method:

procedure TApplication.Idle(const Msg: TMsg);
begin
  ...
  Done := True;
  try
    if Assigned(FOnIdle) then FOnIdle(Self, Done);
    if Done and IsIdleMessage(Msg) then 
DoActionIdle;
  except
    on Exception do HandleException(Self);
  end;
  if Done then WaitMessage;
end;

My OnIdle handler (simplified):

procedure 
TMultiThreadedMainLoop.AppIdle(Sender: 
TObject; var Done:
boolean);
begin
  repeat
    WaitResult := MsgWaitForMultipleObjects(...);

    if WaitResult = wrSignaled then
       HandleSignal;

    // Loop until we get a message
  until WaitResult = wrMessage;

  // Always return Done=false to signal that the 
message loop should
go back here when it has read all messages
  Done := false;
end;

As you can see from these snippets, the event sets 
Done:=false to
avoid the blocking WaitMessage call in 
TApplication.Idle. However,
this has the side-effect of never calling 
DoActionIdle.

To add to the problem, the DoActionIdle method is 
declared private, so
I cannot easily call it from my event handler. The 
only resolution
seems to be to copy the functionality of 
DoActionIdle into my class.
Not very nice when it comes to reuse.

Area: vcl\core vcl classes\twincontrol

Reference Number: 1276 (Published: 10/24/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 9/4/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Constraints fail under certain configurations of 
controls using Align.

Area: vcl\core vcl classes\twincontrol

Reference Number: 1381 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 9/22/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Strange behaviour when using the paintto method 
from twincontrol descendants, specially when used 
with panels which contain other panels inside, with 
components in them. Some components
are not drawn, some are drawn bigger and, when 
the original object is not visible, nothing or a white 
rectangle is drawn.

Steps:

1. create a new application
2. drop a panel of the form; create panel1
3. drop another panel on panel1; create panel2
4. drop a button on panel2; create button1
5. drop a paintbox component on the form; create 
paintbox1
3. drop another button on the form and on its 
onclick event execute the followimg statement: 
panel1.paintto(paintbox1.canvas.handle, 0, 0);
4. when the onclick event fires, panel1 is drawn 
containing panel2, but no button1 

Area: vcl\dialog controls\tcolordialog

Reference Number: 1131 (Published: 10/28/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/17/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

When defining custom color, the user is to use the 
keyword ColorA=xxxxxxx.  The word Color should 
not be resourced since it could easily lead to 
over-translation (as is the case with Delphi 3 and 4)

Area: vcl\dialog controls\topenpicturedialog

Reference Number: 1057 (Published: 12/4/98)
Status: Deferred to Next Rel
Date Reported: 7/31/98
Severity: Serious
Type: Crash

Problem:

TOpenPictureDialog does not open specfied 
formats.

Steps:

1.  Drop a TOpenPictureDialog on a Form with a 
TButton.
2.  within Button1Click do a 
OpenPictureDialog1.Execute.
3.  Try to open any .jpg and an 
EInvalidGraphicFormat is raised with error invalid 
extension.  (Graphics.pas, TPicture.LoadFromFile 
line3619).

Workaround:


The solution is to write code to assign 
OpenPictureDialog1.Filter := 
Graphics.GraphicFilter(TGraphic) at any time after 
the OpenPictureDialog1 component is loaded and 
before it is show to the user.  Or, you can modify the 
OpenPictureDialog's Filter property at design time to 
delete the graphics file types that you do not intend 
to support in your application.

Area: vcl\dialog controls\topenpicturedialog

Reference Number: 330 (Published: 11/12/98)
Status: Deferred to Next Rel
Date Reported: 2/20/98
Severity: Commonly Encountered
Type: Unknown

Problem:

TopenPictureDialog can be pretty slow.

Steps:

What is the chance of having this thing use 
threads/processes?  I have a bitmap that just brings 
Delphi to its knees.

if I just happen to click on that bitmap - a takes 
couple of min trying to load the bitmap, then a min 
trying to close the dialog.  Or if I click on another 
bitmap while trying to load this big one, it still takes a 
couple of min loading, then throws it away meaning 
if I click back, another 2 min...

Area: vcl\dialog controls\tprintdialog

Reference Number: 1281 (Published: 10/24/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 9/8/98
Severity: Serious
Type: Crash

Problem:

TPrintDialog fails to honor the PrintToFile checkbox

Area: vcl\dialog controls\tprintdialog

Reference Number: 274 (Published: 11/11/98)
Status: Deferred to Next Rel
Date Reported: 12/15/97
Severity: Serious
Type: Basic Functionality Failure

Problem:

TPrinterSetupDialog

Dialog is always initialized with the default printer 
selected (changing Printer.PrinterIndex has no 
effect)

Area: vcl\dialog controls\tprintersetupdialog

Reference Number: 465 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 5/5/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Under Windows NT 4 (SP3) the printer dialog and 
printer setup dialog will always show the default 
printer, not the one chosen through 
Printer.PrinterIndex. Under Win95 (and Win 3.1 with 
D1) the PrinterIndex printer is the one chosen in the 
dialog.

This can be worked around by calling 
Printer.GetPrinter followed by Printer.SetPrinter, with 
a 0 parameter for hDevMode, to force TPrinter to 
update its info.

Steps:

The following event handler shows what is 
neccessary to have the NT4 printer dialogs to show 
the correct printer after PrinterIndex is set in code. If 
the GetPrinter and SetPrinter calls are commented 
out then the dialogs will always show the default 
printer, not the PrinterIndex one.

procedure TForm1.Printersetup1Click(Sender: 
TObject);
var
  Device : array[0..255] of char;
  Driver : array[0..255] of char;
  Port   : array[0..255] of char;
  hDMode : THandle;
begin
  Printer.PrinterIndex := 1; { set to any non-default 
printer }
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  Printer.SetPrinter(Device, Driver, Port, 0);

  if PrinterSetupDialog1.Execute then begin
    Memo1.Lines := Printer.Printers;
  end;
end;

Area: vcl\docking

Reference Number: 1571 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 10/15/98
Severity: Critical
Type: Crash

Problem:

Dragging off a TCoolBar causes an AV when the 
dragged control is released.

Area: vcl\docking

Reference Number: 1465 (Published: 10/28/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 9/30/98
Severity: Critical
Type: Basic Functionality Failure

Problem:

ManualDock does not work in the case where a 
control is not floating or already docked 
somewhere.

Steps:

Put a DockSite on a form.
Put a dockable control on a form.
Put a button on the form, in it's Onclick type:

 < dockable control > .ManualDock( < docksite 
> );

Run.
Push the button. 
Nothing happens.

Area: vcl\docking

Reference Number: 536 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 5/21/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Resize splitters do not behave correctly when 3 or 
more dock clients are present.

Steps:

Run the docking demo and cojoin 3 color windows 
so that two are side by side on the bottom and one 
is one is on top of the other two.

Try to move the splitter between the bottom two 
windows and notice that it will only move two the 
left a distance which is equal to the height of the 
top window.

Area: vcl\docking

Reference Number: 537 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 5/21/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Docking preview rect is not correct in some cases.

Steps:

Run the docking demo.
Open three windows.
Dock 2 side by side.
Try to dock the third above the previous 2.
Note the preview rect incorrectly shows the entire 
window instead of just the top half.

Original Steps:
1) Conjoin dock object inspector and call stack side 
by side.
2) Grab any other dockible window and try to dock 
above the other 

Note the preview rect took up the entire tool 
window, not just the top of the tool window.

Area: vcl\docking

Reference Number: 831 (Published: 10/19/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 6/22/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Turns out it was a TControlBar grabbing anything 
dragged over it.  The TControlBar in this case was 
obscured by a TToolBar filling it's client area, so you 
couldn't see that the form had been docked -- all 
you saw was that it vanished and was no longer 
displayable.  So, the bug is:  

TControlBar docks anything drug over it without 
that 'thing' being first dropped -- very bad.  

Steps:

With AutoDrag = False, the behavior is as 
expected, Unfortunately the form cannot then be 
undocked from the ControlBar

Area: vcl\docking

Reference Number: 1463 (Published: 10/28/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 9/30/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Docking a TRichEdit to a TPageControl results in 
the tab sheet containing the entire text of the 
TRichEdit, including non-printable characters.

Steps:

Drop a PageControl on a form, add a couple of tab 
sheets, and drop a TRichEdit on a tabsheet. 
Set RichEdit DragKind to dkDock and DragMode 
to dmAutomatic.
Make the PageControl a docksite.
Add some more text to RichEdit.Lines.
Run. 
Click the RichEdit, since it's dmAutomatic this will 
cause it to undock and re-dock to a new tab. Note 
the caption.

Area: vcl\docking

Reference Number: 1565 (Published: 10/23/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 10/14/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

When attempting to dock any control to a control 
bar, the image of the control will remain improperly in 
the initial control that was dragged over.

Steps:

1.  Place two control bars in a form, one aligned 
Top and the other aligned Left
2.  Drop a panel on the top one and set DragKind 
to dkDock and DragMode to dmAutomatic.
3.  Run the application.
4.  Undock the panel and release the mouse.
5.  Grab the caption of the undocked panel and 
drag it over a controlbar.  It will dock temporarily.
6.  Continue moving the mouse so that it undocks 
that control bar and travels over the other.  
7.  Notice the image of the control remaining in the 
first control bar.

Area: vcl\docking

Reference Number: 886 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/4/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

Floating window gets a bit of garbage in its caption

[or, rather, TCustomDockForm uses the memo's 
text, and I mean ALL of it, as its caption - MD]

Steps:

Make a new application

Add panel to form, making it just a bit smaller than 
the form itself is

Set panel's DockSite to True

Add a memo onto the panel

Set Memo's Align property to alClient

Set Memo's DragMode to dmAutomatic

Set Memo's DragKind to dkDock

Run app

Drag memo off the panel and leave it floating

Notice the caption of the floating window is Memo1 
followed by two vertical bars, or squares (probably 
high or low ANSI characters)

Area: vcl\docking

Reference Number: 484 (Published: 10/15/98)
Status: Deferred to Next Rel
Date Reported: 5/9/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

When a dock client becomes visible it may not be 
restored to the location it was in before being 
hidden.



Area: vcl\docking

Reference Number: 1252 (Published: 10/24/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 9/1/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Docking into a Coolbar:

Setting Source.DockRect inside of the CoolBar's 
OnDockOver event (to provide a preview rect) can 
cause unpredictable behavior, such as 
disapperaing bands

Workaround:

see readme.txt

Area: vcl\drag\drop

Reference Number: 1103 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/12/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

On any TControl, the OnStartDrag event is fired as 
soon as BeginDrag is called, not when the drag 
operation actually starts (when the threshold is 
exceeded).

Original Description:
TTreeView.BeginDrag starts dragging immediately, 
regardless of the values for "Immediate" and 
"Threshold" parameters. 

[This bug also applies to TListView - MD]

Area: vcl\graphics

Reference Number: 707 (Published: 12/15/98)
Status: Deferred to Next Rel
Date Reported: 6/12/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

When Changing the pixelformat of TBitmap to 
pf8Bit, CreateHalftonePalette leaks

Steps:

var
  orgbmp:TBitMap;
  x: Integer;
begin
  for x:= 0 to 10000 do
  begin
  orgbmp:=TBitmap.Create();
	orgbmp.Width:=10;
	orgbmp.Height:=10;
	orgbmp.PixelFormat:=pf8bit; //here it 
leaks
	orgbmp.Palette:=  
Image1.Picture.Bitmap.Palette;
        Application.ProcessMessages;
  orgbmp.free;
  end;

Area: vcl\graphics

Reference Number: 984 (Published: 10/27/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/17/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The attached graphic is not streamed correctly.  
Streaming of RLE bitmaps appears to be broken.

Steps:

1. File | New Application
2. Drop a TImage
3. Load the RLE bitmap into the image.
4. Select View Form as text
5. Select View as Form
// Notice that part of the top of the bitmap is 
messed up.

Area: vcl\graphics

Reference Number: 244 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 5/16/97
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Matrox millenium , Diamond, Cirus. Riva 128, 
causes problems on a recompile D2 app with a 
Treeview. On WinNT 351 SP2

Also, corrupted icons in the IDE component palette.

Steps:

1)The icons form the Image list are displayed as 
black. in the treeview

2)This happens even on a (640*480 16 
colors) Standard MS driver.


3)The icons are 16x 16 and 16 colors.

4)The BDEadmin DOES NOT display this behaviour 

5) the same app compiled with D2 does NOT show 
the same behaviour.

Area: vcl\graphics

Reference Number: 409 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 3/30/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

When DDBsOnly is set to True, the Graphics unit 
will leak resources, but only on Win95. See line 
5586 in Graphics.pas.

Steps:

1. File | New Application
2. Drop a TButton down.
3. In the OnClick event handler for the button:

  var
    i : Integer;
  begin
    DDBsOnly := True;
    for i:=0 to 9999 do begin
      with TBitmap.Create do begin
        LoadFromFile('C:\WINDOWS\WAVES.BMP');
        Free;
      end;
      Caption := IntToStr(i);
      Application.ProcessMessages;
    end;
  end;

4. Run and watch your resources go away...
5. The program will crash if you wait long enough. 
On my machine, about 900 iterations

Area: vcl\graphics

Reference Number: 1160 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/20/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

TGraphic.LoadFromFile opens the file in a mode 
that prevents other processes from concurrently 
reading from the file.  Please change to opening it in 
a shared mode.

Area: vcl\graphics

Reference Number: 249 (Published: 11/9/98)
Status: Deferred to Next Rel
Date Reported: 7/29/97
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

RLE compressed bitmaps are not correctly 
unencoded by ReadDIB in Graphics.pas.

Steps:

1. Add a TImage on a form.
2. Add the attached 256-color athena bitmap to the 
image.
3. Hit Alt+F12 to view the form's source.
4. Hit Alt+F12 again to stream-in the image.
5. Notice the black bands atop the image.

Area: vcl\graphics

Reference Number: 1342 (Published: 10/24/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 9/16/98
Severity: Infrequently Encountered
Type: Unknown

Problem:

[ TGraphic ]

LoadFromFile requires exclusive access to a file or it 
will fail.

When calling TFileStream.Create it should use 
"fmOpenRead or fmShareDenyWrite" instead of 
only "fmOpenRead".

The same report has been submitted and fixed for 
TStrings but it appears that the file mode should be 
corrected for all objects in VCL that implement the 
"LoadFromFile" method.



Area: vcl\mdi support

Reference Number: 1542 (Published: 10/21/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 10/12/98
Severity: Commonly Encountered
Type: Crash

Problem:

Using a mousewheel in an MDI app causes a stack 
overflow.

Area: vcl\printing

Reference Number: 1055 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 7/31/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

TPrinter.GetPrinter fails to return the name of the 
currently selected printer driver

Area: vcl\printing

Reference Number: 348 (Published: 11/13/98)
Status: Deferred to Next Rel
Date Reported: 2/24/98
Severity: Commonly Encountered
Type: New Feature

Problem:

Add global variable and type to Printers unit:

type
  TPrinterClass = class of TPrinter;

var
  PrinterClass : TPrinterClass;

Change the Printer function to create an instance of 
the class found in the PrinterClass variable rather 
than alwas a TPrinter.
Set PrinterClass to TPrinter in the unit initialization.

Area: vcl\property\type editors

Reference Number: 1232 (Published: 10/23/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/26/98
Severity: Critical
Type: Crash

Problem:

Using drag-drop on the TField property editor can 
hang the IDE.

Steps:

1. File | New Application
2. Drop a TTable and connect it to any .DB file
3. Bring up the fields editor for the TTable and add 
all fields
4. Drag one of the fields to a new position within the 
fields editor.

 Notice that your mouse is stuck in a constant drag 
state causing you to have to terminate the IDE.

Area: vcl\property\type editors

Reference Number: 1108 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/13/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The DBGrid column editor has lost it's move 
up/down buttons which are rather essential to 
changing the order of columns on the grid.  These 
need to be put back.

This should be fixed in the inline.

Area: vcl\property\type editors

Reference Number: 1219 (Published: 10/23/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/25/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

TIntegerProperty does not handle LongWord 
properly.


Area: vcl\property\type editors

Reference Number: 583 (Published: 11/13/98)
Status: Deferred to Next Rel
Date Reported: 5/27/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

TListView Columns Editor has enabled arrow 
buttons when they are inappropriate

Steps:

 1) Drop TListView component on a form
 2) Add column
You will see up and down arrows enabled
 3) Add further columns 
 4) click on first or last column - each should show 
just one hilighted button

Area: vcl\property\type editors

Reference Number: 739 (Published: 12/15/98)
Status: Deferred to Next Rel
Date Reported: 6/15/98
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

Collection Editor's toolbar  have problem.

Steps:

1. Create new application from Delphi IDE.
2. Drop ActionList component into Form1.
3. Click a ActionList1 and select "Action List Editor" 
from popup menu.
4. Click right mouse button and select "Text Label" 
from popup menu in ActionList Editor
5. Buttons in Toolbar will change to bigger mode.
6. Click a edge of toolbar and "Panel description"
7. Toolbar's button will shrink.

Area: vcl\registry \ ini objects

Reference Number: 401 (Published: 12/3/98)
Status: Deferred to Next Rel
Date Reported: 3/27/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

TRegistry.ReadString doesn't raise an exception 
when the string isn't found. According to the docs it 
should.

This may cause other problems if there are other 
components or code that depends on this 
behaviour.

Steps:

Read a non-existing string value using 
TRegistry.ReadString.
It won't raise an exception as documented.

Area: vcl\services

Reference Number: 674 (Published: 12/15/98)
Status: Deferred to Next Rel
Date Reported: 6/9/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Creating a simple NT Service with a COM Property 
and timer driven beep doesn't work. The COM 
client seems to start a new copy of the service 
instead of using the running service.

Even when starting the service from the SCM it 
doesn't seem to work.  I used both Dispatch and 
COM interfaces.

Steps:

Create a new NT Service.
Add a timer and have it beep every five seconds
Add a Automation Object to the service. (Multi 
Instance, Single threaded)
Add a MyValue property (integer)
Install the service.
Create the client 
Creating the COM object causes another copy of 
the service to start.

Area: vcl\services

Reference Number: 1424 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 9/25/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

setting the Interactive property to true makes it so 
that the service will not start on login.

Steps:

1.  Create a new TServiceApplication
2.  in the OnExecute do this (turn speakers down or 
it will get annoying)
  while not terminated do begin
    beep;
    sleep(500);
    ServiceThread.ProcessRequests(False);
  end;
3.  Install the Service.
4.  Start the Service. (Make sure that the start type 
is stAutomatic)
5.  Start button | Shutdown |  "Close all programs 
and log on as a different user" option
6.  Notice that the service is still beeping the whole 
time the system is logging out.
7.  Log back in as the same user.
8.  Reopen project.
9.  Uninstall the service.
10.  Change the Interactive property of the 
TService to true.
11.  Repeat steps 3-5.  Notice that the service 
stops beeping when logging out.
12.  After logging back in, check the Service 
Control Manager and look at the service.  It still 
states that the start type is Automatic, but it is not 
started.  Also, note that you may start it manually 
with no problems.




Area: vcl\services

Reference Number: 490 (Published: 11/12/98)
Status: Deferred to Next Rel
Date Reported: 5/11/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

TService.LogMessage don't log correct message.

Calling  LogMessage( 'xxx' ) will be logged in 
EventViewer 'The description for Event ID ( 0 ) in 
Source ( Service1 ) could not be found. It contains 
the following string(s): xxx'

Steps:

1. Create new "Server application" 
2. Double click on Service1.AfterInstall
3. Enter following code

procedure TService1.ServiceAfterInstall(Sender: 
TService);
begin
  LogMessage( 'xxx');
end;

4: Build, and Install this service application into NT
5. Execute this application from control panel
6. Check event by Event Viewer.
7. Logged message is incorrect.

Area: vcl\services

Reference Number: 1163 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/20/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

Creating a service application and running as an 
NT Service, code in the OnShutDown method 
never gets executed.

Area: vcl\standard controls\tactionlist

Reference Number: 584 (Published: 11/13/98)
Status: Deferred to Next Rel
Date Reported: 5/27/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The Code assigned to the OnExecute method of a 
TEditCopy, TEditPaste, or TEditCut (Standard 
Actions) will not fire when right clicking in a TEdit 
and selecting Cut, Copy or Paste from the menu 
options.

Steps:

1. File | New Application.
2. Drop a TEdit and a TActionList on Form1.
3.  DoubleClick on the TActionList to bring up its 
Action Editor.
4.  Create a new action (Category : Edit, Action : 
TEditCopy, TEditPaste, TEditCut).
5.  assign code to the OnExecute Event(Such as a 
MessageBeep).
6.  Run the application.
7.  select text in the TEdit, RightClick in the TEdit, 
and select Cut Copy or Paste (depending which 
actions you've created).
8.  The Action OnExecute does not fire.  
9.  CTRL+C, CTRL+V, CTRL+X do fire the 
OnExecute of the Action when text is highlighted in 
the TEdit.

Area: vcl\standard controls\tactionlist

Reference Number: 661 (Published: 11/19/98)
Status: Deferred to Next Rel
Date Reported: 6/8/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Actions are not serviced the way they should. It 
takes an extra mouse/keyboard event to get the 
Action's OnUpdate handler to fire.

Steps:

1. Drop a TButton on a form
2. Drop a TCheckBox on the form
3. Drop a TActionList on the form
4. Add an action to the TActionList
5. Set the button's action property to this action
6. Write this code as the action's OnUpdate 
handler:

Action1.Enabled := CheckBox1.Checked;

7. Run the application
8. Focus the checkbox with the tab key
9. Press space to check the checkbox

The button is not enabled until you move the mouse 
or press a key (other than space).

Area: vcl\standard controls\tactionlist

Reference Number: 752 (Published: 12/15/98)
Status: Deferred to Next Rel
Date Reported: 6/15/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Cannot override Action's caption with a blank string 
on associated controls.

Steps:

Drop a TActionList add a standard action.
Drop a button.
Associate it with the action.
Clear the caption property on the button.
Toggle view as text/form.
Note the blank caption is now lost.

Area: vcl\standard controls\tactionlist

Reference Number: 897 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/7/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Seems like Action names are created by stripping 
out all invalid characters (like accented characters) 
and using them as component names.

This causes problems with translated versions. 
Taking out all the accented characters of german 
strings make the whole word incomprehensible.

We need a better way to create the 
component/action name.

Steps:

- use german delphi4
- drop an ActionList component on a form
- doubleclick it
- right click in the editor and select New Standard 
Action
- select all the actions and press ok
- see names under Actions
-- > Note that a lot of the german names don't 
make any sence, like Lschen1, Nchster1, 
Schlieen1,....

Area: vcl\standard controls\tactionlist

Reference Number: 387 (Published: 12/2/98)
Status: Deferred to Next Rel
Date Reported: 3/18/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

Duplicate pickletter in the ActionList editor.   'T' is 
used in Cut and Toolbar.

Steps:

- Drop in an ActionList onto a form

- Double click to open the Action List

- Right click on the actions and note the pickletters 
in the popup menu

Area: vcl\standard controls\tactionlist

Reference Number: 634 (Published: 11/19/98)
Status: Deferred to Next Rel
Date Reported: 6/4/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

Changing a TToolButton's Action from one to 
another doesn't correctly repaint its bitmap.

Steps:

Set up two toolbuttons and two corresponding 
tactions.

Turn on toolbar.showcaptions and flat.  Turn off 
toolbar.edgeborders and edgeinner,edgeouter.

Set the images property of the toolbuttons' toolbar 
to reference a TImageList and the the imageindex 
of the two tactions to reference bitmaps in it.

Both buttons should now display bitmaps.

Now, change toolbutton1's action property to 
toolbutton2's action (action2).  Action2's bitmap is 
erroneously displayed _on top_of the old Action1 
bitmap.

Area: vcl\standard controls\tactionlist

Reference Number: 1212 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/22/98
Severity: Serious
Type: Unknown

Problem:

TBasicAction.Execute is dynamic, but it should be 
virtual.

Steps:

There is no reason for TBasicAction to have any 
dynamic methods. It has too few derived classes for 
dynamic to be of any use. Also, TContainedAction 
and TCustomAction override Execute, thereby 
eliminating any theoretical benefit dynamic could 
provide.

Area: vcl\standard controls\tactionlist

Reference Number: 320 (Published: 11/12/98)
Status: Deferred to Next Rel
Date Reported: 2/17/98
Severity: Commonly Encountered
Type: Unknown

Problem:

When a menu item or a button references a 
command list item it does not use the imagelist 
specified in the command list properties but rather 
the one for the toolbar or menu that contains the 
button or menu item.  What if there are multiple 
command lists referencing different image lists?

Area: vcl\standard controls\tactionlist

Reference Number: 427 (Published: 12/8/98)
Status: Deferred to Next Rel
Date Reported: 4/9/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

Since the default action for the standard dataset 
actions are based on which control has focus, it is 
not possible to use something like a button to fire 
the event if you use more than one dataset.

For example, if you have two dbgrids and want to 
use buttons for Next and Prior, only the first dataset 
will receive the actions.

Steps:

- Drop in two TTables, TDataSources and 
TDBGrids - hook up as appropriate

- Drop in a TActionList and add two standard 
actions, DataSetNext and DataSetPrior

- Drop in two TButtons and attach the next and 
prior actions

- Run the form and click on the next and prior 
buttons, click on the second grid and try the next 
and prior again.  

Note: the first grid will get the Next and Prior 
actions.

The workaround for this is to use components that 
do not get focus, such as TSpeedButton 

Area: vcl\standard controls\tactionlist

Reference Number: 1479 (Published: 10/28/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 10/1/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

IDE Bug in ActionList component editor.
If the ImageList connected to the ActionList is not 
standard size (16x16) an error occurs when you try 
to add standard actions.

Steps:

Create a new form.
Add an ImageList. Set its size to 32x32.
Add an ActionList.
Connect the ImageList to the ActionList.
Now edit the ActionList and add some standard 
actions that have bitmaps.


Area: vcl\standard controls\tcheckbox

Reference Number: 544 (Published: 11/12/98)
Status: Deferred to Next Rel
Date Reported: 5/22/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The Color of the CheckBox control cannot be set to 
clWindow. This value is not saved (not persistent) 
although the system will set the ParentColor to 
False!

Area: vcl\standard controls\tcombobox

Reference Number: 1489 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 10/2/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

The TCustomComboBox.OnChange does not work 
as described. The on-line help says "Occurs when 
the text displayed in the edit region changes." 
However, it actually only occurs when the _user_ 
changes the text. If the _program_ changes the 
text, it does not occur. I suggest that the online help 
be changed to more clearly reflect the actual 
behavior.

Steps:

Create a new application with a combobox and 
button. Create
OnClick and OnChange event handlers as shown in 
the code 
sample. Run the program and click the button. The 
text in
the combobox will change by the OnChange event 
of the combo 
box will not be triggered.

sample code:

procedure TForm1.ComboBox1Change(Sender: 
TObject);
begin
  ShowMessage('The text changed');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Combobox1.Text := 'New Text';
end;

Area: vcl\standard controls\tcombobox

Reference Number: 207 (Published: 7/22/98)
Status: Fixed in Version 4.0
Date Reported: 10/29/96
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

TCombobox.Focused always returns false, since it's 
the edit control "inside" the combobox which is 
focused.  TCustomCombobox needs to override 
TWinControl.SetFocus since it is not a single 
control.

Steps:

Drop a 2 buttons and a combobox on a form.
In Button1's onclick add:

Button2.SetFocus;
if Button2.Focused then 
  Button2.Caption := 'Focused';
Combobox1.SetFocus;
if Combobox1.Focused then 
  Combobox1.Text := 'Focused';

Run, poke Button1.

Area: vcl\standard controls\tcombobox

Reference Number: 595 (Published: 11/19/98)
Status: Deferred to Next Rel
Date Reported: 5/28/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

TCombobox does not respond correctly to changes 
in "ItemHeight" at design time.

When Style is set to csOwnerDrawFixed or 
csOwnerDrawVariable, changes to ItemHeight do 
not cause the control to be redrawn. If you force 
the control to be recreated (by toggling Ctl3d 
property) the height becomes what was specified.

Steps:

1. Drop a TCombobox control on a form.

2. Set the Style property to csOwnerDrawFixed

3. Set the ItemHeight property to 50. Note the 
control doesn't change height.

4. Toggle the Ctl3d property. Note the control's 
height has now grown correctly.

Area: vcl\standard controls\tcombobox

Reference Number: 835 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 6/23/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

A TComboBox on page one of a TPageControl 
assumes the color of controls
on page two when you toggle from page one to 
page two. 

Steps:

It can be reproduced by:
1. Placing a two page TPageControl on a form
2. Placing a TComboBox on page one with a few 
items (ie. 1,2,3,4,5)
3. Placing the following code in the onEnter event 
of the TComboBox:
    TComboBox(Sender).DroppedDown := True;
4. Placing the following code in the onShow event 
of the TForm:
    ComboBox1.SetFocus;
5. Placing a panel on page two and setting its 
alignment to client and
color to red.
6. Executing the program and toggling between 
page 1 and page 2.

Area: vcl\standard controls\tedit

Reference Number: 1240 (Published: 8/27/98)
Status: As Designed
Date Reported: 8/27/98
Severity: Infrequently Encountered
Type: Basic Functionality Failure

Problem:

TEdit.Height doesn't get honored.

Steps:

1. File | New app
2. Drop a TEdit
3. Change the Height of the TEdit
4. Run
5. You'll see the default height, not the one you 
specified...

Area: vcl\standard controls\tlabel

Reference Number: 376 (Published: 11/30/98)
Status: Deferred to Next Rel
Date Reported: 3/12/98
Severity: Commonly Encountered
Type: Documentation Problem

Problem:

The color property of a label set to clWindow reset 
during streaming to clBtnface.

Steps:

Changing the color of a label to clWindow then cut 
it off the form and paste it back. The Color property 
is changed to clBtnFace.

Area: vcl\standard controls\tlistbox

Reference Number: 618 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 6/2/98
Severity: Serious
Type: Crash

Problem:

Setting Width of a TListbox to 2 when the Columns 
property > 0 causes Delphi to crash.

This situation can occur when using a list box (or 
descendant) that is resized with a splitter.  

Steps:

Start a new project.
Drop a TListbox on the form.
Change the Columns property to 2 for example.
Set the Width of the list box to 2.
Delphi Crashes.

Area: vcl\standard controls\tlistbox

Reference Number: 862 (Published: 8/4/98)
Status: Fixed in Version 4 Update Pack 1
Date Reported: 7/1/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Can't set ItemIndex to 0 unless the ItemIndex is 
already > 0.

Apparently the control is created with it's internal 
item index = 0, and also the LB_RESETCONTENT 
message sets it to zero.

Steps:

Drop a listbox on a form, add a few items to it.
drop a button on the form, in OnClick:
  Listbox1.ItemIndex := 0;
Run.
Click the button. Nothing happens.
click on the 2nd item in the listbox.
Click the button. 1st item is properly selected.

Area: vcl\standard controls\tlistbox

Reference Number: 953 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 7/14/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

String matching capabilities of listbox failing to set 
the itemIndex properly

Steps:

1. Create a new app, drop a TListBox, TEdit on the 
form.
2. Add a few items to the Listbox(ie, "One", "Two", 
"Three")
3.  Assign code below the OnChange handler to the 
edit box.

ListBox1.ItemIndex :=   
ListBox1.Items.IndexOf(Edit1.Text);

When you type into the edit control it should select 
the appropriate item from the listbox when a match 
occurs.  This works perfectly with all previous 
versions of Delphi, but works sporadically with 
Delphi 4.  Delphi 3 even matches regardless of 
case where Delphi 4 will only match item two (the 
word "Two") as "two"...  Possible logic problem in 
source in stdctrls.pas, at line 3461:

function TCustomListBox.GetItemIndex: Integer;
begin
  if not MultiSelect then
    Result := SendMessage(Handle, 
LB_GETCARETINDEX, 0, 0) else
    Result := SendMessage(Handle, 
LB_GETCURSEL, 0, 0);
end;

procedure TCustomListBox.SetItemIndex(Value: 
Integer);
begin
  if GetItemIndex < > Value then
    if MultiSelect then
      SendMessage(Handle, LB_SETCARETINDEX, 
Value, 0) else
      SendMessage(Handle, LB_SETCURSEL, 
Value, 0);
end;

notice the  logic for choosing between 
LB_GETCARETINDEX/LB_GETCURSEL and 
LB_SETCARETINDEX/LB_SETCURSEL.  It's 
correct in SetItemIndex, but incorrect in 
GetItemIndex (it's reversed in the latter routine).

Area: vcl\standard controls\tmainmenu

Reference Number: 555 (Published: 11/13/98)
Status: Deferred to Next Rel
Date Reported: 5/23/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

Menus in MDI Apps

With a MDI child window maximized changing a top 
level in any way causes the child window's caption 
icon and minimize, maximize and close buttons to 
disappear.

Area: vcl\standard controls\tmainmenu

Reference Number: 412 (Published: 12/3/98)
Status: Deferred to Next Rel
Date Reported: 3/31/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

Owner drawn sub-menu items which are disabled 
aren't drawing their children indicator marks (a little 
> arrow ) as disabled.

Steps:

- Run Delphi.
- File | Close All
- Select the Edit menu
- Flip Children menu item is not disabling.

Area: vcl\standard controls\tmainmenu

Reference Number: 879 (Published: 12/18/98)
Status: Deferred to Next Rel
Date Reported: 7/7/98
Severity: Serious
Type: Minor Functionality Failure

Problem:

Typo in dialog 
String "Datei-Menü (für Textedit Beispeil)"

"Beispeil"
should be
"Beispiel"

Steps:

- drop a TMainMenu component on a form
- doubleclick it
- right click on the menu designer
- select 'Aus Vorlage einfügen'

Area: vcl\standard controls\tmainmenu

Reference Number: 1003 (Published: 12/18/98)
Status: Deferred to Next Rel
Date Reported: 7/21/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The following problem seems to have existed since 
Delphi 1:

Keyboard shortcut references do not show in 
menus unless they are in the first column.

Steps:

 1) Add a mainmenu to a new project
 2) Add the 'File' menu template to it
 3) Add a keyboard short cut of Ctrl-P to the Print 
item
 4) Run the app & click on the menu - it shows 
Ctrl-P
 5) Now set the Print menuitems Break property to 
mbBreak
 6) Run again - no shortcut reference shown

Area: vcl\standard controls\tmainmenu

Reference Number: 1494 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 10/3/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

There is a bad bug in TMainMenu. If the 
OwnerDraw property of the TMainMenu is set to 
TRUE the main menues are drawn incorrect, if you 
haven't a 8 point font selected in the Win95 
Displayproerties as Menufont.

FYI, This is tested on a Win98 system. 

Steps:

1. Open the Win95 Display Property Dialog and set 
your Menufont to any other font than MS SansSerif 
8 point (as sample  Verdana 10 point)
2. Palce a TMainMenu coponent to a form
3. Add some menues to it. (File, Edit, View... and 
some Subitems to every mainmenu)
4. Set OwnerDraw of the TMainMenu to True.
5. Eventually can you see the false pating now, 
else you must run the program. 

Now the mainmenues are drawn to small and  they 
are overlapped. and they look false. (no 3D border 
as in Win98 on selected mainmenues)

Area: vcl\standard controls\tmainmenu

Reference Number: 881 (Published: 8/11/98)
Status: Deferred to Next Rel
Date Reported: 7/7/98
Severity: Infrequently Encountered
Type: Crash

Problem:

Access violation in menu designer when doing what 
is mentioned in steps.

I get all kind of error messages, sometimes AV in 
vcl40.bpl or coride.bpl, sometimes Illegal Pointer 
operation, when inserting templates in the menu 
designer. It's hard to reproduce them.

The steps should describe a save way to reproduce 
the bug

Steps:

1 drop a MainMenu component on a form
2 doubleclick it
3 right click on the first field, select Insert
4 set the focus to the first item that gets created 
(looks like a button)
5 right click and select 'Insert from Template'
6 select any Template
-- > a submenu gets created
7 now set the focus to the very top and left menu 
item
8 press delete
-- > everything gets deleted, designer looks like 
when it was started up
10 repeat step 3 to 6 
-- > error message


Area: vcl\standard controls\tmainmenu

Reference Number: 1126 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/15/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

Cannot set groupindex if multiple menu items 
selected.

I discovered this when trying to recover from bug 
from my previous report.

The check should exclude selected items when 
comparing the new groupindex with items following.

Area: vcl\standard controls\tmemo

Reference Number: 1488 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 10/2/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The Anchors property of VCL controls (specifically 
TMemo) does not work properly when the 
WindowState property of the form, upon startup, is 
set to wsMaximized.  The akRight and akBottom 
elements if the Anchors property seem to be 
ignored.  This only seems to happen if the form is 
Created/Shown with WindowState set to 
wsMaximized.  If you start with wsNormal, then 
change to wsMaximized in the OnShow event, the 
problem is avoided.

Steps:

Create a new application.  Drop a TMemo on the 
form.  Set the Anchors property of the TMemo so 
that akLeft, akTop, akRight, and akBottom are all 
true.  Set the WindowState property of the form to 
wsMaximized.  Run the program.  Notice that the 
TMemo does not expand in size as the form does.
To see the work-around... Set the WindowState of 
the form back to wsNormal.  Add an OnShow event 
handler which sets WindowState to wsMaximized.  
Run the program.  Notice that the TMemo DOES 
expand in size as the form does.

Area: vcl\standard controls\tpanel

Reference Number: 672 (Published: 12/15/98)
Status: Deferred to Next Rel
Date Reported: 6/9/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

Setting Panel to alBottom can set Height=0

Steps:

 1) New application
 2) Drop two panels on the form
 3) Select both panels and set alBottom
 4) Select Panel1 in Object Inspector and you will 
see Height=0

Area: vcl\standard controls\tradiogroup

Reference Number: 1436 (Published: 12/17/98)
Status: Deferred to Next Rel
Date Reported: 9/26/98
Severity: Infrequently Encountered
Type: Minor Functionality Failure

Problem:

(Update 2)

A group of MenuItems with RadioItem=True do not 
act like radio buttons at design time - you can set 
more than one of the as checked

Steps:

 1) Add several menuitems to a menu
 2) Select the new items and set GroupIndex:=1 
and RadioItem:=True
 3) Set the checked property of one of the items
 4) Set checked for a second item and the first item 
still shows the bullet

Area: vcl\standard controls\tscrollbar

Reference Number: 479 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 5/8/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

On Windows95, PageSize property doesn't work 
correctly. On Windows NT 4, no problem.

Note:
  ScrollInfo.cbSize is not set in 
TScrollBar.SetPageSize.  I believe that this is the 
reason.

Steps:

On Windows95
1. Open attached project
2. Run project
3. Push buttons
4. Thumb size doesn't change

Area: vcl\standard controls\tscrollbar

Reference Number: 1201 (Published: 10/22/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 8/24/98
Severity: Serious
Type: Basic Functionality Failure

Problem:

TScrollBar doesn't seem to stream the PageSize 
property out correctly. When you set 
TScrollBar.PageSize at design time and then run 
the app the PageSize is windows default again.

Steps:

1. File | New Application.
2. Place a TScrollBar on the form.
3. Using Object Inspector set PageSize = 50.
4. Run the application.
5. The size of the thumb tab on the scroll bar isn't 
50

Area: vcl\standard controls\tscrollbar

Reference Number: 650 (Published: 10/15/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 6/7/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

The VertScrollBar and HorzScrollBar.ButtonSize 
can't be reset to it WIn95 default after it value has 
changed. If we set it back to 0 it should set to the 
default size. 

Steps:

1. Place some compnents on a TForm
2. Resize the form so it is smaller the the 
components. Scrollbars are now displayed.
3. Set HorzScrollBar.ButtonSize to 50
4. Set HorzScrollBAr.ButtonSize back to 0

The default value isn't set.

Area: vcl\standard controls\tscrollbar

Reference Number: 1398 (Published: 10/28/98)
Status: Fixed in Version 4 Update Pack 2
Date Reported: 9/23/98
Severity: Commonly Encountered
Type: Basic Functionality Failure

Problem:

TControlScrollBar.Size has the same problem 
resetting to default that ButtonSize. 

Area: vcl\standard controls\tscrollbar

Reference Number: 1578 (Published: 12/21/98)
Status: Deferred to Next Rel
Date Reported: 10/16/98
Severity: Commonly Encountered
Type: Minor Functionality Failure

Problem:

Validation check for TScrollBar.PageSize property 
is incorrect.

Area: vcl\standard controls\tscrollbar

Reference Number: 1213 (Published: 12/16/98)
Status: Deferred to Next Rel
Date Reported: 8/24/98
Severity: Commonly Encountered
Type: Unknown

Problem:

In the following code, the OnMouseUp event does 
not work with the left mouse button

TNewScrollBar = class(TScrollBar)
  private
  published
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
  end;

Steps:

if you create this new component and use F8 to 
step through
each line of code, the OnMouseUp event occurs.  
If you run
the program in the debugger, it