ComboBox

 

         Írjunk Delphi alkalmazást, melyben a ComboBox listakezelő szerepet játszik. A listát szöveges állományban tárolja, melyből saját beolvasó rutinnal tölti be. A programból való kilépéskor a listát szintén a saját rutinja segítségével lemezre menti.

 

Enter hatására a Text mezőben lévő nem üres szöveget adja a listához, de csak akkor, ha még nem szerepelt rajta. Lehessen a listából törölni. Lehessen CheckBox segítségével választani rendezett és nem rendezett állapot között. Az elemek fölösleges Space karaktereket nem tartalmazhatnak.

 

         A Form szerkesztő nézetben:

 

 

         A program egy lehetséges futási képe:

 

 

         A program listája:

 

unit UCBLista;

interface

uses
  Windows, MessagesSysUtilsVariantsClasses,

  GraphicsControlsForms,
  DialogsStdCtrls;

type
  TfmCBLista = class(TForm)
    btKilepesTButton;
    lbCBListaTLabel;
    cbListaTComboBox;
    btDelTButton;
    chSortedTCheckBox;
    procedure btKilepesClick(SenderTObject);
    procedure FormCreate(SenderTObject);
    procedure cbListaKeyPress(SenderTObjectvar KeyChar);
    procedure btDelClick(SenderTObject);
    procedure chSortedClick(SenderTObject);
  private
    Private declarations }
  public
    Public declarations }
  end;

var
  fmCBListaTfmCBLista;
  DNevString;
  FTextText;

implementation


{$R *.dfm}

Function ValidSt(S: String): String;
Var I, N: Byte;
    WsString;
    Van: Boolean;
Begin
  N:= Length(S); ValidSt:=''; If N=0 Then ExitWs:= S;
  While (N>0) And (Ws[N]=' ') Do
  Begin Ws:= Copy(Ws,1,N-1); Dec(N) EndIf Ws='' Then Exit;
  While Ws[1]=' ' Do Begin Ws:= Copy(Ws,2,N-1); Dec(N) End;
  Van:= True;
  If N>3 Then While Van Do
  Begin
    Van:= False; N:= Length(Ws);
    For I:=2 To N-1 Do If (Ws[I]=' ') And (Ws[I+1]=' ') Then
    Begin
      Van:= TrueWs:= Copy(Ws,1,I) + Copy(Ws,I+2,N-I-1);
    End;
  End;
  ValidSt:= Ws;
End;

procedure TfmCBLista.btKilepesClick(SenderTObject);
begin
  cbLista.Items.SaveToFile(DNev);
  Close;
end;

procedure TfmCBLista.FormCreate(SenderTObject);
begin
  DNev:= 'Lista.txt';
  If Not FileExists(DNevThen
  Begin AssignFile(FText,DNev); ReWrite(FText); CloseFile(FTextEnd;
  With cbLista Do
  Begin Items.LoadFromFile(DNev); ItemIndex:= -1 End;
end;

procedure TfmCBLista.cbListaKeyPress(SenderTObjectvar KeyChar);
begin
  If Key=#13 Then
  With cbLista Do
  Begin
    If (ValidSt(Text)<>'') And (Items.IndexOf(ValidSt(Text))=-1) Then
    Items.Add(ValidSt(Text)); Text:= '';
  End;
end;

procedure TfmCBLista.btDelClick(SenderTObject);
begin
  With cbLista Do
  Begin If ItemIndex>=0 Then Items.Delete(ItemIndex); Text:= '' End;
  cbLista.SetFocus;
end;

procedure TfmCBLista.chSortedClick(SenderTObject);
begin
  With cbLista Do With chSorted Do
  Begin Sorted:= Not SortedChecked:= Sorted End;
  cbLista.SetFocus;
end;

end.