home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 September
/
Chip_2002-09_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d45
/
OPTIONS.ZIP
/
Units
/
FlagsEditor.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2002-06-06
|
2KB
|
80 lines
unit FlagsEditor;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, CheckLst;
type
TfrmFlagsEditor = class(TForm)
clbFlags: TCheckListBox;
btnAdd: TButton;
btnDelete: TButton;
btnOK: TButton;
btnCancel: TButton;
lblCount: TLabel;
procedure FormShow(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
private
procedure DispCount;
public
OptName: string;
function FlagName(i: integer): string;
end;
implementation
{$R *.DFM}
{ TfrmFlagsEditor }
procedure TfrmFlagsEditor.DispCount;
begin
lblCount.Caption := Format('%d items', [clbFlags.Items.Count]);
end;
procedure TfrmFlagsEditor.FormShow(Sender: TObject);
begin
DispCount;
end;
function TfrmFlagsEditor.FlagName(i: integer): string;
begin
result := Format('%s.DefAsFlags[%d]', [OptName, i])
end;
procedure TfrmFlagsEditor.btnAddClick(Sender: TObject);
begin
with clbFlags.Items do
Add(FlagName(Count + 1));
DispCount;
end;
procedure TfrmFlagsEditor.btnDeleteClick(Sender: TObject);
var
i: integer;
s: string;
begin
with clbFlags do begin
if ItemIndex < 0 then
Exit;
s := '';
for i := 0 to Items.Count - 1 do
if i <> ItemIndex then
s := s + Chr(Ord(Checked[i]) + 48);
Items.BeginUpdate;
Items.Delete(ItemIndex);
for i := 0 to Items.Count - 1 do begin
Items[i] := FlagName(i + 1);
Checked[i] := s[i + 1] = '1';
end;
Items.EndUpdate;
end;
DispCount;
end;
end.