//
unit ads_DlgDBLocate; {Copyright(c)2016 Advanced Delphi Systems Richard Maley Advanced Delphi Systems 12613 Maidens Bower Drive Potomac, MD 20854 USA phone 301-840-1554 dickmaley@advdelphisys.com The code herein can be used or modified by anyone. Please retain references to Richard Maley at Advanced Delphi Systems. If you make improvements to the code please send your improvements to dickmaley@advdelphisys.com so that the entire Delphi community can benefit. All comments are welcome. } (* Description: ads_DlgDBLocate.pas.pas This unit contains *) (*UnitIndex Master Index Implementation Section Download Units
Description: ads_DlgDBLocate.pas This unit contains the following routines.
DlgDBLocate_ads FindRecord_ads FindRecordFirst_ads FindRecordLast_ads FindRecordNext_ads FindRecordPrior_ads TDBLoc_ads.ButtonCancelClick TDBLoc_ads.ButtonFirstClick TDBLoc_ads.ButtonLastClick TDBLoc_ads.ButtonNextClick TDBLoc_ads.ButtonPriorClick TDBLoc_ads.ButtonReSizer TDBLoc_ads.EditSearchForEnter TDBLoc_ads.FindRecord TDBLoc_ads.FormActivate TDBLoc_ads.FormCreate TDBLoc_ads.FormDestroy TDBLoc_ads.FormResize TDBLoc_ads.GetCenterFormLeft TDBLoc_ads.GetCenterFormTop TDBLoc_ads.GetDataField TDBLoc_ads.GetDataSet TDBLoc_ads.GetDataSource TDBLoc_ads.IsMatchFound TDBLoc_ads.PanelBevel TDBLoc_ads.ReSizeAll TDBLoc_ads.SetBevel TDBLoc_ads.SetBeveled TDBLoc_ads.SetDataField TDBLoc_ads.SetDataSet TDBLoc_ads.SetDataSource TDBLoc_ads.SetMatchFound TDBLoc_ads.SetMinFormHeight TDBLoc_ads.SetMinFormWidth TDBLoc_ads.SetReSizeNow
*) interface Uses DB; {!~DlgDBLocate_ads } Var DefaultDataSource : TDataSource = nil; // SearchValue is the item to be found DefaultSearchValue : String = ''; // SearchField is the DataSet Field name. DefaultSearchField : String = ''; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive DefaultApplyCase : Boolean = False; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed DefaultShowMessages : Boolean = True; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match DefaultMatchValue : Integer = 3; Function DlgDBLocate_ads(DataSource: TDataSource): Boolean; Function FindRecordFirst_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Function FindRecordPrior_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Function FindRecordNext_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Function FindRecordLast_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Function FindRecord_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // FromCursor Options: // True : Search from current record // False: Search from table end based // on SearchAhead value. If // SearchAhead is True then // Search is from First record // forward, otherwise, it is // from the last record toward // the top. FromCursor : Boolean; // SearchAhead Options: // True : Search toward table bottom // False: Search toward table top SearchAhead : Boolean; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. implementation Uses ads_GraphicStrings, ads_Exception, SysUtils, StdCtrls, Buttons, ExtCtrls, Graphics, Classes, Controls, Forms, DBCtrls, Dialogs ; Var UnitName : String; ProcName : String; type TDBLocMatch_ads = (Start_mt_ads, Middle_mt_ads, End_mt_ads, AnyWhere_mt_ads, Exact_mt_ads); type TDBLoc_ads = Class(TScrollingWinControl) Public Constructor Create(AOwner: TComponent); Override; Destructor Destroy; Override; Public PanelLocateBase : TPanel; GroupBoxSearchFor : TGroupBox; EditSearchFor : TEdit; GroupBoxSearchField : TGroupBox; ComboBoxSearchField : TComboBox; RadioGroupMatch : TRadioGroup; RadioGroupCase : TRadioGroup; Panelbuttons : TPanel; PanelButtonSlider : TPanel; ButtonFirst : TBitBtn; ButtonPrior : TBitBtn; ButtonNext : TBitBtn; ButtonLast : TBitBtn; ButtonCancel : TBitBtn; procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure ButtonFirstClick(Sender: TObject); procedure ButtonPriorClick(Sender: TObject); procedure ButtonNextClick(Sender: TObject); procedure ButtonLastClick(Sender: TObject); procedure ButtonCancelClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormActivate(Sender: TObject); procedure EditSearchForEnter(Sender: TObject); private { Private declarations } FDataLink : TFieldDataLink; fDataSet : TDataSet; fSearchFromCursor : Boolean; fSearchForward : Boolean; fMatchFound : Boolean; fCaseSensitive : Boolean; FShowMessages : Boolean; fMatchType : TDBLocMatch_ads; fSearchString : String; FTitle : String; {stores the Dialog Title} FBeveled : Boolean; {Selected panels have beveling if true} FButtonsReSize : Boolean; {Buttons resize if true} FButtonsAlignment : TAlignment; {taLeftJustify, taCenter, taRightJustify} FButtonWidth : Integer; {Sets Button Widths} FButtonSpacer : Integer; {Sets Button Spacer Width} FApplyChanges : Boolean; {True if changes should be made. = mrOk} FModal : Boolean; {True if Form is being shown modal} FIsComponent : Boolean; {True if Form is part of a component, False if Form is a standalone form, Default is False} FReSizeNow : Boolean; {Causes the form to resize when the property is set} FMinFormWidth : Integer; {Sets a Minimum FormWidth} FMinFormHeight : Integer; {Sets a Minimum FormHeight} FDialogComponentName : String; procedure SetReSizeNow(Value : Boolean); procedure SetMinFormWidth(Value : Integer); procedure SetMinFormHeight(Value : Integer); procedure SetBeveled(Value : Boolean); function GetDataSet : TDataSet; procedure SetDataSet(Value : TDataSet); procedure SetMatchFound(Value : Boolean); function GetDataSource: TDataSource; procedure SetDataSource(Value: TDataSource); function GetDataField: string; procedure SetDataField(const Value: string); Function GetCenterFormLeft(FormWidth : Integer): Integer; Function GetCenterFormTop(FormHeight : Integer): Integer; Procedure PanelBevel(Beveled : Boolean; Panel: TPanel); procedure ButtonReSizer( ButtonBase : TPanel; ButtonSlider : TPanel; ButtonWidth : Integer; ButtonSpacer : Integer; ButtonsReSize : Boolean; ButtonsAlignment: TAlignment; Beveled : Boolean); public { Public declarations } procedure ReSizeAll; procedure SetBevel; function FindRecord( SearchValue, SearchField: String; FromCursor, SearchAhead, ApplyCase: Boolean; MatchValue:TDBLocMatch_ads): Boolean; virtual; property MatchFound : Boolean read fMatchFound write SetMatchFound; property DataSet : TDataSet read GetDataSet write SetDataSet; Function IsMatchFound: Boolean; {Returns A SubString Of An Input String} property Title : String {stores the Dialog Title} read FTitle write FTitle; property Beveled : Boolean {Selected panels have beveling if true} Read FBeveled Write SetBeveled; property ButtonsReSize : Boolean {Buttons resize if true} Read FButtonsReSize Write FButtonsReSize; property ButtonsAlignment : TAlignment {taLeftJustify, taCenter, taRightJustify} Read FButtonsAlignment Write FButtonsAlignment; property ButtonWidth : Integer {Sets Button Widths} Read FButtonWidth Write FButtonWidth; property ButtonSpacer : Integer {Sets Button Spacer Width} Read FButtonSpacer Write FButtonSpacer; property ApplyChanges: Boolean {True if changes should be made. = mrOk} Read FApplyChanges Write FApplyChanges; property Modal : Boolean {True if Form is being shown modal} Read FModal Write FModal; property IsComponent : Boolean Read FIsComponent Write FIsComponent; property ReSizeNow : Boolean Read FReSizeNow Write SetReSizeNow; published { Published declarations } property ShowMessages : Boolean Read fShowMessages Write FShowMessages; property CaseSensitive : Boolean Read fCaseSensitive Write FCaseSensitive; property MatchType : TDBLocMatch_ads Read fMatchType Write fMatchType; property DataSource : TDataSource read GetDataSource write SetDataSource; property SearchString : String Read fSearchString Write fSearchString; property DataField : string read GetDataField write SetDataField; property SearchForward : Boolean read fSearchForward write fSearchForward; property SearchFromCursor : Boolean read fSearchFromCursor write fSearchFromCursor; property MinFormWidth : Integer {Sets the form's Minimum Width} Read FMinFormWidth Write SetMinFormWidth; property MinFormHeight : Integer {Sets the form's Minimum Height} Read FMinFormHeight Write SetMinFormHeight; property DialogComponentName : String {Used in messages to display the } Read FDialogComponentName {dialog component name} Write FDialogComponentName; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.ReSizeAll; Var HeightEach : Integer; begin If Width < MinFormWidth Then Width := MinFormWidth; If Height < MinFormHeight Then Height := MinFormHeight; ButtonReSizer( PanelButtons, {ButtonBase} PanelButtonSlider, {ButtonSlider} ButtonWidth, {ButtonWidth} ButtonSpacer, {ButtonSpacer} ButtonsReSize, {ButtonsReSize} ButtonsAlignment, {ButtonsAlignment} Beveled); {Beveled} If Beveled Then Begin HeightEach := (PanelLocateBase.Height - (2 * PanelLocateBase.BorderWidth) - 6) div 4; End else Begin HeightEach := (PanelLocateBase.Height - (2 * PanelLocateBase.BorderWidth) - 0) div 4; End; GroupBoxSearchFor.Height := HeightEach-1; GroupBoxSearchField.Height := HeightEach-1; RadioGroupMatch.Height := HeightEach; RadioGroupCase.Height := HeightEach; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.FormResize(Sender: TObject); begin ReSizeAll; end; //Unit Description UnitIndex Master Index
function TDBLoc_ads.GetDataSet : TDataSet; begin result := fDataSet; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetDataSet(Value : TDataSet); begin fDataSet := Value; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetMatchFound(Value : Boolean); begin fMatchFound := Value; end; //Unit Description UnitIndex Master Index
function TDBLoc_ads.FindRecord( SearchValue, SearchField: String; FromCursor, SearchAhead, ApplyCase: Boolean; MatchValue:TDBLocMatch_ads): Boolean; var BookMark : TBookMark; CursorWas : TCursor; begin CursorWas := Screen.Cursor; MatchFound := False; If ( Assigned(fDataSet) and fDataSet.Active ) Then Begin SearchString := SearchValue; DataField := SearchField; MatchType := MatchValue; CaseSensitive := ApplyCase; BookMark := fDataSet.GetBookMark; fDataSet.DisableControls; If Not FromCursor Then Begin If SearchAhead Then Begin fDataSet.First; While Not (fDataSet.EOF) Do Begin If IsMatchFound Then Break; fDataSet.Next; End; End Else Begin fDataSet.Last; While Not (fDataSet.BOF) Do Begin If IsMatchFound Then Break; fDataSet.Prior; End; End; End Else Begin If SearchAhead Then Begin fDataSet.Next; While Not (fDataSet.EOF) Do Begin If IsMatchFound Then Break; fDataSet.Next; End; End Else Begin fDataSet.Prior; While Not (fDataSet.BOF) Do Begin If IsMatchFound Then Break; fDataSet.Prior; End; End; End; IF (NOT MatchFound) THEN fDataSet.GotoBookMark(BookMark); fDataSet.EnableControls; fDataSet.FreeBookMark(BookMark); end; If (Not MatchFound) And ShowMessages Then Begin Try CursorWas := Screen.Cursor; Screen.Cursor := crArrow; MessageDlg('No match was found.', mtInformation,[mbOK], 0); Finally Screen.Cursor := CursorWas; End; End; Result := MatchFound; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.ButtonFirstClick(Sender: TObject); begin SearchString := EditSearchFor.Text; DataField := ComboBoxSearchField.Text; SearchFromCursor := False; SearchForward := True; MatchType := TDBLocMatch_ads(RadioGroupMatch.ItemIndex); If RadioGroupCase.ItemIndex = 0 Then Begin CaseSensitive := False; End Else Begin CaseSensitive := True; End; FindRecord( SearchString, DataField, SearchFromCursor, SearchForward, CaseSensitive, MatchType); ApplyChanges := True; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.ButtonPriorClick(Sender: TObject); begin SearchString := EditSearchFor.Text; DataField := ComboBoxSearchField.Text; SearchFromCursor := True; SearchForward := False; MatchType := TDBLocMatch_ads(RadioGroupMatch.ItemIndex); If RadioGroupCase.ItemIndex = 0 Then Begin CaseSensitive := False; End Else Begin CaseSensitive := True; End; FindRecord( SearchString, DataField, SearchFromCursor, SearchForward, CaseSensitive, MatchType); ApplyChanges := True; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.ButtonNextClick(Sender: TObject); begin SearchString := EditSearchFor.Text; DataField := ComboBoxSearchField.Text; SearchFromCursor := True; SearchForward := True; MatchType := TDBLocMatch_ads(RadioGroupMatch.ItemIndex); If RadioGroupCase.ItemIndex = 0 Then Begin CaseSensitive := False; End Else Begin CaseSensitive := True; End; FindRecord( SearchString, DataField, SearchFromCursor, SearchForward, CaseSensitive, MatchType); ApplyChanges := True; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.ButtonLastClick(Sender: TObject); begin SearchString := EditSearchFor.Text; DataField := ComboBoxSearchField.Text; SearchFromCursor := False; SearchForward := False; MatchType := TDBLocMatch_ads(RadioGroupMatch.ItemIndex); If RadioGroupCase.ItemIndex = 0 Then Begin CaseSensitive := False; End Else Begin CaseSensitive := True; End; FindRecord( SearchString, DataField, SearchFromCursor, SearchForward, CaseSensitive, MatchType); ApplyChanges := True; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.ButtonCancelClick(Sender: TObject); begin ApplyChanges := False; end; //Unit Description UnitIndex Master Index
function TDBLoc_ads.GetDataSource: TDataSource; begin Result := FDataLink.DataSource; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetDataSource(Value: TDataSource); begin FDataLink.DataSource := Value; If Value <> nil Then DataSet := FDataLink.DataSource.DataSet; end; //Unit Description UnitIndex Master Index
function TDBLoc_ads.GetDataField: string; begin Result := FDataLink.FieldName; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetDataField(const Value: string); begin Try If FDataLink.FieldName <> Value Then FDataLink.FieldName := Value; Except End; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.FormDestroy(Sender: TObject); begin FDataLink.Free; FDataLink := nil; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.FormCreate(Sender: TObject); begin FDataLink := TFieldDataLink.Create; FDataLink.Control := Self; EditSearchFor.Align := alTop; ComboBoxSearchField.Align := alClient; ShowMessages := True; CaseSensitive := False; MatchType := Start_mt_ads; DataSource := nil; SearchString := ''; DataField := ''; SearchForward := True; SearchFromCursor := False; Title := 'Locate a Record';{stores the Dialog Title} FBeveled := False; {Selected panels have beveling if true} FButtonsReSize := False; {Buttons resize if true} FButtonsAlignment := taCenter; {taLeftJustify, taCenter, taRightJustify} FButtonWidth := 25; {Sets Button Widths} FButtonSpacer := 5; {Sets Button Spacer Width} FApplyChanges := False; {True if changes should be made. = mrOk} FModal := True; {True if Form is being shown modal} IsComponent := False; {True if Form is part of a component, False if Form is a standalone form, Default is False} Height := 250; Width := 300; MinFormWidth := 300; {Sets a Minimum FormWidth} MinFormHeight := 250; {Sets a Minimum FormHeight} FDialogComponentName := 'TDBLocate_ads'; {Set bevel prior to resizing} SetBevel; {ReSize at the end of the create} ReSizeAll; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.FormActivate(Sender: TObject); Var i : Integer; begin RadioGroupMatch.ItemIndex := Ord(MatchType); EditSearchFor.Text := SearchString; ComboBoxSearchField.Text := DataField; If SearchFromCursor Then Begin If SearchForward Then Begin ButtonFirst.Default := False; ButtonPrior.Default := False; ButtonNext.Default := True; ButtonLast.Default := False; End Else Begin ButtonFirst.Default := False; ButtonPrior.Default := True; ButtonNext.Default := False; ButtonLast.Default := False; End; End Else Begin If SearchForward Then Begin ButtonFirst.Default := True; ButtonPrior.Default := False; ButtonNext.Default := False; ButtonLast.Default := False; End Else Begin ButtonFirst.Default := False; ButtonPrior.Default := False; ButtonNext.Default := False; ButtonLast.Default := True; End; End; If CaseSensitive Then Begin RadioGroupCase.ItemIndex := 1; End Else Begin RadioGroupCase.ItemIndex := 0; End; If DataSet <> nil Then Begin Try ComboBoxSearchField.Items.Clear; For i := 0 To DataSet.FieldCount -1 Do Begin ComboBoxSearchField.Items.Add(DataSet.Fields[i].FieldName); End; Except raise Exception. Create('An error occurred while populating the field list combobox'); End; End; If IsComponent Then Begin {} End Else Begin Caption := Title; {stores the Dialog Title} SetBevel; Left := GetCenterFormLeft(Width); Top := GetCenterFormTop(Height); End; EditSearchFor.SelectAll; end; //Unit Description UnitIndex Master Index
Function TDBLoc_ads.IsMatchFound: Boolean; Var S,T : String; begin Result := False; S := SearchString; T := DataSet.FieldByName(DataField).AsString; MatchFound := False; If MatchType = Exact_mt_ads Then Begin If CaseSensitive Then Begin If S = T Then Begin Result := True; End Else Begin Result := False; End; End Else Begin If UpperCase(S) = UpperCase(T) Then Begin Result := True; End Else Begin Result := False; End; End; MatchFound := Result; Exit; End; If MatchType = Start_mt_ads Then Begin If CaseSensitive Then Begin If S = Copy(T,1,Length(S)) Then Begin Result := True; End Else Begin Result := False; End; End Else Begin If UpperCase(S) = UpperCase(Copy(T,1,Length(S))) Then Begin Result := True; End Else Begin Result := False; End; End; MatchFound := Result; Exit; End; If MatchType = Middle_mt_ads Then Begin If CaseSensitive Then Begin If Pos(S,Copy(T,2,Length(T)-2)) <> 0 Then Begin Result := True; End Else Begin Result := False; End; End Else Begin If Pos(UpperCase(S),UpperCase(Copy(T,2,Length(T)-2))) <> 0 Then Begin Result := True; End Else Begin Result := False; End; End; MatchFound := Result; Exit; End; If MatchType = End_mt_ads Then Begin If CaseSensitive Then Begin If S = Copy(T,Length(T)-Length(S)+1,Length(S)) Then Begin Result := True; End Else Begin Result := False; End; End Else Begin If UpperCase(S) = UpperCase(Copy(T,Length(T)- Length(S)+1,Length(S))) Then Begin Result := True; End Else Begin Result := False; End; End; MatchFound := Result; Exit; End; If MatchType = AnyWhere_mt_ads Then Begin If CaseSensitive Then Begin If Pos(S,T) <> 0 Then Begin Result := True; End Else Begin Result := False; End; End Else Begin If Pos(UpperCase(S),UpperCase(T)) <> 0 Then Begin Result := True; End Else Begin Result := False; End; End; MatchFound := Result; Exit; End; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetBeveled(Value : Boolean); Begin FBeveled := Value; SetBevel; End; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetReSizeNow(Value : Boolean); Begin ReSizeAll; FReSizeNow := Value; End; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetMinFormWidth(Value : Integer); Begin If FMinFormWidth <> Value Then FMinFormWidth := Value; End; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetMinFormHeight(Value : Integer); Begin If FMinFormHeight <> Value Then FMinFormHeight := Value; End; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.SetBevel; Begin PanelBevel(Beveled,PanelLocateBase); PanelBevel(Beveled,PanelButtons); End; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.EditSearchForEnter(Sender: TObject); begin EditSearchFor.SelectAll; end; //Unit Description UnitIndex Master Index
procedure TDBLoc_ads.ButtonReSizer( ButtonBase : TPanel; ButtonSlider : TPanel; ButtonWidth : Integer; ButtonSpacer : Integer; ButtonsReSize : Boolean; ButtonsAlignment: TAlignment; Beveled : Boolean); Var MinFormWidth : Integer; NButtons : Integer; i : Integer; NSpacers : Integer; SpacerWidth : Integer; SpacersWidth : Integer; W : Integer; LeftPos : Integer; Begin NButtons := ButtonSlider.ControlCount; If ButtonSpacer > 0 Then Begin SpacerWidth := ButtonSpacer; NSpacers := NButtons +1; SpacersWidth := ButtonSpacer * NSpacers; End Else Begin SpacerWidth := 0; SpacersWidth:= 0; End; MinFormWidth := SpacersWidth + (NButtons * ButtonWidth) + (ButtonBase.BorderWidth * 2) + (ButtonBase.BevelWidth * 4) + 25; Try If ButtonBase.Parent is TForm Then Begin If ButtonBase.Parent.Width < MinFormWidth Then Begin ButtonBase.Parent.Width := MinFormWidth; End; End Else Begin Try If ButtonBase.Parent.Parent is TForm Then Begin If ButtonBase.Parent.Parent.Width < MinFormWidth Then Begin ButtonBase.Parent.Parent.Width := MinFormWidth; End; End Else Begin Try If ButtonBase.Parent.Parent.Parent is TForm Then Begin If ButtonBase.Parent.Parent.Parent.Width < MinFormWidth Then Begin ButtonBase.Parent.Parent.Parent.Width := MinFormWidth; End; End Else Begin Try If ButtonBase.Parent.Parent.Parent.Parent is TForm Then Begin If ButtonBase.Parent.Parent.Parent.Parent.Width < MinFormWidth Then Begin ButtonBase.Parent.Parent.Parent.Parent.Width := MinFormWidth; End; End Else Begin {Not going to set a minimum form width} End; Except End; End; Except End; End; Except End; End; Except End; If Beveled Then Begin ButtonBase.Height := (ButtonBase.BorderWidth * 2) + (ButtonBase.BevelWidth * 4) + 2 {for borderStyle} + 25 {for standard button height} + 3; End else Begin ButtonBase.Height := (ButtonBase.BorderWidth * 2) + 25 {for standard button height} + 4; End; If ButtonsReSize Then Begin Buttonslider.Align := alClient; W := (Buttonslider.Width - SpacersWidth) div NButtons; LeftPos := SpacerWidth; For i := 0 To NButtons - 1 Do Begin ButtonSlider.Controls[i].Align := alNone; ButtonSlider.Controls[i].Top := 0; ButtonSlider.Controls[i].Height := 25; ButtonSlider.Controls[i].Width := W; ButtonSlider.Controls[i].Left := LeftPos; LeftPos := LeftPos + W + SpacerWidth; End; End Else Begin ButtonSlider.Align := alNone; If Beveled Then Begin ButtonSlider.Top := ButtonBase.BorderWidth + (ButtonBase.BevelWidth * 2)+ 1 + {For BorderStyle} 0; {For Margin} End Else Begin ButtonSlider.Top := ButtonBase.BorderWidth + 1; {For Margin} End; ButtonSlider.Height := 25; ButtonSlider.Width := SpacersWidth + (NButtons * ButtonWidth); If (Not Beveled) Then Begin {Align totally left with not leftmost spacer} If ButtonsAlignment = taLeftJustify Then Begin LeftPos := 0; End Else Begin If ButtonsAlignment = taRightJustify Then Begin {Align totally Right with not rightmost spacer} LeftPos := 2 * SpacerWidth; End Else Begin LeftPos := SpacerWidth; End; End; End Else Begin LeftPos := SpacerWidth; End; For i := 0 To NButtons - 1 Do Begin ButtonSlider.Controls[i].Align := alNone; ButtonSlider.Controls[i].Top := 0; ButtonSlider.Controls[i].Height := 25; ButtonSlider.Controls[i].Width := ButtonWidth; ButtonSlider.Controls[i].Left := LeftPos; LeftPos := LeftPos + ButtonWidth+ SpacerWidth; End; If ButtonsAlignment = taLeftJustify Then ButtonSlider.Align := alLeft; If ButtonsAlignment = taRightJustify Then ButtonSlider.Align := alRight; If ButtonsAlignment = taCenter Then Begin ButtonSlider.Align := alNone; ButtonSlider.Left := (ButtonBase.Width - ButtonSlider.Width) div 2; End; End; ButtonBase.Refresh; End; //Unit Description UnitIndex Master Index
Function TDBLoc_ads.GetCenterFormLeft(FormWidth : Integer): Integer; Begin If Screen.Width < FormWidth Then Begin Result := Screen.Width-26; End Else Begin Result := (Screen.Width - FormWidth) div 2; End; End; //Unit Description UnitIndex Master Index
Function TDBLoc_ads.GetCenterFormTop(FormHeight : Integer): Integer; Begin If Screen.Height < FormHeight Then Begin Result := Screen.Height-26; End Else Begin Result := (Screen.Height - FormHeight) div 2; End; End; //Unit Description UnitIndex Master Index
Procedure TDBLoc_ads.PanelBevel(Beveled : Boolean; Panel: TPanel); Begin If Not Beveled Then Begin Panel.BevelOuter := bvNone; Panel.BevelInner := bvNone; Panel.BorderStyle:= bsNone; End Else Begin Panel.BevelOuter := bvRaised; Panel.BevelInner := bvLowered; Panel.BorderStyle:= bsSingle; End; End; Constructor TDBLoc_ads.Create(AOwner: TComponent); Begin ProcName := 'TDBLoc_ads.Create'; Try inherited; Self.Parent := TWincontrol(AOwner); PanelLocateBase := TPanel.Create(AOwner); With PanelLocateBase Do Begin Parent := Self; Left := 0; Top := 0; Width := 385; Height := 200; Align := alClient; BevelOuter := bvNone; BorderWidth := 10; Caption := ' '; ParentColor := True; TabOrder := 0; End; GroupBoxSearchFor := TGroupBox.Create(AOwner); With GroupBoxSearchFor Do Begin Parent := PanelLocateBase; Left := 10; Top := 10; Width := 365; Height := 50; Align := alTop; Caption := 'Search For'; TabOrder := 0; End; EditSearchFor := TEdit.Create(AOwner); With EditSearchFor Do Begin Parent := GroupBoxSearchFor; Left := 8; Top := 16; Width := 121; Height := 25; Hint := 'Enter what to search for.'; AutoSize := False; ParentShowHint := False; ShowHint := True; TabOrder := 0; OnEnter := EditSearchForEnter; End; GroupBoxSearchField := TGroupBox.Create(AOwner); With GroupBoxSearchField Do Begin Parent := PanelLocateBase; Left := 10; Top := 60; Width := 365; Height := 50; Align := alTop; Caption := 'Search Field'; TabOrder := 1; End; ComboBoxSearchField := TComboBox.Create(AOwner); With ComboBoxSearchField Do Begin Parent := GroupBoxSearchField; Left := 8; Top := 16; Width := 145; Height := 24; Hint := 'Select the field to search on.'; ItemHeight := 16; ParentShowHint := False; ShowHint := True; Sorted := True; TabOrder := 0; End; RadioGroupMatch := TRadioGroup.Create(AOwner); With RadioGroupMatch Do Begin Parent := PanelLocateBase; Left := 10; Top := 110; Width := 365; Height := 41; Hint := 'Select whether the search should match at the start, middle, end' + ', anywhere or exactly.'; Align := alClient; Caption := 'Match'; Columns := 5; ParentShowHint := False; ShowHint := True; TabOrder := 2; Items.Clear; With Items Do Begin Try Add('Start'); Except End; Try Add('Middle'); Except End; Try Add('End'); Except End; Try Add('Any'); Except End; Try Add('Exact'); Except End; End; ItemIndex := 0; End; RadioGroupCase := TRadioGroup.Create(AOwner); With RadioGroupCase Do Begin Parent := PanelLocateBase; Left := 10; Top := 151; Width := 365; Height := 39; Hint := 'Select whether this search should be case sensitive.'; Align := alBottom; Caption := 'Case'; Columns := 2; ParentShowHint := False; ShowHint := True; TabOrder := 3; Items.Clear; With Items Do Begin Try Add('Ignore Case'); Except End; Try Add('Case Sensitive'); Except End; End; ItemIndex := 0; End; Panelbuttons := TPanel.Create(AOwner); With Panelbuttons Do Begin Parent := Self; Left := 0; Top := 200; Width := 385; Height := 53; Align := alBottom; BevelOuter := bvNone; BorderWidth := 10; Caption := ' '; ParentColor := True; TabOrder := 1; End; PanelButtonSlider := TPanel.Create(AOwner); With PanelButtonSlider Do Begin Parent := Panelbuttons; Left := 10; Top := 10; Width := 346; Height := 33; Align := alLeft; BevelOuter := bvNone; Caption := ' '; ParentColor := True; TabOrder := 0; End; ButtonFirst := TBitBtn.Create(AOwner); With ButtonFirst Do Begin Parent := PanelButtonSlider; Left := 0; Top := 0; Width := 25; Height := 25; Hint := 'Find the first match in the table.'; Default := True; ModalResult := 1; ParentShowHint := False; ShowHint := True; TabOrder := 0; OnClick := ButtonFirstClick; StringToGlyph_ads(Glyph,'object TBitmap_ads Bitmap.Data = {'+ ' 46010000424D460100000000000076000000280000001C0000000D0000000100'+ ' 040000000000D000000000000000000000001000000010000000000000000000'+ ' 8000008000000080800080000000800080008080000080808000C0C0C0000000'+ ' FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333'+ ' 3333333333333333020033333333333333333333333333337333333333333333'+ ' 333FFF3FF73333331100330730773333333F333F33FF3333CECC330730007333'+ ' 333F333F333337336222330730000077333F333F333333F32222330730000000'+ ' 333F333F333333F30000330730000077333F333F3333FFF30000330730007733'+ ' 333F333F337F33338888330730773333333F333F3F3333330000333333333333'+ ' 3337773FF7333333000033333333333333333333333333330000333333333333'+ ' 33333333333333330000}end'); NumGlyphs := 2; End; ButtonPrior := TBitBtn.Create(AOwner); With ButtonPrior Do Begin Parent := PanelButtonSlider; Left := 28; Top := 0; Width := 25; Height := 25; Hint := 'Find the first match from the current cursor position toward the' + ' top of the table.'; ModalResult := 1; ParentShowHint := False; ShowHint := True; TabOrder := 1; OnClick := ButtonPriorClick; StringToGlyph_ads(Glyph,'object TBitmap_ads Bitmap.Data = {'+ ' 12010000424D12010000000000007600000028000000140000000D0000000100'+ ' 0400000000009C00000000000000000000001000000010000000000000000000'+ ' 8000008000000080800080000000800080008080000080808000C0C0C0000000'+ ' FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333'+ ' 333333335AAA33333333333333333333E11133333333333333333FFF5AAA3333'+ ' 33370333333FF33FF0003333370003333FF3333FD22233370000033FF333333F'+ ' F0003700000003733333333FD2223337000003377333333F3000333337000333'+ ' 3773333FD2223333333703333337733FF00033333333333333333773D2223333'+ ' 3333333333333333F00033333333333333333333D222}end'); NumGlyphs := 2; End; ButtonNext := TBitBtn.Create(AOwner); With ButtonNext Do Begin Parent := PanelButtonSlider; Left := 56; Top := 0; Width := 25; Height := 25; Hint := 'Find the first match in the table from the current cursor positi' + 'on.'; ModalResult := 1; ParentShowHint := False; ShowHint := True; TabOrder := 2; OnClick := ButtonNextClick; StringToGlyph_ads(Glyph,'object TBitmap_ads Bitmap.Data = {'+ ' 12010000424D12010000000000007600000028000000140000000D0000000100'+ ' 0400000000009C00000000000000000000001000000010000000000000000000'+ ' 8000008000000080800080000000800080008080000080808000C0C0C0000000'+ ' FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333'+ ' 33333333FFFF33333333333333333333CEEC33333333333FF3333333CDFC3073'+ ' 333333733FF33333CDFC300073333373333FF333CDFC30000073337333333FF3'+ ' CCEC3000000073733333333FCFFD30000073337333333773EFFF300073333373'+ ' 33377333EFFE30733333337337733333EEEE33333333337773333333FFFF3333'+ ' 3333333333333333FFFF33333333333333333333FFFF}end'); NumGlyphs := 2; End; ButtonLast := TBitBtn.Create(AOwner); With ButtonLast Do Begin Parent := PanelButtonSlider; Left := 85; Top := 0; Width := 25; Height := 25; Hint := 'Find the first match searching from the bottom of the table.'; ModalResult := 1; ParentShowHint := False; ShowHint := True; TabOrder := 3; OnClick := ButtonLastClick; StringToGlyph_ads(Glyph,'object TBitmap_ads Bitmap.Data = {'+ ' 12010000424D12010000000000007600000028000000140000000D0000000100'+ ' 0400000000009C00000000000000000000001000000010000000000000000000'+ ' 8000008000000080800080000000800080008080000080808000C0C0C0000000'+ ' FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333'+ ' 3333333300663333333333333333333300DD33333333333333333FFF00BB3333'+ ' 77037033333FF33F00663377000370333FF3333F00DD77000003703FF333333F'+ ' 00BB0000000370733333333F00667700000370377333333F00DD337700037033'+ ' 3773333F00BB3333770370333337733F00663333333333333333377300DD3333'+ ' 33333333333333330088333333333333333333330066}end'); NumGlyphs := 2; End; ButtonCancel := TBitBtn.Create(AOwner); With ButtonCancel Do Begin Parent := PanelButtonSlider; Left := 114; Top := 0; Width := 25; Height := 25; Hint := 'Cancel the search.'; Cancel := True; ModalResult := 2; ParentShowHint := False; ShowHint := True; TabOrder := 4; OnClick := ButtonCancelClick; StringToGlyph_ads(Glyph,'object TBitmap_ads Bitmap.Data = {'+ ' DE010000424DDE01000000000000760000002800000024000000120000000100'+ ' 0400000000006801000000000000000000001000000000000000000000000000'+ ' 80000080000000808000800000008000800080800000C0C0C000808080000000'+ ' FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333'+ ' 333333333333333333333333000033338833333333333333333F333333333333'+ ' 0000333911833333983333333388F333333F3333000033391118333911833333'+ ' 38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333'+ ' 911118111118333338F3338F833338F3000033333911111111833333338F3338'+ ' 3333F8330000333333911111183333333338F333333F83330000333333311111'+ ' 8333333333338F3333383333000033333339111183333333333338F333833333'+ ' 00003333339111118333333333333833338F3333000033333911181118333333'+ ' 33338333338F333300003333911183911183333333383338F338F33300003333'+ ' 9118333911183333338F33838F338F33000033333913333391113333338FF833'+ ' 38F338F300003333333333333919333333388333338FFF830000333333333333'+ ' 3333333333333333333888330000333333333333333333333333333333333333'+ ' 0000}end'); NumGlyphs := 2; End; Except On E : Exception Do RaiseError(UnitName,ProcName,E); End; End; Destructor TDBLoc_ads.Destroy; Begin ProcName := 'TDBLoc_ads.Destroy'; Try ButtonCancel .Free; ButtonLast .Free; ButtonNext .Free; ButtonPrior .Free; ButtonFirst .Free; PanelButtonSlider .Free; Panelbuttons .Free; RadioGroupCase .Free; RadioGroupMatch .Free; ComboBoxSearchField.Free; GroupBoxSearchField.Free; EditSearchFor .Free; GroupBoxSearchFor .Free; PanelLocateBase .Free; inherited Destroy; Except On E : Exception Do RaiseError(UnitName,ProcName,E); End; End; {!~DlgDBLocate_ads } //Unit Description UnitIndex Master Index
Function DlgDBLocate_ads(DataSource: TDataSource): Boolean; Var Dialog : TForm; Form : TDBLoc_ads; Begin Result := False; Dialog := nil; ProcName := 'DlgDBLocate_ads'; Try Try Dialog := TForm.Create(nil); Form := TDBLoc_ads.Create(Dialog); Form.Parent:= Dialog; Form.Align := alClient; With Dialog Do Begin Left := 505; Top := 120; Width := 393; Height := 280; BorderIcons := [biSystemMenu]; Caption := 'Locate a Record '; Color := clBtnFace; Font.Color := clWindowText; Font.Height := -13; Font.Name := 'System'; Font.Style := []; OldCreateOrder := True; Position := poScreenCenter; OnActivate := Form.FormActivate; OnCreate := Form.FormCreate; OnDestroy := Form.FormDestroy; OnResize := Form.FormResize; PixelsPerInch := 96; End; Form.FormCreate(Dialog); Form.DataSource := DataSource; form.SearchString := DefaultSearchValue; form.DataField := DefaultSearchField; form.MatchType := TDBLocMatch_ads(DefaultMatchValue); form.CaseSensitive:=DefaultApplyCase; Dialog.ShowModal; DefaultSearchValue:=form.SearchString; DefaultSearchField:=form.DataField; DefaultMatchValue :=Integer(form.MatchType); DefaultApplyCase :=form.CaseSensitive; If Dialog.ModalResult = mrOK Then Begin //Do Something here Result := True; End; Finally Dialog.Free; End; Except On E : Exception Do RaiseError(UnitName,ProcName,E); End; End; //Unit Description UnitIndex Master Index
Function FindRecord_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // FromCursor Options: // True : Search from current record // False: Search from table end based // on SearchAhead value. If // SearchAhead is True then // Search is from First record // forward, otherwise, it is // from the last record toward // the top. FromCursor : Boolean; // SearchAhead Options: // True : Search toward table bottom // False: Search toward table top SearchAhead : Boolean; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Var Dialog : TForm; Form : TDBLoc_ads; Begin Result := False; Dialog := nil; ProcName := 'DlgDBLocate_ads'; Try DefaultSearchValue := SearchValue; DefaultSearchField := SearchField; DefaultApplyCase := ApplyCase; DefaultShowMessages := ShowMessages; DefaultMatchValue := MatchValue; Try Dialog := TForm.Create(nil); Form := TDBLoc_ads.Create(Dialog); Form.Parent:= Dialog; Form.Align := alClient; With Dialog Do Begin Left := 505; Top := 120; Width := 393; Height := 280; BorderIcons := [biSystemMenu]; Caption := 'Locate a Record '; Color := clBtnFace; Font.Color := clWindowText; Font.Height := -13; Font.Name := 'System'; Font.Style := []; OldCreateOrder := True; Position := poScreenCenter; OnActivate := Form.FormActivate; OnCreate := Form.FormCreate; OnDestroy := Form.FormDestroy; OnResize := Form.FormResize; PixelsPerInch := 96; End; Form.FormCreate(Dialog); Form.DataSource := DataSource; Form.ShowMessages := ShowMessages; Result := Form.FindRecord( SearchValue, SearchField, FromCursor, SearchAhead, ApplyCase, TDBLocMatch_ads(MatchValue)); Finally Dialog.Free; End; Except On E : Exception Do RaiseError(UnitName,ProcName,E); End; End; //Unit Description UnitIndex Master Index
Function FindRecordFirst_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Var FromCursor : Boolean; SearchAhead : Boolean; Begin FromCursor := False; SearchAhead := True; Result := FindRecord_ads( // DDataSource is the TDataSource to be searched. DataSource, // DataSource : TDataSource; // SearchValue is the item to be found SearchValue, // SearchValue : String; // SearchField is the DataSet Field name. SearchField, // SearchField : String; // FromCursor Options: // True : Search from current record // False: Search from table end based // on SearchAhead value. If // SearchAhead is True then // Search is from First record // forward, otherwise, it is // from the last record toward // the top. FromCursor, // FromCursor : Boolean; // SearchAhead Options: // True : Search toward table bottom // False: Search toward table top SearchAhead, // SearchAhead : Boolean; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase, // ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages, // ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue // MatchValue : Integer ); // ): Boolean; //True if found, False otherwise. End; //Unit Description UnitIndex Master Index
Function FindRecordPrior_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Var FromCursor : Boolean; SearchAhead : Boolean; Begin FromCursor := True; SearchAhead := False; Result := FindRecord_ads( // DDataSource is the TDataSource to be searched. DataSource, // DataSource : TDataSource; // SearchValue is the item to be found SearchValue, // SearchValue : String; // SearchField is the DataSet Field name. SearchField, // SearchField : String; // FromCursor Options: // True : Search from current record // False: Search from table end based // on SearchAhead value. If // SearchAhead is True then // Search is from First record // forward, otherwise, it is // from the last record toward // the top. FromCursor, // FromCursor : Boolean; // SearchAhead Options: // True : Search toward table bottom // False: Search toward table top SearchAhead, // SearchAhead : Boolean; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase, // ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages, // ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue // MatchValue : Integer ); // ): Boolean; //True if found, False otherwise. End; //Unit Description UnitIndex Master Index
Function FindRecordNext_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Var FromCursor : Boolean; SearchAhead : Boolean; Begin FromCursor := True; SearchAhead := True; Result := FindRecord_ads( // DDataSource is the TDataSource to be searched. DataSource, // DataSource : TDataSource; // SearchValue is the item to be found SearchValue, // SearchValue : String; // SearchField is the DataSet Field name. SearchField, // SearchField : String; // FromCursor Options: // True : Search from current record // False: Search from table end based // on SearchAhead value. If // SearchAhead is True then // Search is from First record // forward, otherwise, it is // from the last record toward // the top. FromCursor, // FromCursor : Boolean; // SearchAhead Options: // True : Search toward table bottom // False: Search toward table top SearchAhead, // SearchAhead : Boolean; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase, // ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages, // ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue // MatchValue : Integer ); // ): Boolean; //True if found, False otherwise. End; //Unit Description UnitIndex Master Index
Function FindRecordLast_ads( // DDataSource is the TDataSource to be searched. DataSource : TDataSource; // SearchValue is the item to be found SearchValue : String; // SearchField is the DataSet Field name. SearchField : String; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue : Integer ): Boolean; //True if found, False otherwise. Var FromCursor : Boolean; SearchAhead : Boolean; Begin FromCursor := False; SearchAhead := False; Result := FindRecord_ads( // DDataSource is the TDataSource to be searched. DataSource, // DataSource : TDataSource; // SearchValue is the item to be found SearchValue, // SearchValue : String; // SearchField is the DataSet Field name. SearchField, // SearchField : String; // FromCursor Options: // True : Search from current record // False: Search from table end based // on SearchAhead value. If // SearchAhead is True then // Search is from First record // forward, otherwise, it is // from the last record toward // the top. FromCursor, // FromCursor : Boolean; // SearchAhead Options: // True : Search toward table bottom // False: Search toward table top SearchAhead, // SearchAhead : Boolean; // ApplyCase Options: // True : Search is case sensitive // False: Search is case insensitive ApplyCase, // ApplyCase : Boolean; // ShowMessages Options: // True : Messages dialogs are displayed // False: Messages dialogs are not displayed ShowMessages, // ShowMessages : Boolean; // MatchValue Options: // 0: Match at Start // 1: Match in Middle // 2: Match at End // 3: Match AnyWhere // 4: Exact Match MatchValue // MatchValue : Integer ); // ): Boolean; //True if found, False otherwise. End; Initialization UnitName := 'ads_DlgDBLocate'; ProcName := 'Unknown'; End. //