📄 listsellcaseunit.pas
字号:
Unit ListSellCaseUnit;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, DBGridEh, AAFont, AACtrls, DB, ADODB, Math,
LbSpeedButton, StdCtrls, RealOneProgressBar, ComCtrls, DBCtrls, DBTables,
Mask, DBCtrlsEh, LbButton;
Type
TListSellCaseForm = Class(TForm)
Panel1: TPanel;
Splitter1: TSplitter;
Splitter3: TSplitter;
DBGridEH1: TDBGridEh;
Splitter2: TSplitter;
DBGridEh2: TDBGridEh;
Splitter4: TSplitter;
DBGridEh3: TDBGridEh;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
DataSource2: TDataSource;
ADOQuery2: TADOQuery;
DataSource3: TDataSource;
ADOQuery3: TADOQuery;
AALabel1: TAALabel;
Panel2: TPanel;
Panel3: TPanel;
LbSpeedButton2: TLbSpeedButton;
LbSpeedButton1: TLbSpeedButton;
StringGrid1: TStringGrid;
ADOQuery4: TADOQuery;
DataSource4: TDataSource;
AALabel3: TAALabel;
RealOneProgressBar1: TRealOneProgressBar;
RealOneProgressBar2: TRealOneProgressBar;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
AALabel6: TAALabel;
DBText2: TDBText;
AALabel32: TAALabel;
DBText4: TDBText;
AALabel7: TAALabel;
DBText5: TDBText;
AALabel8: TAALabel;
DBText6: TDBText;
DBText1: TDBText;
AALabel21: TAALabel;
TabSheet2: TTabSheet;
Label15: TLabel;
Label16: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label29: TLabel;
Label55: TLabel;
AALabel2: TAALabel;
StaticText12: TStaticText;
StaticText13: TStaticText;
StaticText14: TStaticText;
StaticText15: TStaticText;
StaticText16: TStaticText;
StaticText17: TStaticText;
StaticText18: TStaticText;
StaticText19: TStaticText;
StaticText20: TStaticText;
StaticText21: TStaticText;
StaticText30: TStaticText;
StaticText31: TStaticText;
StaticText23: TStaticText;
StaticText24: TStaticText;
StaticText25: TStaticText;
StaticText26: TStaticText;
StaticText27: TStaticText;
StaticText28: TStaticText;
StaticText29: TStaticText;
StaticText32: TStaticText;
StaticText33: TStaticText;
Splitter5: TSplitter;
PageControl2: TPageControl;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
AALabel13: TAALabel;
AALabel14: TAALabel;
AALabel12: TAALabel;
AALabel22: TAALabel;
AALabel23: TAALabel;
AALabel24: TAALabel;
AALabel25: TAALabel;
AALabel19: TAALabel;
AALabel18: TAALabel;
AALabel9: TAALabel;
DBText3: TDBText;
DBText7: TDBText;
DBText8: TDBText;
DBText9: TDBText;
DBText10: TDBText;
DBText11: TDBText;
DBText12: TDBText;
DBText13: TDBText;
DBText14: TDBText;
DBText15: TDBText;
Bevel2: TBevel;
AALabel4: TAALabel;
AALabel5: TAALabel;
AALabel10: TAALabel;
DBText16: TDBText;
DBText17: TDBText;
DBText18: TDBText;
AALabel11: TAALabel;
AALabel15: TAALabel;
AALabel16: TAALabel;
DBText19: TDBText;
DBText20: TDBText;
DBText21: TDBText;
ADOQuery5: TADOQuery;
DataSource5: TDataSource;
Panel4: TPanel;
AALabel17: TAALabel;
AALabel20: TAALabel;
AALabel26: TAALabel;
DBText22: TDBText;
DBText23: TDBText;
StaticText34: TStaticText;
AALabel27: TAALabel;
DBText24: TDBText;
AALabel28: TAALabel;
DBText25: TDBText;
AALabel93: TAALabel;
DBText26: TDBText;
AALabel94: TAALabel;
AALabel95: TAALabel;
DBNumberEditEh25: TDBNumberEditEh;
AALabel96: TAALabel;
AALabel98: TAALabel;
DBNumberEditEh21: TDBNumberEditEh;
DBNumberEditEh22: TDBNumberEditEh;
AALabel89: TAALabel;
DBText27: TDBText;
AALabel84: TAALabel;
AALabel86: TAALabel;
AALabel116: TAALabel;
DBDateTimeEditEh14: TDBDateTimeEditEh;
DBDateTimeEditEh15: TDBDateTimeEditEh;
DBNumberEditEh23: TDBNumberEditEh;
AALabel118: TAALabel;
AALabel29: TAALabel;
DBNumberEditEh1: TDBNumberEditEh;
AALabel30: TAALabel;
DBNumberEditEh2: TDBNumberEditEh;
Bevel1: TBevel;
PageControl3: TPageControl;
TabSheet5: TTabSheet;
TabSheet6: TTabSheet;
StaticText1: TStaticText;
Panel5: TPanel;
AALabel31: TAALabel;
DBNumberEditEh3: TDBNumberEditEh;
AALabel33: TAALabel;
DBNumberEditEh4: TDBNumberEditEh;
AALabel34: TAALabel;
AALabel35: TAALabel;
DBNumberEditEh5: TDBNumberEditEh;
AALabel36: TAALabel;
LbButton1: TLbButton;
AALabel37: TAALabel;
AALabel38: TAALabel;
AALabel39: TAALabel;
DBNumberEditEh6: TDBNumberEditEh;
AALabel40: TAALabel;
DBNumberEditEh7: TDBNumberEditEh;
LbButton2: TLbButton;
Panel6: TPanel;
AALabel41: TAALabel;
AALabel42: TAALabel;
AALabel43: TAALabel;
AALabel44: TAALabel;
AALabel45: TAALabel;
AALabel46: TAALabel;
AALabel47: TAALabel;
DBNumberEditEh8: TDBNumberEditEh;
DBNumberEditEh9: TDBNumberEditEh;
DBNumberEditEh10: TDBNumberEditEh;
LbButton3: TLbButton;
DBNumberEditEh11: TDBNumberEditEh;
DBNumberEditEh12: TDBNumberEditEh;
LbButton4: TLbButton;
LbButton5: TLbButton;
Procedure InitRealBar(RBar: TRealOneProgressBar; Max1, Min1, Pos1:
integer);
Function GetHourseHor: integer;
Function GetPercentageBySelltype(stype: String; Houres: integer; Var
per100: String):
String;
Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
Procedure FormCreate(Sender: TObject);
Procedure DBGridEh1CellClick(Column: TColumnEh);
Procedure DBGridEh2CellClick(Column: TColumnEh);
Procedure LbSpeedButton2Click(Sender: TObject);
Procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; x,
y: integer);
Procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: integer;
Rect: TRect; State: TGridDrawState);
Procedure LbSpeedButton1Click(Sender: TObject);
Procedure StringGrid1Click(Sender: TObject);
Procedure StringGrid1DblClick(Sender: TObject);
Procedure DBGridEh3CellClick(Column: TColumnEh);
Procedure DBNumberEditEh25Change(Sender: TObject);
Procedure DBNumberEditEh5Change(Sender: TObject);
Procedure DBNumberEditEh10Change(Sender: TObject);
Procedure LbButton2Click(Sender: TObject);
Procedure LbButton1Click(Sender: TObject);
Procedure LbButton3Click(Sender: TObject);
Procedure DBNumberEditEh3Change(Sender: TObject);
Procedure DBNumberEditEh8Change(Sender: TObject);
Procedure LbButton4Click(Sender: TObject);
Procedure LbButton5Click(Sender: TObject);
Procedure DBNumberEditEh23Change(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
ListSellCaseForm : TListSellCaseForm;
MX, MY : integer;
roomlist : TStringlist;
BendLoadDB : Boolean;
Implementation
Uses DM, ViewUnitUnit, PUBFunction, CALMoneyx;
{$R *.dfm}
Procedure TListSellCaseForm.FormClose(Sender: TObject;
Var Action: TCloseAction);
Begin
If ADOQuery5.Active Then Begin
ADOQuery5.Cancel;
ADOQuery5.Close;
End;
roomlist.Free;
Action := cafree;
ListSellCaseForm := Nil;
End;
Procedure TListSellCaseForm.FormCreate(Sender: TObject);
Begin
roomlist := TStringlist.create;
ADOQuery1.Active := true;
If ADOQuery1.recordcount > 0 Then
DBGridEh1CellClick(DBGridEH1.Columns.Items[0]);
End;
Procedure TListSellCaseForm.DBGridEh1CellClick(Column: TColumnEh);
Begin
With ADOQuery2 Do Begin
sql.Text :=
'select * FROM 项目信息表 WHERE 公司编号=''' +
ADOQuery1.fieldbyname('公司编号').Text + '''';
open;
End;
DBGridEh2CellClick(DBGridEh2.Columns.Items[0]);
End;
Procedure TListSellCaseForm.DBGridEh2CellClick(Column: TColumnEh);
Begin
With ADOQuery3 Do Begin
sql.Text :=
'SELECT * from 单体信息表 WHERE 公司编号=''' +
ADOQuery1.fieldbyname('公司编号').Text + ''' and 项目编号=''' +
ADOQuery2.fieldbyname('项目编号').Text + '''';
open;
DBGridEh3CellClick(DBGridEh3.Columns.Items[0]);
End;
End;
Procedure TListSellCaseForm.LbSpeedButton2Click(Sender: TObject);
Begin
Close;
End;
Procedure TListSellCaseForm.StringGrid1MouseMove(Sender: TObject;
Shift: TShiftState; x, y: integer);
Begin
MX := x;
MY := y;
End;
Procedure TListSellCaseForm.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: integer; Rect: TRect; State: TGridDrawState);
Var
BUYtype : String;
Index : integer;
Begin
With StringGrid1 Do Begin
If (ARow = 0) Or (ACol = 0) Then
Canvas.Brush.Color := clBTNFACE
Else Begin
If cells[ACol, ARow] = '' Then
Canvas.Brush.Color := clBTNFACE
Else Begin
If roomlist.Count > 0 Then Begin
Index := roomlist.IndexOf(cells[ACol, ARow]);
If Index >= 0 Then Begin
BUYtype := Trim(roomlist.Strings[Index + 1]);
If BUYtype = '预(销)售' Then
Canvas.Brush.Color := cllime
Else If BUYtype = '预留' Then
Canvas.Brush.Color := clYellow
Else If BUYtype = '预定' Then
Canvas.Brush.Color := clAqua
Else If BUYtype = '未售' Then
Canvas.Brush.Color := clwhite
Else If BUYtype = '租赁' Then
Canvas.Brush.Color := clFuchsia
Else If BUYtype = '抵押' Then
Canvas.Brush.Color := clSkyblue
Else If BUYtype = '拆迁还建' Then
Canvas.Brush.Color := clSilVer;
End;
End;
End;
End;
Canvas.Font.Size := 12;
If (ACol = col) And (ARow = row) Then Begin
Canvas.Font.Name := '黑体';
Canvas.Font.Color := clred;
End
Else Begin
Canvas.Font.Name := '宋体';
Canvas.Font.Color := clblack;
End;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, cells[ACol, ARow]);
End;
End;
Function TListSellCaseForm.GetPercentageBySelltype(stype: String;
Houres: integer; Var per100: String): String;
Var
ado4 : TADOQuery;
Begin
ado4 := TADOQuery.create(self);
With ado4 Do Begin
connection := DM.DataModule2.ADOConnection1;
sql.Text := 'select COUNT(房号) from 单元信息表 WHERE 公司编号=''' +
ADOQuery1.fieldbyname('公司编号').Text + ''' and 项目编号=''' +
ADOQuery2.fieldbyname('项目编号').Text + ''' and 幢号=''' +
ADOQuery3.fieldbyname('幢号').Text + ''' AND 销售类型=''' + stype +
'''';
open;
// result := IntToStr(recordcount);
result := Fields[0].Text;
If Fields[0].AsInteger = 0 Then
per100 := '^0^'
Else
per100 := Copy(FloatToStr(roundto((Fields[0].AsInteger / Houres) * 100,
-2)), 0, 5) + '%';
Free;
End;
End;
Procedure TListSellCaseForm.LbSpeedButton1Click(Sender: TObject);
Var
i, j, layer, Houres: integer;
HLID, HRID : String;
LLID, LRID : integer;
HOURSEID : String;
Begin
InitRealBar(RealOneProgressBar2, 4, 0, 0); //总进度
InitRealBar(RealOneProgressBar1, StringGrid1.RowCount - 1, 0, 0);
For i := 1 To StringGrid1.RowCount - 1 Do Begin
RealOneProgressBar1.Position := RealOneProgressBar1.Position + 1;
StringGrid1.Rows[i].Clear;
End;
StringGrid1.RowCount := 2;
StringGrid1.ColCount := 2;
RealOneProgressBar2.Position := RealOneProgressBar2.Position + 1;
//第1步骤完成
With ADOQuery3 Do Begin
If recordcount = 0 Then Exit;
layer := StrToIntDef(fieldbyname('总层数').Text, 0);
Houres := StrToIntDef(fieldbyname('总套数').Text, 0);
End;
With StringGrid1 Do Begin
If layer > 0 Then
RowCount := layer + 1
Else
RowCount := 2;
ColCount := GetHourseHor + 1;
cells[0, 0] := '楼层';
InitRealBar(RealOneProgressBar1, RowCount + ColCount, 0, 0);
For i := 1 To RowCount Do Begin
cells[0, i] := IntToStr(i);
RealOneProgressBar1.Position := RealOneProgressBar1.Position + 1;
End;
For i := 1 To ColCount Do Begin
cells[i, 0] := IntToStr(i);
RealOneProgressBar1.Position := RealOneProgressBar1.Position + 1;
End;
StringGrid1.Refresh;
End;
roomlist.Clear;
RealOneProgressBar2.Position := RealOneProgressBar2.Position + 1;
//第2步骤完成
With ADOQuery4 Do Begin
For i := 1 To layer Do Begin
Close;
sql.Text := 'select * from 单元信息表 where 公司编号='''
+
ADOQuery1.fieldbyname('公司编号').Text + ''' and 项目编号=''' +
ADOQuery2.fieldbyname('项目编号').Text + ''' and 幢号=''' +
ADOQuery3.fieldbyname('幢号').Text + ''' and 所在楼层='
+ IntToStr(i) + ' ORDER BY 房号';
open;
If recordcount > 0 Then Begin
InitRealBar(RealOneProgressBar1, recordcount, 0, 0);
For j := 0 To recordcount - 1 Do Begin
HOURSEID := fieldbyname('房号').Text;
roomlist.Add(HOURSEID);
roomlist.Add(fieldbyname('销售类型').Text);
HRID := splitRoom(HOURSEID, HLID);
LLID := StrToInt(HLID);
LRID := StrToInt(HRID);
StringGrid1.cells[LRID, LLID] := HOURSEID;
Next;
RealOneProgressBar1.Position := RealOneProgressBar1.Position + 1;
End;
End;
End;
End;
RealOneProgressBar2.Position := RealOneProgressBar2.Position + 1;
//第3步骤完成
InitRealBar(RealOneProgressBar1, 7, 0, 0);
StaticText16.Caption := GetPercentageBySelltype('预(销)售', Houres,
HOURSEID);
StaticText23.Caption := HOURSEID;
RealOneProgressBar1.Position := RealOneProgressBar1.Position + 1;
StaticText17.Caption := GetPercentageBySelltype('预定', Houres, HOURSEID);
StaticText24.Caption := HOURSEID;
RealOneProgressBar1.Position := RealOneProgressBar1.Position + 1;
StaticText18.Caption := GetPercentageBySelltype('预留', Houres, HOURSEID);
StaticText25.Caption := HOURSEID;
RealOneProgressBar1.Position := RealOneProgressBar1.Position + 1;
StaticText21.Caption := GetPercentageBySelltype('租赁', Houres, HOURSEID);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -