TDBGridEH 1.01 Tested under Delphi 3,4. TDBGridEH is a TDBGrid like component. Include all propertis of TDBGrid + Allow to create title on several columns (multititle mode) or on the whole grid. Allow to show a fotter row(s). Opportune to use in combination with TDBSumList. Allow automatically fit columns width to set grid width equal client width Allow change row height and title height Allow automatically broken a long lines between words in title and data rows Title can act as buttons and show sort marker Allow truncate long text by ellipsis Lookup list can show several fields Frozen columns New propertys and events in TDBGridEH property TitleHeight: Integer; // For simple title mode the height of title in pixels property TitleLines : Integer; // For simple title mode the hieght of title in text lines // Full title height = height in pixels of TitleLines + TitleHeight property UseMultiTitle: Boolean; // Set UseMultiTitle in True to create title(s) on several columns property VTitleMargin: Boolean; // Margin between text and bottom of title; and margin between // text and top of title propery FooterRowCount: Integer; // Count Rows of Footer property AutoFitColWidths: Boolean; // Automatically fit columns width to set grid width equal client width property MinAutoFitWidth: Integer; // Minimum width for which recalculate columns width. // Work if AutoFitColWidths = True. property RowsHeight: Integer; // Height of data row in pixels property RowLines: Integer; // Height of data row in text lines // Full row height = height in pixels of RowLines + RowsHeight property RowSizingAllowed: Boolean; // Allow to sizing row at design and ran time property DrawMemoText:Boolean; // Draw text in memo fields as string property FrozenCols: Integer; // Count of nonscrolling columns (but no sizing and no take focus too) event OnDrawFotterCell: TDrawFooterCellEvent; TDrawFooterCellEvent = procedure (Sender: TObject; DataCol, Row: Longint; Column: TColumnEH; Rect: TRect; State: TGridDrawState) of object; // Customized drawing for footer cell event OnCheckButton: TCheckTitleEHBtnEvent; TCheckTitleEHBtnEvent = procedure (Sender: TObject; ACol: Longint; Field: TField; var Enabled: Boolean) of object; // Enable or disable use title as button event OnGetBtnParams: TGetBtnEHParamsEvent; TGetBtnEHParamsEvent = procedure (Sender:TObject; Field:TField; AFont:TFont; var Background: TColor; IsDown: Boolean) of object; // If title button pressed you can change drawing Font and Background event OnTitleBtnClick: TTitleEHClickEvent; TTitleEHClickEvent = procedure (Sender:TObject; ACol:Longint; Field: TField) of object; // Event occurs when clicking on title button event OnGetCellParams: TGetCellEHParamsEvent; TGetCellEHParamsEvent = procedure (Sender: TObject; Column: TColumnEH; AFont: TFont; var Background: TColor; State: TGridDrawState) of object; // Event occurs before draw data cell. You can change draw font and // background color event OnMouseDown; event OnMouseMove; event OnMouseUp; procedure SaveColumnsLayout(ARegIni: TRegIniFIle); // Save Columns Order, Width, SortMarker in registry procedure RestoreColumnsLayout(ARegIni: TRegIniFIle; RestoreParams:TColumnEhRestoreParams); TColumnEhRestoreParam = (crpColIndexEh,crpColWidthsEh,crpSortMarkerEh); TColumnEhRestoreParams = set of TColumnEhRestoreParam; // Restore Columns Order , Width , SortMarker from registry // RestoreParams defines parameters of column it is necessary to restore New propertys in TColumnEH property AutoFitColWidth: Boolean ; // Automatically fit column width to set grid width equal client width property WordWrap: Boolean ; // Wrap words in data cells if row height > one text line property EndEllipsis: Boolean; // Truncate long text by ellipsis property DropDownWidth: Integer; // Width of DropDown List // > 0 - Width = DropDownWidth // 0 - Width = ColumnWidth // -1 - Widht is calculated automatically as sum of fields.DisplayWidth in LookupDisplayFields * TextWidth('0') property LookupDisplayFields: String; // Fields is displayed in lookup list property AutoDropDown: Boolean; // Automatically DropDown List on key press property AlwaysShowEditButton: Boolean; // Always Show Edit Button New propertys in TColumnTitleEH property TitleButton: Boolean; // If true, the title will act as a button. property SortMarker: TSortMarkerEH; TSortMarkerEH = (smNoneEh, smDownEh, smUpEh); // Type of sorting marker that will show in right part of title property EndEllipsis: Boolean; // Truncate long text by ellipsis Restrictions and particularities of functioning. To create title on several columns, DisplayLabel of field must consist of several parts divided by sign "|", where every part is common part for several columns. Other field must contain same text in corresponding parts. For instance: Field1.DisplayLabel := 'Title1|SubTitle1'; Field2.DisplayLabel := 'Title1|SubTitle2'; In row select mode the button left and right force to next and prev column In row multiselect mode the right mouse button over selected row don't delete selection Next properties moved in public section property Canvas; property Col; property InplaceEditor; property LeftCol; property Row; property VisibleRowCount; property VisibleColCount; property IndicatorOffset: Byte read FIndicatorOffset; property TitleOffset: Byte read FTitleOffset; Don't create title on several columns if master title lay in frozen and nonfrozen zone simultaneously If AlwaysShowEditButton = True or dgAlwaysShowEditor in Options then edit button will be pressed on first mouse click Inplace editor Color and Font take from cell. Cell Color and Font form from Column Color and Font, and OnGetCellParams event. In lookup inplace editor you can clear Lookupkeyfield. You need select text and press Del. INSTALLATION Open menu "Component\Install Component...". In "Unit file name" browse GridEhRe.pas. In "Package file name" browse LIB\dclusr30.dpk (LIB\dclusr40.dpk × Delphi 4). Click Ok Contact me if you have any questions, comments or suggestions: Programmer: Dmitry V. Bolshakov (4232)41-19-82 (voice in Russia) E-mail: dmitryb@tax25.marine.su Home page http://tax25.marine.su/dmitryb FidoNet 2:5045/41.63 QCI # 10785451