4FezGPW(;{#s5x9Z>a
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 Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TAutoPanel.AddHits(ItemIndex :Integer; Hits :array of string);
+var
+ m,n,i :Integer;
+begin
+
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:= 0 to m - 1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TAutoPanel.AKeyDown(Sender :TObject; var Key :Word; Shift :TShiftState);
+begin
+ //
+end;
+
+procedure TAutoPanel.AProgressEditorChange(Sender :TObject);
+begin
+ //
+end;
+
+procedure TAutoPanel.AKeyPress(Sender :TObject; var Key :Char);
+begin
+ if (Sender is TComboBox) or (Sender is Tedit) or (Sender is TMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TAutoPanel.ClearHits(ItemIndex :Integer);
+var
+ n :Integer;
+begin
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+constructor TAutoPanel.Create(AOwner :TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft := 20;
+ FTop := 20;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+ FTitleVisible := True;
+ FDataReadOnly := True;
+end;
+
+{ ֶεؼķ}
+procedure TAutoPanel.CreateEditors(var DS :TDataSource; cnnstr :String);
+
+var
+ i,j,n,This_Index,TextHeight :Integer;
+ tmp_col0,Tmp_Row0,tmp_col1,Tmp_Row1 :Integer;
+ XXX :TStringList;
+ tmpFlag :Boolean;
+begin
+ if (Store_Name = '')
+ or (Data_BerthTable = '')
+ or (DataField_BerthArea = '') then
+ exit;
+ { ͷȫؼڴ}
+ FreeEditors;
+
+ if DS = nil then exit;
+ if DataSource = nil then FDataSource := Ds;
+ if not DataSource.DataSet.Active then exit;
+ if (DataSource.DataSet is TAdoDataSet) = False then exit;
+ FPageCount := 0;
+ tmp_col1 := -1;
+ Tmp_Row1 := 0;
+
+ n := DataSource.DataSet.RecordCount;
+ if n <= 0 then exit;
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+
+ { ڴ}
+ SetLength(Labels,n);
+ SetLength(ProgressBars,n);
+ SetLength(ProgressEditor,n);
+ SetLength(Shapes,n);
+ if Columns = 0 then Columns := 6;
+ try
+ tmpado := TadoDataset.Create(Owner);
+ tmpDs := TDatasource.Create(Owner);
+ tmpDs.DataSet := tmpado;
+ with tmpado do
+ begin
+ Active := False;
+ Fcnnstr := cnnstr;
+ tmpado.ConnectionString := Fcnnstr;
+ //tmpado.Connection := (DataSource.DataSet as TAdoDataset).Connection;
+ tmpado.CommandText := ' Select '+DataField_BerthArea+' '
+ + ' from '+Data_BerthTable+' where '+DataField_BerthArea+' is not null'
+ + ' and '+Data_StoreField+' = '''+Store_Name+''''
+ + ' Group by '+DataField_BerthArea+' order by '+DataField_BerthArea+'';
+ Active := True;
+ FPageCount := RecordCount;
+ if FPageCount = 0 then exit;
+
+ first;
+ // PageControl
+ FPageControl := TPageControl.Create(Owner);
+ FPageControl.Parent := Self;
+ FPageControl.Font.Name := '';
+ FPageControl.Font.Size := 9;
+ FPageControl.Align := alClient;
+ FPageControl.Visible := False;
+
+ { ڴ}
+ setlength(FTabSheets,FPageCount+1);
+ setlength(FScrollBox,FPageCount+1);
+ XXX := TStringList.Create();
+ for j := 0 to FPageCount do
+ begin
+ { FPageControlҳ}
+ FTabSheets[j] := TTabSheet.Create(Owner);
+ FTabSheets[j].Parent := FPageControl;
+ FTabSheets[j].ParentFont := True;
+ FTabSheets[j].PageControl := FPageControl;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].PageIndex := j;
+
+ if j < FPageCount then
+ begin
+ FTabSheets[j].Caption := '' + trim(fieldByName(DataField_BerthArea).AsString);
+ FTabSheets[j].Hint := trim(fieldByName(DataField_BerthArea).AsString);
+ XXX.Append(trim(fieldByName(DataField_BerthArea).AsString));
+ end
+ else
+ begin
+ FTabSheets[j].Caption := 'δָ';
+ FTabSheets[j].Hint := '';
+ XXX.Append('δָ');
+ end;
+ FTabSheets[j].ShowHint := False;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].Align := alClient;
+
+ //
+ FScrollBox[j] := TScrollBox.Create(Owner);
+ FScrollBox[j].Visible := True;
+ FScrollBox[j].Parent := FTabSheets[j];
+ FScrollBox[j].Color := ClBlack;//clTeal;
+ FScrollBox[j].Align := alClient;
+ FScrollBox[j].Hint := FTabSheets[j].Hint;
+ FScrollBox[j].ShowHint := False;
+
+ next;
+ end;
+
+ end;
+
+ if FEditorstyle = Tscombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = Tsedit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ //DataField_BerthArea
+ if DataSource.DataSet.Fieldbyname(DataField_BerthArea).AsVariant = null then
+ This_Index := FPageCount
+ else
+ This_Index := XXX.IndexOf(trim(DataSource.DataSet.Fieldbyname(DataField_BerthArea).Asstring));
+
+ tmpFlag := False;
+ if DataSource.DataSet.Fieldbyname(DataField_IconLeft).AsVariant <> null then
+ tmp_col0 := DataSource.DataSet.Fieldbyname(DataField_IconLeft).Asinteger -1
+ else
+ begin
+ tmpFlag := True;
+ if tmp_col1 = Columns -1 then
+ begin
+ tmp_col1 := 0;
+ tmp_Row1 := tmp_Row1 +1;
+ end
+ else
+ tmp_col1 := tmp_col1 + 1;
+ tmp_col0 := tmp_col1;
+ This_Index := FPageCount;
+ end;
+
+ if DataSource.DataSet.Fieldbyname(DataField_IconTop).AsVariant <> null then
+ tmp_Row0 := DataSource.DataSet.Fieldbyname(DataField_IconTop).Asinteger - 1
+ else
+ begin
+ if not tmpFlag then
+ begin
+ if tmp_col1 = Columns - 1 then
+ begin
+ tmp_col1 := 0;
+ tmp_Row1 := tmp_Row1 +1;
+ end
+ else
+ tmp_col1 := tmp_col1 + 1;
+ end;
+ tmp_Row0 := tmp_Row1;
+ This_Index := FPageCount;
+ end;
+ { }
+ Labels[i] := TLabel.Create(owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := (FScrollBox[This_Index] as TScrollBox); // FScrollBox[This_Index];
+ Labels[i].Font.Name := '';
+ Labels[i].Font.Size := 9;
+ Labels[i].Font.Color := ClBlue;
+ Labels[i].OnClick := LabelsClick;
+ //Labels[i].Font.Style := [FsBold];
+ Labels[i].Transparent := True;
+ if DataSource.DataSet.Fieldbyname(DataField_Title).AsVariant <> null then
+ Labels[i].caption := DataSource.DataSet.Fieldbyname(DataField_Title).AsString
+ else
+ Labels[i].caption := '';
+ Labels[i].Hint := 'λ[' + Labels[i].caption + ']';
+ Labels[i].ShowHint := True;
+ if FEditorstyle = TsMemo then
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*3+30) + 2;
+ Labels[i].Left := FLeft + (maxLabelLen + 40) * tmp_Col0 + 10;
+ Labels[i].Width := maxLabelLen;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*2+30) + 2;
+ Labels[i].Left := FLeft + (maxLabelLen + 30) * tmp_Col0 + 10;
+ Labels[i].Width := maxLabelLen;
+ end;
+
+ { ݶ}
+ ProgressEditor[i] := Tedit.Create(Owner);
+ ProgressEditor[i].visible := False;
+ ProgressEditor[i].Parent := FScrollBox[This_Index];
+ if DataSource.DataSet.Fieldbyname(DataField_Progress).AsVariant <> null then
+ ProgressEditor[i].Text := DataSource.DataSet.Fieldbyname(DataField_Progress).AsString
+ else
+ ProgressEditor[i].Text := '0';
+ ProgressEditor[i].OnChange := AProgressEditorChange;
+
+ { Ϣʾݶ}
+ if FEditorstyle = Tscombox then
+ begin
+ comEditors[i] := TComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox[This_Index]; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+20;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ comEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := True;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkHorizontalBar;
+ ProgressBars[i].Left := comEditors[i].Left;
+ ProgressBars[i].Width := comEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := comEditors[i].Top+comEditors[i].height+2;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ edEditors[i] := Tedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox[This_Index];
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+20;
+ edEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ edEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := True;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkHorizontalBar;
+ ProgressBars[i].Left := edEditors[i].Left;
+ ProgressBars[i].Width := edEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := edEditors[i].Top+edEditors[i].height+2;;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end
+ else
+ begin
+ MemoEditors[i] := Tmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox[This_Index];
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+20;
+ MemoEditors[i].Height := 60;
+ MemoEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ MemoEditors[i].Lines.Add(DataSource.DataSet.Fieldbyname(DataField_Editor).AsString);
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := False;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkVerticalBar;
+ ProgressBars[i].Left := MemoEditors[i].Left + MemoEditors[i].Width +1;
+ ProgressBars[i].Width := 10;
+ ProgressBars[i].Height := MemoEditors[i].Height;
+ ProgressBars[i].Top := MemoEditors[i].Top;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end;
+ if ProgressBars[i].Progress <= 20 then
+ ProgressBars[i].ForeColor := RGB(48,48,96)
+ else if (ProgressBars[i].Progress > 20) and (ProgressBars[i].Progress <= 40) then
+ ProgressBars[i].ForeColor := RGB(48,48,144)
+ else if (ProgressBars[i].Progress > 40) and (ProgressBars[i].Progress <= 60) then
+ ProgressBars[i].ForeColor := RGB(96,48,144)
+ else if (ProgressBars[i].Progress > 60) and (ProgressBars[i].Progress <= 80) then
+ ProgressBars[i].ForeColor := RGB(144,48,144)
+ else if ProgressBars[i].Progress > 80 then
+ ProgressBars[i].ForeColor := RGB(200,48,48);
+
+ Shapes[i] := TShape.Create(Owner);
+ Shapes[i].Parent := FScrollBox[This_Index];
+ Shapes[i].Left := Labels[i].Left - 10;
+ Shapes[i].top := Labels[i].Top - 10;
+ if FEditorstyle = TsMemo then
+ begin
+ Shapes[i].height := ProgressBars[i].height + Labels[i].height +20 +10;
+ Shapes[i].Width := (ProgressBars[i].left - Labels[i].left) + ProgressBars[i].Width + 20;
+ end
+ else
+ begin
+ Shapes[i].height := (ProgressBars[i].Top - Labels[i].Top) + ProgressBars[i].Height + 20;
+ Shapes[i].Width := Labels[i].Width +20;
+ end;
+ Shapes[i].Brush.Color := clSkyBlue;
+ Shapes[i].Visible := True;
+ Shapes[i].SendToBack;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ tmpado.Close;
+ XXX.Free;
+ if FPageControl.PageCount > 0 then
+ begin
+ FPageControl.ActivePageIndex := FPageControl.PageCount-1;
+ FPageControl.ActivePageIndex := 0;
+ end;
+ Finally
+ FPageControl.Visible := True;
+ end;
+end;
+
+destructor TAutoPanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TAutoPanel.comEditor(Index :Integer) :TComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TAutoPanel.edEditor(Index :Integer) :Tedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TAutoPanel.MemoEditor(Index :Integer) :TMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+procedure TAutoPanel.inti_Grid(sender :TObject);
+begin
+ try
+ // FP_Parent
+ FP_Parent := TPanel.Create(Owner);
+ with FP_Parent Do
+ begin
+ Parent := Self;
+ Visible := False;
+ Font.Name := '';
+ Font.Size := 9;
+ Font.Style:= [fsBold];
+ Align := AlNone;
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ Width := 380;
+ Height := 250;
+ try
+ Left := round(((Sender as Tlabel).Parent.Width-380)/2);
+ Top := round(((Sender as Tlabel).Parent.height-250)/2);
+ except
+ Left := 0;
+ Top := 0;
+ end;
+ end;
+
+ FP_Move := TMovePanel.Create(Owner);
+ with FP_Move do
+ begin
+ Parent := FP_Parent;
+ ParentFont := true;
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ Height := 26;
+ Align := AlTop;
+ Color := clSkyBlue;
+ Caption := '';
+ OnDblClick := FP_MovePanelDblClick;
+ Visible := True;
+ end;
+
+ FPass_Grid := TDBGrid.Create(Owner);
+ with FPass_Grid do
+ begin
+ Parent := FP_Parent;
+ ParentFont := true;
+ Font.Style:= [];
+ Align := AlClient;
+ Visible := True;
+ DataSource := TmpDs;
+ end;
+ except
+ FPass_Grid := Nil;
+ FP_Move := Nil;
+ FP_Parent := Nil;
+ end;
+end;
+
+//ӦLabels[i]Click¼
+procedure TAutoPanel.LabelsClick(Sender: TObject);
+var
+ i :integer;
+ Tmp_Area,Tmp_Berth :String;
+begin
+ try
+ if FP_Parent = nil then inti_Grid(Sender);
+ if FP_Parent = nil then exit;
+ Tmp_Berth := trim((Sender as Tlabel).Caption);
+ Tmp_Area := trim(((Sender as Tlabel).Parent as TScrollBox).Hint);
+ if tmpado.Active then
+ begin
+ if tmpado.FieldValues['λ'] <> null then
+ if tmpado.FieldByName('λ').AsString = Tmp_Berth then
+ exit;
+ end;
+ screen.Cursor := crSQLWait;
+ //FP_Parent.Visible := False;
+ //FP_Parent.Left := FPageControl.Left + (Sender as Tlabel).Left + (Sender as Tlabel).Width + 28;
+ //FP_Parent.Top := FPageControl.Top + (Sender as Tlabel).top + (Sender as Tlabel).Height +4;
+ FP_Move.Caption := trim((Sender as Tlabel).Hint) + 'ϸб';
+ with tmpado do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ tmpado.CursorType := ctStatic;
+ tmpado.LockType := ltReadOnly;
+ CommandText := 'Exec '+Data_BerthListSql+' '''+Store_Name+''','''+Tmp_Area+''','''+Tmp_Berth+'''';
+ Active := True;
+ First;
+ EnableConTrols;
+ for i := 0 to Fields.Count -1 do
+ begin
+ Fields[i].Alignment := taCenter;
+ if i = 0 then
+ fields[i].DisplayWidth := 20
+ else
+ fields[i].DisplayWidth := 8;
+
+ Fpass_Grid.Columns[i].Title.Alignment := taCenter;
+ Fpass_Grid.Columns[i].Title.Font.Style:= [];
+ end;
+
+ end;
+ screen.Cursor := crDefault;
+ FP_Parent.Visible := True;
+ except
+ screen.Cursor := crDefault;
+ end;
+end;
+
+procedure TAutoPanel.FP_MovePanelDblClick(Sender: TObject);
+begin
+ FP_Parent.Visible := False;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TAutoPanel.FreeEditors;
+begin
+ if FPageControl <> nil then
+ begin
+ if FP_Parent <> nil then
+ begin
+ try
+ FPass_Grid.Free;
+ FP_Move.Free;
+ FP_Parent.Free;
+ except
+ //
+ end;
+ end;
+ FPass_Grid := nil;
+ FP_Move := nil;
+ FP_Parent := nil;
+ Shapes := nil;
+ ProgressBars := nil;
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox := nil;
+ tmpDs.Free;
+ tmpado.Free;
+ FPageControl.Free;
+ end;
+end;
+
+end.
+
diff --git a/G03贸易布匹检验/DbPanel/.svn/text-base/Dbpanel.pas.svn-base b/G03贸易布匹检验/DbPanel/.svn/text-base/Dbpanel.pas.svn-base
new file mode 100644
index 0000000..6278e0f
--- /dev/null
+++ b/G03贸易布匹检验/DbPanel/.svn/text-base/Dbpanel.pas.svn-base
@@ -0,0 +1,380 @@
+unit Dbpanel;
+
+interface
+uses
+ Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs,
+ ExtCtrls, dbctrls, stdctrls, db, ADODB, ComCtrls;
+
+type
+ TEditorstyle = (TsDbMemo,TsDBcombox,Tsdbedit);
+
+type
+ TDBPanel = class(TPanel)
+ private
+ { Private declarations }
+ FEditorstyle:Teditorstyle;
+ FLeft: Integer;
+ FTop: Integer;
+ maxTextLen: Integer;
+ maxLabelLen: Integer;
+ FTitleVisible :Boolean;
+ FScrollBox: TScrollBox; {ؼ}
+ FLineHeight: Integer;
+
+ //ؼ̬
+ MemoEditors: array of TDBMemo;
+ comEditors: array of TDBCombobox;
+ edEditors: array of TDBedit;
+ ProgressEditor :array of TDBedit;
+ Labels: array of TDBText; //ֶα⣬̬
+ ProgressBars: array of TProgressBar;
+
+ FDataSource: TDataSource; // Դ
+ FDataField_A: String; // DataField
+ FDataField_B: String; // DataField
+ FDataField_C: String; // DataField
+ FColumns: Integer; //ʾ
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender:TObject; var Key: Word; Shift:TShiftState);
+ procedure AKeyPress(Sender:TObject; var Key: Char);
+ procedure AProgressEditorChange(Sender: TObject);
+ function comEditor(Index: Integer):TDBComboBox;
+ function edEditor(Index: Integer):TDBedit;
+ function MemoEditor(Index: Integer): TDBMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner:TComponent); override;
+ destructor Destroy; override;
+ function Get_TitleVisible() :Boolean;
+ procedure Set_TitleVisible(Value : Boolean);
+ procedure Setedit(Value : TEditorstyle);
+ procedure CreateEditors(DS: TDataSource; ColCount: Integer); //ֶεؼ
+ procedure ClearHits(ItemIndex: Integer);
+ procedure AddHits(ItemIndex:Integer; Hits: array of string);
+
+ { Public declarations }
+ published
+
+ property LimitLeft: Integer read FLeft write FLeft default 10;
+ property LimitTop: Integer read FTop write FTop default 10;
+ property Editorstyle : TEditorstyle read FEditorstyle write Setedit default tsdbMemo;
+ property EditorWidth: Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth: Integer read maxLabelLen write maxLabelLen default 100;
+ property TitleVisible : Boolean read Get_TitleVisible write Set_TitleVisible default True;
+ property LineHeight: Integer read FLineHeight write FLineHeight default 15;
+ //property OnOkClick: TNotifyEvent read FClick write FClick;
+ property DataSource: TDataSource read FDataSource write FDataSource; //Դ
+ property DataField_Editor: String read FDataField_A write FDataField_A;
+ property DataField_Title: String read FDataField_B write FDataField_B;
+ property DataField_Progress: String read FDataField_C write FDataField_C;
+ property Columns: Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TDBPanel]);
+end;
+
+function TDBPanel.Get_TitleVisible() :Boolean;
+begin
+ Result := FTitleVisible;
+end;
+
+procedure TDBPanel.Set_TitleVisible(Value : Boolean);
+begin
+ FTitleVisible := Value;
+end;
+
+procedure TDBPanel.Setedit(Value : TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TDBPanel.AddHits(ItemIndex:
+Integer; Hits: array of string);
+var
+ m,n,i: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TDBPanel.AKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+ if (Sender is TDBComboBox) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBComboBox).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBComboBox).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBedit) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBedit).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBedit).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBMemo) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBMemo).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBMemo).DataSource.DataSet.Prior;
+ end;
+ end;
+end;
+
+procedure TDBPanel.AProgressEditorChange(Sender: TObject);
+begin
+ //
+end;
+
+procedure TDBPanel.AKeyPress(Sender: TObject; var Key: Char);
+begin
+ if (Sender is TDBComboBox) or (Sender is TDBedit) or (Sender is TDBMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TDBPanel.ClearHits(ItemIndex: Integer);
+var
+ n: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+constructor TDBPanel.Create(AOwner: TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft :=10;
+ FTop := 10;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+end;
+
+{ ֶεؼķ}
+procedure TDBPanel.CreateEditors(DS: TDataSource; ColCount: Integer);
+var
+ i, n, RowCount: Integer;
+ TextHeight: Integer;
+begin
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ n := DataSource.DataSet.RecordCount;
+ if n > 0 then
+ begin
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+ { }
+ if (FColumns = 0) or (FColumns <> ColCount) then FColumns := ColCount;
+ RowCount := n div Columns;
+ if n mod Columns <> 0 then inc(RowCount);
+ { ڴ}
+ FreeEditors;
+ SetLength(Labels,n);
+ SetLength(ProgressBars,n);
+ SetLength(ProgressEditor,n);
+ if FEditorstyle = TsDBcombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = TsDBEdit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+ { }
+ FScrollBox := TScrollBox.Create(Owner);
+ FScrollBox.Visible := False;
+ FScrollBox.Parent := Self;
+ FScrollBox.Align := alClient;
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ { }
+ Labels[i] := TDBText.Create(Owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := FScrollBox;
+ Labels[i].DataField := DataField_Title;
+ Labels[i].DataSource := DataSource;
+ Labels[i].Left := FLeft + (maxLabelLen + 36) * (i div RowCount)+16; //+maxTextLen
+ if FEditorstyle = TsDBMemo then
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*4+10) + 2;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*2+10) + 2;
+ Labels[i].Width := maxLabelLen;
+ end;
+ { ݶ}
+ ProgressEditor[i] := TDBedit.Create(Owner);
+ ProgressEditor[i].visible := False;
+ ProgressEditor[i].Parent := FScrollBox;
+ ProgressEditor[i].DataField := DataField_Progress;
+ ProgressEditor[i].DataSource := DataSource;
+ ProgressEditor[i].OnChange := AProgressEditorChange;
+
+ { Ϣʾݶ}
+ if FEditorstyle = TsDBcombox then
+ begin
+ comEditors[i] := TDBComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+20;
+ comEditors[i].DataSource := DataSource;
+ comEditors[i].DataField := DataField_Editor;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbHorizontal;
+ ProgressBars[i].Left := comEditors[i].Left;
+ ProgressBars[i].Width := comEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := comEditors[i].Top+comEditors[i].height+2;
+ ProgressBars[i].Position := i*4
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ edEditors[i] := TDBedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox;
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+20;
+ edEditors[i].DataSource := DataSource;
+ edEditors[i].DataField := DataField_Editor;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbHorizontal;
+ ProgressBars[i].Left := edEditors[i].Left;
+ ProgressBars[i].Width := edEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := edEditors[i].Top+edEditors[i].height+2;;
+ ProgressBars[i].Position := i*4
+ end
+ else
+ begin
+ MemoEditors[i] := TDBmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox;
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+20;
+ MemoEditors[i].DataSource := DataSource;
+ MemoEditors[i].DataField := DataField_Editor;
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbVertical;
+ ProgressBars[i].Left := MemoEditors[i].Left + MemoEditors[i].Width +1;
+ ProgressBars[i].Width := 10;
+ ProgressBars[i].Height := MemoEditors[i].Height;
+ ProgressBars[i].Top := MemoEditors[i].Top;
+ ProgressBars[i].Position := i*4
+ end;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ FScrollBox.Visible := True;
+ end;
+end;
+
+destructor TDBPanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TDBPanel.comEditor(Index: Integer): TDBComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TDBPanel.edEditor(Index: Integer): TDBedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TDBPanel.MemoEditor(Index: Integer): TDBMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TDBPanel.FreeEditors;
+begin
+ if FScrollBox <> nil then
+ begin
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox.Free;
+ FScrollBox := nil;
+ end;
+end;
+
+end.
+
\ No newline at end of file
diff --git a/G03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.dcu.svn-base b/G03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.dcu.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..6bb88fb0e1e1f8a65cf5824c6bc94ccd9ad7b50d
GIT binary patch
literal 12497
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 Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TJKFootpanel.AddHits(ItemIndex:
+Integer; Hits: array of string);
+var
+ m,n,i: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TJKFootpanel.AKeyPress(Sender: TObject; var Key: Char);
+begin
+ if (Sender is TDBComboBox) or (Sender is TDBedit) or (Sender is TDBMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TJKFootpanel.ClearHits(ItemIndex: Integer);
+var
+ n: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+{ ֶεؼķ}
+Function TJKFootpanel.CreateEditors(DS: TDataSource; ColCount: Integer):Integer ;
+var
+ i, n, RowCount: Integer;
+ TextHeight: Integer;
+begin
+ result := 120;
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ Columns := ColCount;
+ if Columns = 0 then exit;
+ n := DataSource.DataSet.fieldCount;
+ if n > 0 then
+ begin
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+ { }
+ if Columns > n then
+ Columns := n
+ else
+ Columns := ColCount;
+
+ RowCount := n div Columns;
+ if n mod Columns <> 0 then inc(RowCount);
+ { ڴ}
+ FreeEditors;
+ SetLength(Labels,n);
+ if FEditorstyle = TsDBcombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = TsDBEdit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+ { }
+ FScrollBox := TScrollBox.Create(Owner);
+ FScrollBox.Visible := False;
+ FScrollBox.Parent := Self;
+ FScrollBox.Align := alClient;
+ //FScrollBox.Color := clSkyBlue;
+ FScrollBox.OnDblClick := OnDblClick;
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ { }
+ Labels[i] := TLabel.Create(Owner);
+ Labels[i].visible := TitleVisible;
+ Labels[i].Parent := FScrollBox;
+ Labels[i].Caption := DataSource.DataSet.Fields[i].FieldName;
+ Labels[i].Left := FLeft + (maxLabelLen + 16) * (i div RowCount)+ 2; //+maxTextLen
+ if FEditorstyle = TsDBMemo then
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*2+4) + 12;
+ end
+ else
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*1 +12)
+ end;
+
+ { Ϣʾݶ}
+ if FEditorstyle = TsDBcombox then
+ begin
+ comEditors[i] := TDBComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+15;
+ comEditors[i].DataSource := DataSource;
+ comEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ comEditors[i].Font.Color := ClBlue;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ edEditors[i] := TDBedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox;
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+15;
+ edEditors[i].DataSource := DataSource;
+ edEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ edEditors[i].Font.Color := ClBlue;
+
+ end
+ else
+ begin
+ MemoEditors[i] := TDBmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox;
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+15;
+ MemoEditors[i].DataSource := DataSource;
+ MemoEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ MemoEditors[i].Font.Color := ClBlue;
+ end;
+ end;
+ if FEditorstyle = TsDBMemo then
+ result := RowCount*TextHeight*4 +20
+ else
+ result := RowCount*TextHeight*2 +20;
+ DataSource.DataSet.EnableControls;
+ FScrollBox.Visible := True;
+ end;
+end;
+
+destructor TJKFootpanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TJKFootpanel.comEditor(Index: Integer): TDBComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TJKFootpanel.edEditor(Index: Integer): TDBedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TJKFootpanel.MemoEditor(Index: Integer): TDBMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TJKFootpanel.FreeEditors;
+begin
+ if FScrollBox <> nil then
+ begin
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox.Free;
+ FScrollBox := nil;
+ end;
+end;
+
+
+procedure TJKFootpanel.AKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+{
+ if (Sender is TDBComboBox) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBComboBox).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBComboBox).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBedit) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBedit).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBedit).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBMemo) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBMemo).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBMemo).DataSource.DataSet.Prior;
+ end;
+ end;
+ }
+end;
+
+end.
+
diff --git a/G03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.dcu.svn-base b/G03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.dcu.svn-base
new file mode 100644
index 0000000000000000000000000000000000000000..ee1cc67a13211a78409ea928d6abf722f83dbdf6
GIT binary patch
literal 42037
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