123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- unit SheetSelectFrm;
- interface
- uses
- SMXLS, ZjCells, SMCells,
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, CheckLst, ZJGrid;
- type
- TSheetSelectForm = class(TForm)
- btnOK: TButton;
- btnCancel: TButton;
- zgExcelSheets: TZJGrid;
- procedure zgExcelSheetsCellCanEdit(Sender: TObject;
- const ACoord: TPoint; var Allow: Boolean);
- procedure zgExcelSheetsSetCellText(Sender: TObject;
- const ACoord: TPoint; var Value: String; DisplayText: Boolean);
- procedure zgExcelSheetsGetCellText(Sender: TObject;
- const ACoord: TPoint; var Value: String; DisplayText: Boolean);
- private
- FExcel: TMSExcel;
- FIsMulit: Boolean;
- FSelectRow: Integer;
-
- procedure InitGrid(AExcel: TMSExcel);
- procedure SetIsMulit(const Value: Boolean);
- public
- constructor Create(AExcel: TMSExcel);
- procedure AssignResult(ASelects: TList);
- function SelectResult: TSpreadSheet;
- // ¿É·ñ¶àÑ¡
- property IsMulti: Boolean read FIsMulit write SetIsMulit;
- end;
- function SelectSheets(AExcel: TMSExcel; ASelects: TList): Boolean;
- function SelectSheet(AExcel: TMSExcel; var ASheet: TSpreadSheet): Boolean;
- implementation
- {$R *.dfm}
- function SelectSheets(AExcel: TMSExcel; ASelects: TList): Boolean;
- var
- SelectForm: TSheetSelectForm;
- begin
- SelectForm := TSheetSelectForm.Create(AExcel);
- try
- SelectForm.IsMulti := True;
- Result := SelectForm.ShowModal = mrOk;
- if Result then
- SelectForm.AssignResult(ASelects);
- finally
- SelectForm.Free;
- end;
- end;
- function SelectSheet(AExcel: TMSExcel; var ASheet: TSpreadSheet): Boolean;
- var
- SelectForm: TSheetSelectForm;
- begin
- SelectForm := TSheetSelectForm.Create(AExcel);
- try
- SelectForm.IsMulti := False;
- Result := SelectForm.ShowModal = mrOk;
- if Result then
- ASheet := SelectForm.SelectResult;
- finally
- SelectForm.Free;
- end;
- end;
- { TSheetSelectForm }
- procedure TSheetSelectForm.AssignResult(ASelects: TList);
- var
- i: Integer;
- begin
- ASelects.Clear;
- for i := 1 to zgExcelSheets.RowCount - 1 do
- if zgExcelSheets.Cells[1, i].Text = 'True' then
- ASelects.Add(zgExcelSheets.Rows[i].Data);
- end;
- constructor TSheetSelectForm.Create(AExcel: TMSExcel);
- begin
- inherited Create(nil);
- InitGrid(AExcel);
- FSelectRow := 1;
- end;
- procedure TSheetSelectForm.InitGrid(AExcel: TMSExcel);
- var
- i: Integer;
- begin
- zgExcelSheets.RowCount := 1;
- zgExcelSheets.Cells[1, 0].Text := 'Ñ¡Ôñ';
- zgExcelSheets.CellClass.Cols[1] := TZjCheckBoxCell;
- zgExcelSheets.Cells[2, 0].Text := '¹¤×÷±í';
- zgExcelSheets.ColWidths[2] := 200;
- zgExcelSheets.RowCount := AExcel.Sheets.Count + 1;
- for i := 0 to AExcel.SheetNames.Count - 1 do
- begin
- zgExcelSheets.Cells[2, i+1].Text := AExcel.SheetNames.Strings[i];
- zgExcelSheets.Rows[i+1].Data := AExcel.Sheets.Spreadsheet(i);
- end;
- end;
- function TSheetSelectForm.SelectResult: TSpreadSheet;
- var
- i: Integer;
- begin
- for i := 1 to zgExcelSheets.RowCount - 1 do
- if zgExcelSheets.Cells[1, i].Text = 'True' then
- begin
- Result := TSpreadSheet(zgExcelSheets.Rows[i].Data);
- Break;
- end;
- end;
- procedure TSheetSelectForm.zgExcelSheetsCellCanEdit(Sender: TObject;
- const ACoord: TPoint; var Allow: Boolean);
- begin
- Allow := (ACoord.X = 1) and (ACoord.Y > 0);
- end;
- procedure TSheetSelectForm.zgExcelSheetsSetCellText(Sender: TObject;
- const ACoord: TPoint; var Value: String; DisplayText: Boolean);
- begin
- if Value = 'True' then
- FSelectRow := ACoord.Y
- else
- FSelectRow := -1;
- zgExcelSheets.Invalidate;
- end;
- procedure TSheetSelectForm.zgExcelSheetsGetCellText(Sender: TObject;
- const ACoord: TPoint; var Value: String; DisplayText: Boolean);
- begin
- if (ACoord.X = 1) and (ACoord.Y > 0) then
- begin
- if FSelectRow = ACoord.Y then
- Value := 'True'
- else
- Value := 'False';
- end;
- end;
- procedure TSheetSelectForm.SetIsMulit(const Value: Boolean);
- begin
- FIsMulit := Value;
- if not FIsMulit then
- begin
- zgExcelSheets.OnGetCellText := zgExcelSheetsGetCellText;
- zgExcelSheets.OnSetCellText := zgExcelSheetsSetCellText;
- end;
- end;
- end.
|