Index » Empathy Jukebox : Blob 8907ba / editgenre.pas
unit editgenre;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,main;

type
  Teditdylist = class(TForm)
    OK: TButton;
    edit: TEdit;
    lab: TLabel;
    add: TButton;
    lb: TListBox;
    del: TButton;
    cancel: TButton;
    procedure addClick(Sender: TObject);
    procedure lbClick(Sender: TObject);
    procedure editChange(Sender: TObject);
    procedure delClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure editKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure editKeyPress(Sender: TObject; var Key: Char);
    procedure OKClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

function editdynamiclist(caption : string; title : string;var data : tdylist) : integer; export;

var
  editdylist: Teditdylist;
  ls : tdylist;

implementation

{$R *.DFM}

function editdynamiclist(caption : string; title : string;var data : tdylist) : integer; export;
var
res : integer;
begin
res:=-1;

editdylist := Teditdylist.Create(Application);
  try
    editdylist.caption:=caption;
    editdylist.lab.caption:=title;
    setlength(ls.data,sizeof(data));
    ls:=data;
    res:=editdylist.Showmodal;
    finally

      if res<>mrcancel then begin
         setlength(data.data,sizeof(ls));
         data:=ls;
      end;
      result:=res;
      editdylist.Free;
  end;
end;



procedure Teditdylist.addClick(Sender: TObject);
begin
lb.Items.add(edit.text);
end;

procedure Teditdylist.lbClick(Sender: TObject);
begin
if lb.itemindex>-1 then del.enabled:=true else del.enabled:=false;
end;

procedure Teditdylist.editChange(Sender: TObject);
var
n:integer;
begin
if trim(edit.text)='' then add.enabled:=false else add.enabled:=true;
for n:=0 to lb.items.count-1 do if trim(uppercase(edit.text))=uppercase(lb.items[n]) then add.enabled:=false;
if uppercase(trim(edit.text))=uppercase('Not Defined') then add.enabled:=false;
if uppercase(trim(edit.text))=uppercase('Any') then add.enabled:=false;

end;

procedure Teditdylist.delClick(Sender: TObject);
begin
lb.items.delete(lb.itemindex);
if lb.items.count>0 then lb.itemindex:=0;
lbclick(nil);
end;

procedure Teditdylist.FormActivate(Sender: TObject);
var
n : integer;
begin
for n:=0 to ls.count-1 do lb.items.add(ls.data[n]);
end;

procedure Teditdylist.editKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key<123)or (key>47) then key:=0;

end;

procedure Teditdylist.editKeyPress(Sender: TObject; var Key: Char);
begin
if key=' ' then exit;
if ord(key)=8 then exit;
if ((ord(key)<65)) and ((ord(key)>57)) then key:=#0;
if ((ord(key)<97)) and ((ord(key)>90)) then key:=#0;
if ((ord(key)<48)) or ((ord(key)>122)) then key:=#0;
end;

procedure Teditdylist.OKClick(Sender: TObject);
var
n : integer;
begin
setlength(ls.data,lb.items.count);
for n:=0 to lb.items.count-1 do ls.data[n]:=lb.items[n];
ls.count:=lb.items.count;
end;

end.