300 lines
7.3 KiB
Plaintext
300 lines
7.3 KiB
Plaintext
unit fOptionsReminders;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ExtCtrls, ORCtrls, OrFn;
|
|
|
|
type
|
|
TfrmOptionsReminders = class(TForm)
|
|
pnlBottom: TPanel;
|
|
btnOK: TButton;
|
|
btnCancel: TButton;
|
|
lstDisplayed: TORListBox;
|
|
lstNotDisplayed: TORListBox;
|
|
btnUp: TButton;
|
|
btnDown: TButton;
|
|
btnDelete: TButton;
|
|
btnAdd: TButton;
|
|
lblDisplayed: TLabel;
|
|
lblNotDisplayed: TLabel;
|
|
bvlBottom: TBevel;
|
|
radSort: TRadioGroup;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure lstDisplayedChange(Sender: TObject);
|
|
procedure lstNotDisplayedChange(Sender: TObject);
|
|
procedure btnUpClick(Sender: TObject);
|
|
procedure btnDownClick(Sender: TObject);
|
|
procedure btnDeleteClick(Sender: TObject);
|
|
procedure btnAddClick(Sender: TObject);
|
|
function GetFirstSelection(aList: TORListBox): integer;
|
|
procedure SetItem(aList: TORListBox; index: integer);
|
|
procedure MoveSelected(aList: TORListBox; items: TStrings);
|
|
procedure btnOKClick(Sender: TObject);
|
|
procedure radSortClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure CheckEnable;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
frmOptionsReminders: TfrmOptionsReminders;
|
|
|
|
procedure DialogOptionsReminders(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
|
|
|
|
implementation
|
|
|
|
uses rOptions, fRemCoverSheet, rReminders;
|
|
|
|
{$R *.DFM}
|
|
|
|
procedure DialogOptionsReminders(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
|
|
// create the form and make it modal, return an action
|
|
var
|
|
frmOptionsReminders: TfrmOptionsReminders;
|
|
begin
|
|
if NewRemCoverSheetListActive then
|
|
EditCoverSheetReminderList(TRUE)
|
|
else
|
|
begin
|
|
frmOptionsReminders := TfrmOptionsReminders.Create(Application);
|
|
actiontype := 0;
|
|
try
|
|
with frmOptionsReminders do
|
|
begin
|
|
if (topvalue < 0) or (leftvalue < 0) then
|
|
Position := poScreenCenter
|
|
else
|
|
begin
|
|
Position := poDesigned;
|
|
Top := topvalue;
|
|
Left := leftvalue;
|
|
end;
|
|
ResizeAnchoredFormToFont(frmOptionsReminders);
|
|
ShowModal;
|
|
actiontype := btnOK.Tag;
|
|
end;
|
|
finally
|
|
frmOptionsReminders.Release;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.FormCreate(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
biglist, userlist: TStringList;
|
|
begin
|
|
biglist := TStringList.Create;
|
|
userlist := TStringList.Create;
|
|
try
|
|
rpcGetReminders(biglist);
|
|
for i := 0 to biglist.Count - 1 do
|
|
if strtointdef(Piece(biglist[i], '^', 2), 0) > 0 then
|
|
userlist.Add(biglist[i])
|
|
else
|
|
lstNotDisplayed.Items.Add(biglist[i]);
|
|
SortByPiece(userlist, '^', 2);
|
|
for i := 0 to userlist.Count - 1 do
|
|
lstDisplayed.Items.Add(userlist[i]);
|
|
finally
|
|
biglist.free;
|
|
userlist.free;
|
|
end;
|
|
CheckEnable;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.CheckEnable;
|
|
// allow buttons to be enabled or not depending on selections
|
|
begin
|
|
with lstDisplayed do
|
|
begin
|
|
if Items.Count > 0 then
|
|
begin
|
|
if SelCount > 0 then
|
|
begin
|
|
btnUp.Enabled := (SelCount > 0)
|
|
and (not Selected[0])
|
|
and (radSort.ItemIndex = 0);
|
|
btnDown.Enabled := (SelCount > 0)
|
|
and (not Selected[Items.Count - 1])
|
|
and (radSort.ItemIndex = 0);
|
|
btnDelete.Enabled := true;
|
|
end
|
|
else
|
|
begin
|
|
btnUp.Enabled := false;
|
|
btnDown.Enabled := false;
|
|
btnDelete.Enabled := false;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
btnUp.Enabled := false;
|
|
btnDown.Enabled := false;
|
|
btnDelete.Enabled := false;
|
|
end;
|
|
end;
|
|
with lstNotDisplayed do
|
|
begin
|
|
btnAdd.Enabled := SelCount > 0;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.lstDisplayedChange(Sender: TObject);
|
|
begin
|
|
CheckEnable;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.lstNotDisplayedChange(Sender: TObject);
|
|
begin
|
|
CheckEnable;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.btnUpClick(Sender: TObject);
|
|
var
|
|
newindex, i: integer;
|
|
begin
|
|
with lstDisplayed do
|
|
begin
|
|
i := 0;
|
|
while i < Items.Count do
|
|
begin
|
|
if Selected[i] then
|
|
begin
|
|
newindex := i - 1;
|
|
Items.Move(i, newindex);
|
|
Selected[newindex] := true;
|
|
end;
|
|
inc(i);
|
|
end;
|
|
end;
|
|
lstDisplayedChange(self);
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.btnDownClick(Sender: TObject);
|
|
var
|
|
newindex, i: integer;
|
|
begin
|
|
with lstDisplayed do
|
|
begin
|
|
i := Items.Count - 1;
|
|
while i > -1 do
|
|
begin
|
|
if Selected[i] then
|
|
begin
|
|
newindex := i + 1;
|
|
Items.Move(i, newindex);
|
|
Selected[newindex] := true;
|
|
end;
|
|
dec(i);
|
|
end;
|
|
end;
|
|
lstDisplayedChange(self);
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.btnDeleteClick(Sender: TObject);
|
|
var
|
|
index: integer;
|
|
begin
|
|
index := GetFirstSelection(lstDisplayed);
|
|
MoveSelected(lstDisplayed, lstNotDisplayed.Items);
|
|
SetItem(lstDisplayed, index);
|
|
CheckEnable;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.btnAddClick(Sender: TObject);
|
|
var
|
|
index: integer;
|
|
begin
|
|
index := GetFirstSelection(lstNotDisplayed);
|
|
MoveSelected(lstNotDisplayed, lstDisplayed.Items);
|
|
SetItem(lstNotDisplayed, index);
|
|
if radSort.ItemIndex = 1 then radSortClick(self);
|
|
CheckEnable;
|
|
end;
|
|
|
|
function TfrmOptionsReminders.GetFirstSelection(aList: TORListBox): integer;
|
|
begin
|
|
for result := 0 to aList.Items.Count - 1 do
|
|
if aList.Selected[result] then exit;
|
|
result := LB_ERR;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.SetItem(aList: TORListBox; index: integer);
|
|
var
|
|
maxindex: integer;
|
|
begin
|
|
with aList do
|
|
begin
|
|
SetFocus;
|
|
maxindex := aList.Items.Count - 1;
|
|
if Index = LB_ERR then
|
|
Index := 0
|
|
else if Index > maxindex then Index := maxindex;
|
|
Selected[index] := true;
|
|
end;
|
|
CheckEnable;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.MoveSelected(aList: TORListBox; Items: TStrings);
|
|
var
|
|
i: integer;
|
|
begin
|
|
for i := aList.Items.Count - 1 downto 0 do
|
|
begin
|
|
if aList.Selected[i] then
|
|
begin
|
|
Items.AddObject(aList.Items[i], aList.Items.Objects[i]);
|
|
aList.Items.Delete(i);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.btnOKClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
values: string;
|
|
aList: TStringList;
|
|
begin
|
|
aList := TStringList.Create;
|
|
try
|
|
with lstDisplayed do
|
|
for i := 0 to Items.Count - 1 do
|
|
begin
|
|
values := inttostr(i + 1) + '^' + Piece(Items[i], '^', 1);
|
|
aList.Add(values);
|
|
end;
|
|
rpcSetReminders(aList);
|
|
finally
|
|
aList.free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOptionsReminders.radSortClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
userlist: TStringList;
|
|
begin
|
|
userlist := TStringList.Create;
|
|
try
|
|
for i := 0 to lstDisplayed.Items.Count - 1 do
|
|
userlist.Add(lstDisplayed.Items[i]);
|
|
case radSort.ItemIndex of
|
|
0: SortByPiece(userlist, '^', 2);
|
|
else SortByPiece(userlist, '^', 3);
|
|
end;
|
|
lstDisplayed.Items.Clear;
|
|
for i := 0 to userlist.Count - 1 do
|
|
lstDisplayed.Items.Add(userlist[i]);
|
|
finally
|
|
userlist.free;
|
|
end;
|
|
CheckEnable;
|
|
end;
|
|
|
|
end.
|