⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listsellcaseunit.pas

📁 短小而实用的房地产销售管理软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -