123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- unit SelectDetailGLsFrm;
- interface
- uses
- ProjectGLDm, sdDB, mDataRecord,
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, StdCtrls, sdGridDBA, ZJGrid;
- type
- TSelectDetailGLsForm = class(TForm)
- pnlData: TPanel;
- btnOk: TButton;
- btnCancel: TButton;
- leSearch: TLabeledEdit;
- imgSearch: TImage;
- zgGL: TZJGrid;
- saGL: TsdGridDBA;
- procedure zgGLGetCellText(Sender: TObject; const ACoord: TPoint;
- var Value: String; DisplayText: Boolean);
- procedure zgGLSetCellText(Sender: TObject; const ACoord: TPoint;
- var Value: String; DisplayText: Boolean);
- procedure btnOkClick(Sender: TObject);
- procedure imgSearchClick(Sender: TObject);
- private
- FResults: TList;
- function FindProjectGL(AStr: string): TProjectGLRecord;
- public
- constructor Create(AProjectGLData: TProjectGLData);
- destructor Destroy; override;
- property Results: TList read FResults;
- end;
- function SelectDetailGLs(AProjectGLData: TProjectGLData; AGLs: TList): Boolean;
- implementation
- uses
- UtilMethods;
- {$R *.dfm}
- function SelectDetailGLs(AProjectGLData: TProjectGLData; AGLs: TList): Boolean;
- var
- SelectForm: TSelectDetailGLsForm;
- begin
- SelectForm := TSelectDetailGLsForm.Create(AProjectGLData);
- try
- Result := SelectForm.ShowModal = mrOk;
- if Result then
- AGLs.Assign(SelectForm.Results);
- finally
- SelectForm.Free;
- end;
- end;
- { TAddDetailGLsForm }
- constructor TSelectDetailGLsForm.Create(AProjectGLData: TProjectGLData);
- begin
- inherited Create(nil);
- saGL.DataView := AProjectGLData.sdvProjectGL;
- FResults := TList.Create;
- ClientHeight := 495;
- ClientWidth := 472;
- end;
- destructor TSelectDetailGLsForm.Destroy;
- begin
- FResults.Free;
- inherited;
- end;
- procedure TSelectDetailGLsForm.zgGLGetCellText(Sender: TObject;
- const ACoord: TPoint; var Value: String; DisplayText: Boolean);
- var
- Rec: TsdDataRecord;
- begin
- if (ACoord.X = 1) and (ACoord.Y > 0) then
- begin
- Rec := saGL.DataView.Records[ACoord.Y -1];
- if Assigned(Rec) and (FResults.IndexOf(Rec) >= 0) then
- Value := 'True'
- else
- Value := 'False';
- end;
- end;
- procedure TSelectDetailGLsForm.zgGLSetCellText(Sender: TObject;
- const ACoord: TPoint; var Value: String; DisplayText: Boolean);
- var
- Rec: TsdDataRecord;
- begin
- if (ACoord.X = 1) and (ACoord.Y > 0) then
- begin
- Rec := saGL.DataView.Records[ACoord.Y -1];
- if Value = 'True' then
- FResults.Add(Rec)
- else if Value = 'False' then
- FResults.Remove(Rec);
- end;
- end;
- procedure TSelectDetailGLsForm.btnOkClick(Sender: TObject);
- begin
- if FResults.Count > 0 then
- ModalResult := mrOk
- else
- TipMessage('没有选择任何工料。');
- end;
- function TSelectDetailGLsForm.FindProjectGL(AStr: string): TProjectGLRecord;
- function SearchProjectGL(ABegin, AEnd: Integer): TProjectGLRecord;
- var
- iGL: Integer;
- Rec: TProjectGLRecord;
- begin
- Result := nil;
- for iGL := ABegin to AEnd do
- begin
- Rec := TProjectGLRecord(saGL.DataView.Records[iGL]);
- if (Pos(AStr, Rec.Code.AsString) > 0) or
- (Pos(AStr, Rec.Name.AsString) > 0) then
- begin
- Result := Rec;
- Break;
- end;
- end;
- end;
- var
- iCur, iGL: Integer;
- GLRec: TProjectGLRecord;
- begin
- Result := nil;
- if AStr = '' then Exit;
- iCur := saGL.DataView.IndexOf(saGL.DataView.Current);
- Result := SearchProjectGL(iCur + 1, saGL.DataView.RecordCount - 1);
- if not Assigned(Result) then
- Result := SearchProjectGL(0, iCur);
- end;
- procedure TSelectDetailGLsForm.imgSearchClick(Sender: TObject);
- var
- Rec: TProjectGLRecord;
- begin
- Rec := FindProjectGL(leSearch.Text);
- if Assigned(Rec) then
- saGL.DataView.LocateInControl(Rec)
- else
- TipMessage(Format('找不到编号、名称含有“%s”的工料。', [leSearch.Text]));
- end;
- end.
|