WinCreateStdWindow, Client and Frame question - OS2

This is a discussion on WinCreateStdWindow, Client and Frame question - OS2 ; Hello, in the WDsibyl library (an OS/2 Delphi clone), default forms (=windows) are not created via WinCreateStdWindow which generates a frame and a client window simultaneously. Instead, the frame window is created first by WinCreateWCWindow and then the client window ...

+ Reply to Thread
Results 1 to 5 of 5

Thread: WinCreateStdWindow, Client and Frame question

  1. WinCreateStdWindow, Client and Frame question

    Hello,

    in the WDsibyl library (an OS/2 Delphi clone), default forms
    (=windows) are not created via WinCreateStdWindow which generates a
    frame and a client window simultaneously. Instead, the frame window is
    created first by WinCreateWCWindow and then the client window is
    created by WinCreateWindow. I cannot see how the two handles are
    connected to each other. Generally, the code works, but there is one
    problem: When leaving an application with several windows, the window
    rests in the switch list (shown by mole.exe, for example) once in a
    while, but the WPS window list does not show them. In consequence,
    shutdown hangs.

    I assume that an incorrect client/frame connection forces these
    problems and I have to reprogram the code with one CreateStdWindow
    call. Before doing that, I want to ask

    (1) is it allowed to split the window creation in two api calls for
    frame and client window?

    (2) is it possible to connect the frame with client and reverse after
    a separate creation?

    For WSsibyl programmers: the code is part of forms.pas, procedure
    tControl.CreateWnd for the client and tFrameControl.CreateWnd for the
    frame. tFrameControl.CreateWnd gets executed from tControl.CreateWnd,
    which gets executed from tControl.Show, if the handle does not exist.

    Martin Vieregg


  2. Re: WinCreateStdWindow, Client and Frame question

    info@hypermake.de schrieb:
    > Hello,
    >
    > in the WDsibyl library (an OS/2 Delphi clone), default forms
    > (=windows) are not created via WinCreateStdWindow which generates a
    > frame and a client window simultaneously. Instead, the frame window is
    > created first by WinCreateWCWindow and then the client window is
    > created by WinCreateWindow. I cannot see how the two handles are
    > connected to each other. Generally, the code works, but there is one
    > problem: When leaving an application with several windows, the window
    > rests in the switch list (shown by mole.exe, for example) once in a
    > while, but the WPS window list does not show them. In consequence,
    > shutdown hangs.
    >
    > I assume that an incorrect client/frame connection forces these
    > problems and I have to reprogram the code with one CreateStdWindow
    > call. Before doing that, I want to ask
    >
    > (1) is it allowed to split the window creation in two api calls for
    > frame and client window?


    Yes, just make sure that the frame's parent is the desktop and the
    frames owner is NULLHANDLE, the client's parent as well as owner is the
    frame window.

    >
    > (2) is it possible to connect the frame with client and reverse after
    > a separate creation?


    Yes, but that would be unnecessary. A destroy call to the parent will
    also destroy all children and below. But you have to make sure that you
    ONLY destroy the frame (which is the topmost parent) and NOT destroy any
    children beforehand (before the frame is destroyed). I think PM does not
    like that. By only destroying the frame that call will propagate down
    recursively to all lower windows/children and PM will be able to keep
    track of what window handles become invalid.

    >
    > For WSsibyl programmers: the code is part of forms.pas, procedure
    > tControl.CreateWnd for the client and tFrameControl.CreateWnd for the
    > frame. tFrameControl.CreateWnd gets executed from tControl.CreateWnd,
    > which gets executed from tControl.Show, if the handle does not exist.
    >
    > Martin Vieregg
    >


  3. Re: WinCreateStdWindow, Client and Frame question

    On 7 Jul., 13:17, Lars Erdmann wrote:
    > But you have to make sure that you
    > ONLY destroy the frame (which is the topmost parent) and NOT destroy any
    > children beforehand (before the frame is destroyed). I think PM does not
    > like that


    That's it!!! After changing the order of destroying frame and client
    (frame first), the problem has been solved. Thank you! The next
    WDsibyl update will have this bug fixed.

    Martin Vieregg


  4. Re: WinCreateStdWindow, Client and Frame question


    schrieb im Newsbeitrag
    news:1183929742.458671.181580@57g2000hsv.googlegro ups.com...
    > On 7 Jul., 13:17, Lars Erdmann wrote:
    >> But you have to make sure that you
    >> ONLY destroy the frame (which is the topmost parent) and NOT destroy any
    >> children beforehand (before the frame is destroyed). I think PM does not
    >> like that

    >
    > That's it!!! After changing the order of destroying frame and client
    > (frame first), the problem has been solved. Thank you! The next
    > WDsibyl update will have this bug fixed.


    As I said, once you destroy the parent (frame), all descendents (client,
    titlebar, etc.) will be destroyed automatically. No need to manually destroy
    the descendents.

    Lars



  5. Re: WinCreateStdWindow, Client and Frame question

    On a pleasant day while strolling in
    comp.os.os2.programmer.misc, a person by the name of
    info@hypermake.de exclaimed:
    > Hello,
    >
    > in the WDsibyl library (an OS/2 Delphi clone), default forms
    > (=windows) are not created via WinCreateStdWindow which generates a


    Hello Martin, as you know Newview uses libraries from
    the same base, and I don't think anybody ever reported
    this problem, BUT I might have fixed it already ... I
    did a lot of fixes to the Sibyl libraries.

    Hm, yes. Forms.pas rev 1.39

    - Rearranged order of frame window destruction so it can
    be counted accurately. Destroying the frame first
    results in the control (form) window itself being
    destroyed automatically by PM; to enable accurate
    tracing/counting of calls now do it separately

    I have 60 revisions of forms.pas alone ... what a pity
    WDSibyl decided to rearrange all the units so merging
    became difficult


    Archive File: Z:\Sibyl\SPCC\FORMS.PAv

    Rev 1.60: AARONL 8/05/2005 17:54:48
    File modification date: 8/05/2005 17:33:46
    Labels: v2.1.11.13
    When focussing a control, set activecontrol on all forms
    in the window chain, not just immediate parent form.
    Makes it work when one form is inside another

    Rev 1.59: AARONL 8/05/2005 17:00:06
    File modification date: 1/05/2005 16:50:48
    Labels: v2.1.11.12
    Fixed TBitBtn to not crash if no mask is present.
    Merged Sibyl FP4 TControl.WMChar
    Removed change to setting cursor on mouse move. This
    doesn't really work either as the default mousemove sets
    the cursor and then we set it again, so there is a
    constant update which sucks up CPU.

    TCombobox, do incremental search for dropdown as well

    Rev 1.58: AARONL 27/02/2005 23:42:00
    File modification date: 27/02/2005 23:38:42
    Labels: v2.1.11.11
    Get application font before creating automatic forms so
    they inherit the right font!

    Rev 1.57: AARONL 27/02/2005 22:51:36
    File modification date: 27/02/2005 22:45:18
    Labels: v2.1.11.10
    Change the way custom cursors are handled for controls,
    so that you can override the cursor on subclassed
    (native) controls without breaking their other
    functionality e.g.

    TEdit - now changing the cursor doesn't prevent you from
    selecting text.

    Rev 1.56: AARONL 5/04/2004 00:15:20
    File modification date: 5/04/2004 00:13:52
    Labels: v2.1.11.5, v2.1.11.6, v2.1.11.7, v2.1.11.8,
    v2.1.11.9
    Some mucking with TMetafile; still doesn't scale
    "properly". Courtesy Martin
    Fix: in frame controls don't replace & with ~

    Rev 1.55: AARONL 1/04/2004 23:58:50
    File modification date: 1/04/2004 23:54:50
    Labels: v2.1.11.4
    Always focus first form tab control, on show... this was
    partly to fix the issue that after re-invoking a dialog,
    the form itself is typically the active control, since
    the other windows were destroyed (I think)
    Also it just makes sense.

    Rev 1.54: AARONL 31/03/2004 03:33:36
    File modification date: 31/03/2004 03:18:10
    Labels: v2.1.11.2, v2.1.11.3
    At form startup focus first tab control.
    Fixed some radio group issues.

    In tabbing, skip controls that respond to
    WM_FOCUSSING... saves effort

    Rev 1.53: AARONL 29/03/2004 01:35:26
    File modification date: 29/03/2004 00:24:06
    Labels: v2.1.11.0, v2.1.11.1
    Gave up trying to fix the Sibyl tab handling and re-
    wrote it. Now works properly, but some of the controls
    need updating......

    Rev 1.52: AARONL 27/03/2004 01:54:06
    File modification date: 27/03/2004 00:53:12
    Labels: v2.1.10.16
    keyboard navigation of radiogroup (not exactly standard)
    removed stuff that prevents tabbing/cursoring thru
    detail controls. makes no sense in general.
    tabsets draw themselves with a focus rect and can be
    focussed by clicking on same tab again

    Rev 1.51: AARONL 26/03/2004 23:29:26
    File modification date: 27/03/2004 00:23:00
    Labels: v2.1.10.15
    Third attempt to provide an override for Focus without
    actually changing the existing interface... using a
    message....

    Rev 1.50: AARONL 26/03/2004 23:13:04
    File modification date: 26/03/2004 23:59:44
    Labels: v2.1.10.14
    Hm... seems I can't even change the private members of
    tcontrol. ide problems.

    Rev 1.49: AARONL 26/03/2004 22:32:32
    File modification date: 26/03/2004 23:25:32
    Labels: v2.1.10.13
    OK, so setting the default when a button is focussed, is
    kind of good... this actually controls which control is
    fired when the enter key is pressed. We really need a
    separate property for "default at show"; but the easiest
    way to get that (considering that changing the tform
    interface is risky) is to just add a line of code during
    OnShow saying button.Default := true

    My previous focus change broke things quite badly. It
    assumed that any control with a child would not be
    focussed! Bzzt! Wrong!

    Now there is an alternative mechanism for controls to
    specify a child which should be focussed instead of the
    control itself - e.g multi-column listbox.

    Rev 1.48: AARONL 21/03/2004 21:41:30
    File modification date: 13/03/2004 23:40:50
    Labels: v2.1.10.11, v2.1.10.12
    Put in what I *think* is a fix for tabbing to detail
    controls.... ...

    Rev 1.47: AARONL 9/03/2004 00:56:46
    File modification date: 9/03/2004 00:54:40
    Labels: v2.1.10.9, v2.1.10.10
    Fixed bug in ShowTasklistEntries - amazing it hasn't
    shown up before now! Happened once by coincidence

    Rev 1.46: AaronL 28/12/2003 00:37:18
    File modification date: 28/12/2003 00:33:32
    Labels: v2.1.10.6, v2.1.10.7, v2.1.10.8
    Removed another redundant/incorrect call to popup menus

    Rev 1.45: AaronL 14/12/2003 17:02:36
    File modification date: 14/12/2003 16:58:22
    Labels: v2.1.10.5
    Handle WM_CONTEXTMENU so popup menus work as standard -
    respect buttons and keyboard settings in WPS Keyboard
    object. Also prevents popup when left button held down
    first, then right click - this is a shortcut for copy in
    some controls.

    Rev 1.44: AaronL 9/11/2003 18:49:20
    File modification date: 9/11/2003 18:45:30
    Labels: v2.1.10.4
    Fixed out by one bug in GenerateShortCuts, causing
    corrupted memory

    Rev 1.43: AaronL 3/11/2003 23:53:52
    File modification date: 3/11/2003 23:52:56
    Labels: v2.1.10.2, v2.1.10.3
    Sort TStringList using AnsiCompareText (case insensitive
    only). This makes it match listbox sorting
    Don't destroy app icon unless needed...?

    Rev 1.42: AaronL 25/10/2003 17:50:58
    File modification date: 25/10/2003 16:53:20
    Labels: v2.1.10.1
    Fixed what I think is a bug in GetClientRect - removed
    the special case for OS/2. Works better for me!

    Rev 1.41: AaronL 13/10/2003 02:13:22
    File modification date: 13/10/2003 01:11:32
    Labels: v2.1.9.2, v2.1.10.0
    Fix crash at shutdown - due to TScreen.DisposeWnd (maybe
    other things) referring to application??

    TApplication.Destroy now sets Application to nil

    Rev 1.40: AaronL 28/09/2003 21:45:24
    File modification date: 28/09/2003 21:40:56
    Labels: v2.1.9.1
    Fix crash in IDE due to component library freeing IDE
    screen object, etc

    Rev 1.39: AaronL 26/09/2003 01:20:58
    File modification date: 26/09/2003 01:07:00
    Labels: v2.1.9.0
    Fixed a variety of PM resource leaks.
    Also made some performance enhancements.
    - Destroy the Application, Clipboard, and other global
    objects at program shutdown!
    - Free form accelerator table when destroyed
    - Only load global form icon once, re-use for each form
    [My code]
    (was being loaded once for each form)
    - Free global form icon when application destroyed [My
    code]
    - Free application icon (but this is overriden by global
    form icon)
    - Destroy loaded pointers when application destroyed
    - Correctly destroy PSes for icon/bitmap canvases.
    - Free logical font created for each TCanvas
    - Make sure clip regions for canvases are destroyed
    - Fix - only release PSes for control canvases - not
    graphic canvases, those are destroyed by the graphic
    object itself
    - Fix - cannot DevCloseDC on DCs from WinOpenWindowDC,
    no point trying
    - Rearranged order of frame window destruction so it can
    be counted accurately. Destroying the frame first
    results in the control (form) window itself being
    destroyed automatically by PM; to enable accurate
    tracing/counting of calls now do it separately
    - Only query the system message queue once. Set a flag
    after that to remember we've done it. [My code]
    - Added code to prevent unnecessary GpiDeleteSetId calls
    when fonts haven't been created yet. But commented out
    for compatibility with IDE

    I believe this fixes all the resource leaks in normal
    operation.

    Rev 1.38: AaronL 24/09/2003 03:18:26
    File modification date: 24/09/2003 02:57:58
    Labels: v2.1.8.10
    Removed debugging for errors getting messages in invalid
    controls - that was due to calling processmessages at
    bad times

    Rev 1.37: AaronL 6/06/2003 00:07:56
    File modification date: 5/06/2003 23:58:46
    Labels: v2.1.8.6, v2.1.8.7, v2.1.8.8, v2.1.8.9
    Fix for IDE crash using components. Removed the formicon
    resourceid from TApplication and make it a global.

    !!! You CANNOT change any aspect of TApplication's data,
    INCLUDING private fields, because the component library
    is passed a pointer to the IDE's TApplication object and
    it therefore must be exactly the same structure.

    Rev 1.36: AaronL 18/04/2003 09:44:54
    File modification date: 18/04/2003 09:43:40
    Labels: v2.1.8.5
    Just updated the debug log to put in a separator and
    date/time when starting

    Rev 1.35: AaronL 17/04/2003 17:21:18
    File modification date: 17/04/2003 17:19:34
    Labels: v2.1.8.4
    Fixed a small memory leak in TApplication - it was never
    re-using command IDs for menu items. Resulted in the
    list expanding forever if you created and destroyed menu
    items dynamically.

    Unfortunately this does make menu creation an N^2
    algorithm but it's a very tight loop.

    Rev 1.34: AaronL 3/04/2003 21:57:48
    File modification date: 3/04/2003 21:56:14
    Labels: v2.1.8.2, v2.1.8.3
    Added debug code for detecting problem with keyup event
    getting to unknown window in newview.... only enabled if
    environment variable AARONS_DEBUG is set to something

    Rev 1.33: AaronL 2/04/2003 22:41:24
    File modification date: 2/04/2003 22:36:46
    Labels: v2.1.8.1
    Removed the PM utility functions added in 2.1.8.0, they
    prevent NewView from compiling - the compiler crashes!

    Sibyl windows now get a unique window class - Sibyl
    where is the Sibyl classname.
    e.g. a frame control is now "Sibyl TFrameControl".

    This is so that DragText can recognise particular sibyl
    windows.

    Also, removed the duplicated code in
    TFrameControl.GetClassData - most of it is now inherited
    from the base tcontrol method.

    Rev 1.32: AaronL 13/02/2003 22:30:08
    File modification date: 13/02/2003 22:29:50
    Labels: v2.1.7.2, v2.1.8.0
    Whoops! Fixed crash in CMEndModalState due to partially
    removing FModalParent stuff. Now it's all gone and good
    riddance.

    Rev 1.31: AaronL 31/12/2002 02:31:20
    File modification date: 31/12/2002 02:20:46
    Labels: v2.1.7.0, v2.1.7.1
    A workaround for the stupid Sibyl icon handling.
    - Set Application.FormIconResourceID to a the ID of a
    resource containing the icon you want to use for all
    forms. If specified, this overrides both any individual
    form icons loaded in the IDE (which crashes anyway) and
    the application icon.
    Using ID 1 seems to encourage the WPS to use it as well.

    Rev 1.30: AaronL 29/12/2002 15:16:02
    File modification date: 29/12/2002 15:13:04
    Labels: v2.1.6.1, v2.1.6.2
    Fix: allow repositioning of forms to work after first
    time they are shown! This was because while the frame
    exists, it's position is changed instead of the form
    itself, but then the CreateWnd method overwrites the
    frame position with the form's position.

    Rev 1.29: AaronL 29/12/2002 14:05:50
    File modification date: 29/12/2002 13:53:24
    Labels: v2.1.6.0
    Added TForm.ShowModal2 which takes an owner parameter,
    so that the modal dialog can be given the correct owner.

    The effect of this is:-

    1) in certain odd cases such as use of Object Desktop's
    multiple desktops feature, the Z order is correctly
    maintained.

    Unlike what I thought, this doesn't prevent OD from
    focussing the wrong window; that can still happen even
    with official PM modal dialogs However this makes it
    a bit more obvious that things have gone wrong since the
    window is in the background.

    2) this partially helps with controls such as TMemo that
    hide the selection when the app is deactivated but NOT
    when a modal dialog is showing ie. the window chain is
    still active. However, something is still defocussing
    the MLE so it doesn't properly work.

    So this is not that important, but nor is it a big
    change, so I thought I would check it in.

    Removed the confusing code that attempts to do this
    elsewhere (FModalParent)

    Rev 1.28: AaronL 18/12/2002 21:38:58
    File modification date: 18/12/2002 00:59:04
    Labels: v2.1.5.13
    Expose font reference and dereference functions so that
    other components can correctly manage fonts, and use
    these functions everywhere.

    Rev 1.27: AaronL 17/12/2002 21:56:44
    File modification date: 17/12/2002 20:39:14
    Labels: v2.1.5.12
    Don't set tasklist flag for forms that have a parent
    Doesn't seem to make any difference in practice.

    Rev 1.26: AaronL 12/12/2002 22:51:50
    File modification date: 12/12/2002 22:35:36
    Labels: v2.1.5.11
    Allow menufont to be nil. I don't yet know why this
    would be.

    Rev 1.25: AaronL 5/12/2002 03:09:26
    File modification date: 4/12/2002 01:51:28
    Labels: v2.1.5.8, v2.1.5.9, v2.1.5.10
    TFont.Width really returns the average char width, not
    the maximum

    Rev 1.24: AaronL 22/11/2002 22:21:46
    File modification date: 22/11/2002 21:36:22
    Labels: v2.1.5.6, v2.1.5.7
    Fixed problem with presentation parameters - sometimes
    they are removed (showed up as wrong colors in a
    notebook situation) and the Sibyl code did not cope with
    the fact that there might not BE valid pp's.

    Rev 1.23: AARONL 15/11/2002 16:19:20
    File modification date: 15/11/2002 16:08:12
    Labels: v2.1.5.4, v2.1.5.5
    Further improvements to bitmap masking
    - added disabled drawing. This uses new more new Raster
    Ops, and a new brush style bsHalfTone, defined in Forms
    - bug fix: update bitmap before testing to see if empty
    in TBitmap.SaveToStream

    Simplified button code a little; don't check for nil
    mask in masked drawing functions, that seems like
    overkill.

    As far as I can tell basic TBitBtn drawing is now
    complete

    Rev 1.22: AARONL 15/11/2002 12:09:28
    File modification date: 15/11/2002 11:55:28
    Labels: v2.1.5.3
    BitBtn now draws bitmap transparently so that it's
    correct when the color scheme is different.
    This involved finalising mask functions in TBitmap. Now
    there are functions to:
    - create a mask for a given color (.CreateMask)
    - create a mask, taking pixel 0,0 as the transparent
    color
    - take a copy of a bitmap with a given mask applied
    (CopyMasked)
    - draw a masked bitmap

    Seems a lot more complex than I wanted, oh well. Maybe I
    will just throw it away later.

    Removed the TBitmap.Update4Changes method, instead
    LoadFromBitmap calls update on the source bitmap - that
    seemed to be all that was missing. Note I already
    uncommented the Update call in TBitmap.SaveToStream in
    the last checkin.

    Rev 1.21: AARONL 11/11/2002 00:16:20
    File modification date: 11/11/2002 00:07:58
    Labels: v2.1.5.1, v2.1.5.2
    Bug fix for crashes when accessing other process'
    windows, and attempting to treat them as Sibyl windows -
    TScreen.GetControlFromPoint now checks that it is the
    owner process for a window before playing with it.

    This showed up as a crash when the TCoolbar2 even timer
    went off while mouse over another app, AFAIK.

    Rev 1.20: AARONL 10/11/2002 22:32:46
    File modification date: 9/11/2002 13:30:32
    Labels: v2.1.5.0
    Whooops! Fixed the system menu accelerator handling.
    Previously, all other accelerators (e.g. menu shortcuts)
    were being deleted! Now the system menu accelerators are
    appended to the custom list. One minor optimisation
    that's missing here is that a single accelerator could
    probably be used for all child windows...

    Added (fast) Assign and AddList methods to TList

    Rev 1.19: AARONL 7/11/2002 14:42:58
    File modification date: 7/11/2002 14:43:14
    Labels: v2.1.4.1
    Attempted to put in code to handle i18n, but could not
    get it to work in practice. The declarations of the
    strings are still there, but are not used.

    Make sure system menus use the system menu font; this
    mainly affects child forms

    Rev 1.18: AARONL 6/11/2002 15:40:58
    File modification date: 6/11/2002 15:39:48
    Labels: v2.1.4.0
    MDI child window system menu fixes. Use the correct (or
    at least, conventional) Ctrl + Fkey shortcuts. This
    involves:
    1 - removing the applications' message queue accelerator
    table (and remembering it for 3)
    2 - creating a new accelerator table for child windows
    3 - applying the standard or child accelerator table to
    each individual form frame window
    4 - remaking the child window system menu to document
    the new shortcuts (and remove the redundant Hide and
    Window list items)

    Rev 1.17: AARONL 4/11/2002 01:20:32
    File modification date: 4/11/2002 01:04:02
    Labels: v2.1.3.0
    Fixed initial window positioning;
    - first, don't use SWP_MOVE and SWP_SIZE at the same
    time as maximising; this sets it to maximised but also
    sizes and moves it immediately (I don't know why I ever
    thought otherwise).
    - instead, just maximise then set the restore position
    in the Window USHORTs.
    I tested more thoroughly this time!

    Also, exposed GetBorderWidth and GetBorderHeight
    functions for use in smart window positioning.

    Rev 1.16: AARONL 26/09/2002 01:47:16
    File modification date: 26/09/2002 00:35:34
    Labels: v2.1.1.7, v2.1.1.8, v2.1.2.0
    Two fixes:
    - when initially showing form, if maximising or
    minimising then also set the restore position (this is
    allowed, documented and works! amazing!) to the current
    form size+position
    - set outline to read-only since there are no events to
    support direct editing.

    Rev 1.15: AARONL 30/07/2002 22:59:52
    File modification date: 30/07/2002 22:45:30
    Labels: v2.1.1.6
    Fix memory leak - not freeing memory in
    ShowTaskListEntries

    Rev 1.14: AARONL 10/07/2002 23:37:26
    File modification date: 20/06/2002 22:16:42
    Labels: v2.1.1.3, v2.1.1.4, v2.1.1.5
    Fixes for track bar
    - dbl click to side of slider works as expected.
    - click and hold to side of slider steps by page size
    (as expected)
    - everywhere on the control is used to detect mouse
    events, not excluding the tick marks
    - always draw a final tick mark at max

    Font fix for main form - turn off parent font

    Rev 1.13: AARONL 19/06/2002 23:17:40
    File modification date: 19/06/2002 23:11:40
    Labels: v2.1.1.2
    Fix to prevent control font read from SCU from ignoring
    parentfont

    Rev 1.12: AARONL 3/06/2002 12:51:36
    File modification date: 18/02/2002 21:03:32
    Labels: v2.1.1.1
    Eek! Undid my previous change to add Application.Title.
    This causes a mismatch with the IDE code and therefore
    crashes when components are used in the IDE.

    Rev 1.11: AARONL 1/06/2002 17:49:28
    File modification date: 1/06/2002 17:27:28
    Labels: v2.1.1.0
    Implemented Application.Title property - currently used
    for generic message dialogs only (ShowMessage etc).

    Implemented an exception for when new page fails on a
    printer.

    Rev 1.10: AARONL 18/02/2002 22:01:02
    File modification date: 18/02/2002 21:03:32
    Labels: v2.1.0.2, v2.1.0.3
    OK, appears I was wrong about the TFrom.GetClientRect
    thing. It breaks things to do that.

    Rev 1.9: AARONL 17/02/2002 16:07:38
    File modification date: 17/02/2002 16:04:20
    Labels: v2.1.0.1
    Fixed TForm.GetClientRect to be consistent with
    TControl.GetClientRect - catering for FFirstShow

    Rev 1.8: AaronL 10/11/2001 19:20:24
    File modification date: 10/11/2001 19:17:56
    Labels: v2.0.7.0, v2.1.0.0
    Tab key did not respect csDetail in componentstate,
    hence you could e.g. focus the scrollbar in a grid

    Rev 1.7: AaronL 3/11/2001 17:42:20
    File modification date: 3/11/2001 17:35:30
    Labels: v2.0.5.2, v2.0.6.0
    I am a great big galoot.

    In 2.0.4.0 I changed private to protected. That was
    fine. What I also did was change TControl.SetEnabled to
    virtual. Bzzt! Wrong! That changes the virtual function
    table so that it no longer matches what the IDE was
    compiled with; and results in out-by-one function calls
    including (as it turned out) the CreateError method.
    Thus causing all components based on this SPCC to crash
    when inserted into a form using the IDE.

    So... SetEnabled will not be virtual anymore!

    Rev 1.6: AaronL 24/10/2001 21:41:12
    File modification date: 22/10/2001 21:28:28
    Labels: v2.0.5.1
    Some changes to how windows are shown so that if the
    window is set to maximized or minimised before being
    shown, it does actually show in the correct state.
    Previously it would ignore the state, though there was
    code to try and make it work.

    This is not done for Win32.

    I had to change it quite a bit to make this work
    including how the frame is shown, I'm not 100% confident
    it works in all cases. (FFrame.Show call used previously
    would seem to confuse things...)

    Rev 1.5: AaronL 22/10/2001 20:38:30
    File modification date: 22/10/2001 19:50:44
    Labels: v2.0.5.0
    Added an options property to TForm, containing two
    flags: TitleBar and TaskListEntry. These only take
    effect if done before the form's window is created (e.g.
    when parent is set)...

    Rev 1.4: AaronL 11/07/2001 23:02:14
    File modification date: 11/07/2001 22:06:44
    Labels: v2.0.4.0
    Changed all Private declarations to Protected; this
    should make it easier in future to build custom
    components.
    This lead to renaming TControl.Insert to InsertChild
    since Insert is a string utility function.
    Also, I made SetEnabled a virtual function. Why not?

    Rev 1.3: AARONL 15/01/2001 22:20:30
    File modification date: 15/01/2001 22:17:36
    Labels: v2.0.3.5, v2.0.3.6, v2.0.3.7
    Rewrote TCanvas.MnemoTextOut to do the underline of the
    shortcut char with a line, instead of changing font.
    It's simpler and looks better. This fixes up many
    controls such as bitmap button (TBitBtn), tab notebook
    etc.

    Slightly tidied LockDesktopWIndows and InputHook
    Also removed a few unused vars

    Rev 1.2: AARONL 5/01/2001 17:10:56
    File modification date: 5/01/2001 17:09:14
    Labels: v2.0.3.2, v2.0.3.3, v2.0.3.4
    Properly fixed tasklist handling for modal dialogs.
    Now the existing entries are hidden and restored after
    the dialog finishes. So, while a modal dialog is
    showing, there is only one tasklist entry, which
    correctly refers to the dialog window.

    Note this solution is quite different to the "fix" in
    Speedsoft Fixpack 4. That fix prevented modal dialogs
    from showing in the tasklist, but the existing entries
    were left and selecting them still incorrectly focussed
    the form in question, not the dialog.

    Also, the hook that detects clicks on other windows
    while a modal dialog is showing, now detects mouse
    button 2 and 3 clicks as well.

    Rev 1.1: AARONL 18/11/2000 19:23:26
    File modification date: 18/11/2000 19:13:08
    Labels: v2.0.3.1
    Fixed font dereferencing problem, causing crash after
    second activation of Font dialog (and probably other
    problems too).

    Rev 1.0: AARONL 18/11/2000 17:21:46
    File modification date: 21/05/1998 02:21:18
    Labels: v2.0.3
    This is the component library for Speedsoft Sibyl 2.0,
    Fixpack 3.



    --
    aaronl at consultant dot com
    For every expert, there is an equal and
    opposite expert. - Arthur C. Clarke

+ Reply to Thread