mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-12 00:45:40 +02:00
207 lines
6.3 KiB
ObjectPascal
207 lines
6.3 KiB
ObjectPascal
unit U_ItemsSelector;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, StdCtrls, RzButton, RzPanel, ExtCtrls, Buttons, RzLstBox,
|
||
RzSplit,
|
||
|
||
U_BaseCommon, U_ResourceReport, ImgList, RzRadChk, siComp, siLngLnk;
|
||
|
||
type
|
||
TF_ItemsSelector = class(TForm)
|
||
RzPanel1: TRzPanel;
|
||
gbOkCancel: TRzGroupBox;
|
||
btOk: TRzBitBtn;
|
||
btCancel: TRzBitBtn;
|
||
RzSplitter1: TRzSplitter;
|
||
RzPanel2: TRzPanel;
|
||
RzPanel3: TRzPanel;
|
||
RzPanel4: TRzPanel;
|
||
RzPanel5: TRzPanel;
|
||
RzPanel6: TRzPanel;
|
||
lbAccessibleFields: TRzListBox;
|
||
Label1: TLabel;
|
||
Label2: TLabel;
|
||
btAddItem: TSpeedButton;
|
||
btRemoveItem: TSpeedButton;
|
||
lbSelectedFields: TRzListBox;
|
||
RzPanel7: TRzPanel;
|
||
btMoveUp: TSpeedButton;
|
||
btMoveDown: TSpeedButton;
|
||
ImageList1: TImageList;
|
||
RzPanel8: TRzPanel;
|
||
cbDescending: TRzCheckBox;
|
||
cbCaseSensitive: TRzCheckBox;
|
||
lng_Forms: TsiLangLinked;
|
||
procedure gbOkCancelResize(Sender: TObject);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure btAddItemClick(Sender: TObject);
|
||
procedure btRemoveItemClick(Sender: TObject);
|
||
procedure lbAccessibleFieldsDblClick(Sender: TObject);
|
||
procedure lbSelectedFieldsDblClick(Sender: TObject);
|
||
procedure btMoveUpClick(Sender: TObject);
|
||
procedure btMoveDownClick(Sender: TObject);
|
||
|
||
private
|
||
GForm: TForm;
|
||
|
||
procedure ChangeItemPosition(AListBox: TRzListBox; APosOffset: Integer);
|
||
procedure MoveItemToOtherListBox(ASrcLB, ATrgLB: TRzListBox);
|
||
procedure SetControls;
|
||
public
|
||
Constructor Create(AOwner: TComponent; AForm: TForm);
|
||
Destructor Destroy; override;
|
||
|
||
function SelectReportSortFields(AReportSortInfo: TReportSortInfo): Boolean;
|
||
end;
|
||
|
||
//var
|
||
// Form1: TForm1;
|
||
|
||
implementation
|
||
uses Unit_DM_SCS;
|
||
{$R *.dfm}
|
||
|
||
constructor TF_ItemsSelector.Create(AOwner: TComponent; AForm: TForm);
|
||
begin
|
||
GForm := AForm;
|
||
inherited Create(AOwner);
|
||
end;
|
||
|
||
destructor TF_ItemsSelector.Destroy;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.gbOkCancelResize(Sender: TObject);
|
||
begin
|
||
SetMiddleControlChilds(TControl(Sender), TControl(Self));
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.FormShow(Sender: TObject);
|
||
begin
|
||
gbOkCancelResize(gbOkCancel);
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.ChangeItemPosition(AListBox: TRzListBox; APosOffset: Integer);
|
||
var
|
||
ItemIndexNewPos: Integer;
|
||
begin
|
||
ItemIndexNewPos := AListBox.ItemIndex + APosOffset;
|
||
if (ItemIndexNewPos >= 0) and (ItemIndexNewPos <= (AListBox.Items.Count - 1)) then
|
||
begin
|
||
AListBox.Items.Move(AListBox.ItemIndex, ItemIndexNewPos);
|
||
AListBox.ItemIndex := ItemIndexNewPos;
|
||
|
||
SetControls;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.MoveItemToOtherListBox(ASrcLB, ATrgLB: TRzListBox);
|
||
var
|
||
StrObject: TObject;
|
||
begin
|
||
if ASrcLB.ItemIndex <> -1 then
|
||
begin
|
||
StrObject := ASrcLB.Items.Objects[ASrcLB.ItemIndex];
|
||
ATrgLB.Items.AddObject(ASrcLB.Items.Strings[ASrcLB.ItemIndex], StrObject);
|
||
ASrcLB.Items.Delete(ASrcLB.ItemIndex);
|
||
|
||
ATrgLB.ItemIndex := ATrgLB.Items.IndexOfObject(StrObject);
|
||
|
||
SetControls;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.SetControls;
|
||
begin
|
||
//btAddItem.Enabled := (lbAccessibleFields.Items.Count > 0) and (lbAccessibleFields.ItemIndex <> -1);
|
||
//btRemoveItem.Enabled := (lbSelectedFields.Items.Count > 0) and (lbSelectedFields.ItemIndex <> -1);
|
||
//btMoveUp.Enabled := (lbSelectedFields.ItemIndex > 0);
|
||
//btMoveDown.Enabled := (lbSelectedFields.ItemIndex < (lbSelectedFields.Items.Count - 1));
|
||
end;
|
||
|
||
function TF_ItemsSelector.SelectReportSortFields(
|
||
AReportSortInfo: TReportSortInfo): Boolean;
|
||
var
|
||
i: Integer;
|
||
FieldCaption: String;
|
||
begin
|
||
Result := false;
|
||
try
|
||
try
|
||
cbCaseSensitive.Checked := (AReportSortInfo.CaseSensitive = biTrue);
|
||
cbDescending.Checked := (AReportSortInfo.Descending = biTrue);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
for i := 0 to AReportSortInfo.AllFieldNames.Count - 1 do
|
||
if AReportSortInfo.UsedFieldNames.IndexOf(AReportSortInfo.AllFieldNames[i]) = -1 then
|
||
begin
|
||
FieldCaption := AReportSortInfo.GetFieldCaption(AReportSortInfo.AllFieldNames[i]);
|
||
AddGUIDIDToStrings(FieldCaption, AReportSortInfo.AllFieldNames[i], 0, lbAccessibleFields.Items);
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
for i := 0 to AReportSortInfo.UsedFieldNames.Count - 1 do
|
||
if AReportSortInfo.AllFieldNames.IndexOf(AReportSortInfo.UsedFieldNames[i]) <> -1 then
|
||
begin
|
||
FieldCaption := AReportSortInfo.GetFieldCaption(AReportSortInfo.UsedFieldNames[i]);
|
||
AddGUIDIDToStrings(FieldCaption, AReportSortInfo.UsedFieldNames[i], 0, lbSelectedFields.Items);
|
||
end;
|
||
lbAccessibleFields.Sorted := true;
|
||
lbSelectedFields.Sorted := false;
|
||
|
||
if ShowModal = mrOk then
|
||
begin
|
||
AReportSortInfo.CaseSensitive := BoolToInt(cbCaseSensitive.Checked);
|
||
AReportSortInfo.Descending := BoolToInt(cbDescending.Checked);
|
||
|
||
AReportSortInfo.UsedFieldNames.Clear;
|
||
for i := 0 to lbSelectedFields.Items.Count - 1 do
|
||
AReportSortInfo.UsedFieldNames.Add(GetGUIDFromStrings(lbSelectedFields.Items, i));
|
||
|
||
Result := true;
|
||
end;
|
||
finally
|
||
RemoveGUIDIDFromStrings(lbAccessibleFields.Items);
|
||
lbAccessibleFields.Items.Clear;
|
||
RemoveGUIDIDFromStrings(lbSelectedFields.Items);
|
||
lbSelectedFields.Items.Clear;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogEx('TF_ItemsSelector.SelectReportSortFields', E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.btAddItemClick(Sender: TObject);
|
||
begin
|
||
MoveItemToOtherListBox(lbAccessibleFields, lbSelectedFields);
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.btRemoveItemClick(Sender: TObject);
|
||
begin
|
||
MoveItemToOtherListBox(lbSelectedFields, lbAccessibleFields);
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.lbAccessibleFieldsDblClick(Sender: TObject);
|
||
begin
|
||
btAddItem.Click;
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.lbSelectedFieldsDblClick(Sender: TObject);
|
||
begin
|
||
btRemoveItem.Click;
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.btMoveUpClick(Sender: TObject);
|
||
begin
|
||
ChangeItemPosition(lbSelectedFields, -1);
|
||
end;
|
||
|
||
procedure TF_ItemsSelector.btMoveDownClick(Sender: TObject);
|
||
begin
|
||
ChangeItemPosition(lbSelectedFields, 1);
|
||
end;
|
||
|
||
end. |