⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elv.txt

📁 上传个考勤系统,希望别人也能用.该代码只能算初级的东东,软件代码复用性不高,重复代码比较多.唯一感觉有点取鉴的可能就是端口和dll的连接,还有线程的使用,本想改一改,但是手头没有考勤机了,对应考勤机是
💻 TXT
📖 第 1 页 / 共 3 页
字号:
TdfsExtListView & TdfsEnhListView v3.72

Description:
  TdfsEnhListView is a list view control that provides enhanced functionality
    such as:
      * Automatic sorting of text, numeric, and date columns
      * Ability to automatically save and restore user column width settings
      * Owner drawing events
    This functionality does NOT require the updated COMCTL32.DLL from Microsoft.

  TdfsExtListView is a list view control that provides all functionality of
    TdfsEnhListView, plus provides access to the new features of the list view
    control found with MS Internet Explorer 4.0, et. al.  This functionality
    DOES require the updated COMCTL32.DLL from Microsoft.  The COMCTL32.DLL file
    must be version 4.72.xxx or later for all functionality in this component
    to work.  Earlier versions *may* work, but are not supported (i.e. don't
    email me if you aren't using the latest version of COMCTL32.DLL).


Installation:
  Delphi 1:
    * This component is not compatible with Delphi 1.

  Delphi 2, C++Builder 1:
    * Select the 'Component | Install' menu item.
    * In the Install Components dialog, click the Add button.
    * In the Add Module dialog, enter the full path name of the component's
      registration unit (the unit that ends with 'Reg.pas', i.e.
      'BrowseDrReg.pas') and click OK.
    * In the Add Module dialog, click OK.
    * The component library will be rebuilt and a new tab named 'DFS' will be
      available on the Component Palette.

  Delphi 3, 4, 5, C++Builder 3 & 4:
    * Do one of the following:
      + Create a new package by selecting File | New and choosing Package from
        the New tab in the dialog.
      + Open an existing package file.  I suggest you do this if you already 
        have a package that you like to use for small, third party components.
        I specifically have a package named "3rdParty.dpk" that I use for 
        small components that come from other people.  Or, if you are using
        several of my components, you might create a "DFS.dpk" package and 
        use it for all of my DFS components.
    * In the resulting package window, click the Add button.
    * In the Add dialog, on the Add Unit tab, enter the full path name of the 
      component's registration unit (the unit that ends with 'Reg.pas', i.e. 
      'BrowseDrReg.pas') and click OK.
    * You may want to add the other source files (*.pas) to the package as 
      well in the same manner as you did the registration unit.  While this is
      not required, not doing it will cause compiler warnings when the package
      is compiled.  The component will function fine either way, but I
      personally find the warnings very irritating and am not happy until 
      every compiler warning and hint is gone.  NOTE:  If you use C++Builder 3,
      do not install the other source units.  See Known Issuses section below.
    * If this package is new, or it has never been installed, click the 
      Install button in the package window.  If this package is already 
      installed in Delphi, click the Compile button.

  C++Builder 5 and up:
    * Perform the "Delphi 3 and up, C++Builder 3 and up" steps above, except
      for the last step (Compile or Install).
    * Select the package the component has been added to, and choose 
      Project | Edit Option Source to open the package options in the editor.
    * In the entry for PFLAGS, add the "-LUvcl50" option.  For example:
        <PFLAGS value="-$YD -$W -$O -v -JPHNE -M -LUvcl50"/>
    * Perform the final step from above, Compile or Install.
    * For Borland's official word on this situation, open the C++Builder help
      file and search the index for "dsgnintf.dcu" and see the "Compiling
      packages with DsgnIntf" section.

  Delphi 6 and up:
    * Perform the "Delphi 3, 4, 5, C++Builder 3 & 4" steps above, except
      for the last step (Compile or Install).
    * Add the DesignIDE package to the Requires list of the package into which
      the component is being installed.
    * Perform the final step from above, Compile or Install.
    * This is necessary because of changes to the design-time support units
      introduced in Delphi 6.  For complete information, see the Del6New.hlp
      file in your Delphi 6 Help directory.  In the index, search for
      "upgrade issues" and in the resulting list of topics, select the
      "DsgnIntf renamed and related changes" topic.

  Help File:
    Delphi 3:
      * Copy ELV.hlp and ELV.cnt to your Delphi\Help directory.
      * Edit the DELPHI3.CNT file and add the following line to the Index section:
          :Index Extended List View Reference =ELV.hlp
      * Delete the hidden Delphi3.Gid file.

    Delphi 2:
      * Copy ELV.hlp, ELV.kwf and ELV.cnt to your Delphi\Help directory.
      * Use the HelpInst tool included with Delphi to install the ELV.Kwf
        into Delphi\Bin\Delphi.Hdx file.


Redistributing COMCTL32.DLL:
  Microsoft used to have a really nasty redistribution policy about
  COMCTL32.DLL:  To redistribute it, you have to distribute Internet Explorer
  with your app.  Well, they've finally unpuckered a little bit (probably
  because enough people griped long and loud enough (like Ron Burk in his
  Windows Developer's Journal editorials and mail responses, THANKS RON!).
  Anyhoo, here are links where you can find official redistribution information,
  which is much more acceptable than it used to be:

    http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp

  There are links for the files themselves, as well as for Readme and End User
  License Agreement files.


Notes & Credits:
  * This component uses several types defined in the COMMCTRL unit when it can.
    If you add an event handler and then receive a compiler error about an
    unknown type, you likely need to add COMMCTRL to your unit's uses clause.
  * For the full documentation on all the new list view stuff as implemented in
    the latest COMCTL32.DLL, have a look at Microsoft's documentation at:
    http://www.microsoft.com/msdn/sdk/inetsdk/help/itt/CommCtls/ListView/ListView.htm#ch_listview
    Also, you can find information on all the updates to COMCTL32.DLL at:
    http://www.microsoft.com/msdn/sdk/inetsdk/help/itt/CommCtls/CommCtls.htm#book_cc
  * TestVM is a very good demonstration of virtual mode.  It was created by
    and is redistributed here by permission of John Newln.  I have made only
    small modifications for compatibility with the new 3.00 version.
  * The owner drawn header stuff is based on work sent to me by Rafal Smotrzyk
    <rsmotrzyk@mikroplan.com.pl>.  Many thanks to him.  He has included many
    other new features, but I got it at the time when I was trying to get this
    version out of beta. Because of that, I'm not incorporating the rest until
    after v3.00 is released as non-beta.  I'll then work his stuff into the next
    version.
  * The owner drawing and column images were originally implemented by Remi
    Sellem (RemiS@chemware.co.uk) and Mike Lindre (no address).  I only
    reworked them a little, integrated them into this component, and made a
    few changes to use the new Delphi 3 collection editor for ColumnsFormat and
    fixed a few bugs.  The original property editor (ExtColEd.pas) for this is
    provided for Delphi 2 users, but is not required at all for Delphi 3 usage.
  * There are some serious limitations that I did not realize when I first
    released the virtual mode feature.  If you are not using virtual mode
    (VirtualMode set to TRUE) then you need not be concerned.  These problems
    only affect virutal mode.  The problem is that since items are not stored
    by the list view, but rather provided as needed by an event handler, the
    Items property does not reflect the actual items in the list.  In fact,
    it is always empty.  Items.Count will return the proper number of items,
    but anything trying to use Items[x] will never get any valid data.  This
    affects several things, such as automatic drag and drop (DragMode =
    dmAutomatic), the Selected property and more.  This is because the
    implementation of TListView uses the Items property extensively.  I have
    tried to provide for this as best I can through methods like
    TdfsExtListView.ELV_GetNextItem that can be used in place of critical
    functions that no longer work because they rely on the Items property.  I
    suggest that you NOT use virtual mode unless you completely understand all
    of the issues that may arise from using it.
    UPDATE:  As of v3.60, this issue should be resolved if you use Delphi or
    C++Builder versions 4.0 or higher.  Previous versions still have the same
    limitations.


Known Issues:
  * OnGetImageIndex can give very strange results if you don't know how to use
    it.  If there is an index already assigned to the item, you should not
    change it here.  This will result in the index being asked for again, and
    that could lead to an infinite loop (albeit one where messages are still
    being processed, so you aren't locked up) where all the items just get
    painted over and over.  Instead, the intended use is to delay assigning an
    image index to the item until it is really needed (the item becomes visible
    in the list, i.e. the user scrolls down and some new items become visible).
    This can speed things up when you are dealing with large lists, and/or when
    the process of getting the image index is time consuming (getting the system
    image index of a file type, for example).  So, when a new item is created,
    you simply assign -1 to it's ImageIndex and then when the item becomes
    visible, the OnGetImageIndex event is fired and you provide the real index:
      if Item.ImageIndex = -1 then
        Item.ImageIndex := CalculateRealImageIndex;
  * When using the NoColumnResize property, the area right next to a column
    divider can not be clicked on (and have it do anything).  This area is
    where Windows would normal turn the cursor into the splitter cursor and
    start the resizing process.  You can't use it to click since clicking there
    didn't do anything before except start the resize process.  We don't allow
    that, so nothing happens.  No way I can figure to get Windows to think it's
    in a normal clicking region.  I guarantee you'll hear about this from your
    users.  :(
  * C++Builder 3 users:  You must install only the registration unit 
    (ELV_Reg.pas) into the package you compile the component into.  If the 
    package also includes the other source files, you will get error messages
    about DCLSTD35.LIB, which doesn't exist.  It has to do with the fact that
    the source lists ImgList in the uses clause, even though I have properly 
    $IFDEFed it out.  Must be some error in the C3 parser that is causing it to
    see this unit, and in C3 this unit is some design-time unit or something.
    It results in the IDE continuously inserting DCLSTD35.LIB into the project
    file, and there's no such file.  Manually removing it from the project 
    does not help, it just sticks it back in.  The only way to get it to stop
    is to manually edit the code and remove the reference to ImgList, or to not
    include the source file in the package.  Bizarre.
  * Default owner drawing will not work when running on a NT 3.51 system.  I
    use DrawTextEx() to do the drawing, and that function is only a stub in
    NT 3.51.  I use DrawTextEx because I need the DT_END_ELLIPSIS flag.  My
    best suggestion at this point is to not use default drawing if your app
    needs to run on an NT 3.51 machine, i.e. draw it yourself in OnDrawItem or
    OnDrawSubItem.
  * Default owner drawing will not work with virtual mode.  By definition, data
    is not stored in the control when virtual mode is enabled.  So, there is no
    way the control can know what to paint for you in owner draw mode.  Owner
    drawing will work correctly, but you have to do the drawing via the
    OnDrawItem and/or OnDrawSubItem events.
  * Default owner drawing will not work with with re-ordered headers
    (ExtendedStyle contains lvxHeaderDragDrop).
  * If you have both an OnDrawItem and an OnDrawSubItem event handler when in
    VirtualMode, you will have to set DefaultDrawing to TRUE in the OnDrawItem

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -