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, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfmCBLista = class(TForm)
btKilepes: TButton;
lbCBLista: TLabel;
cbLista: TComboBox;
btDel: TButton;
chSorted: TCheckBox;
procedure btKilepesClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cbListaKeyPress(Sender: TObject; var Key: Char);
procedure btDelClick(Sender: TObject);
procedure chSortedClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmCBLista: TfmCBLista;
DNev: String;
FText: Text;
implementation
{$R *.dfm}
Function ValidSt(S: String): String;
Var I, N: Byte;
Ws: String;
Van: Boolean;
Begin
N:= Length(S); ValidSt:=''; If N=0 Then Exit; Ws:= S;
While (N>0) And (Ws[N]=' ') Do
Begin Ws:= Copy(Ws,1,N-1); Dec(N) End; If 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:= True; Ws:= Copy(Ws,1,I) + Copy(Ws,I+2,N-I-1);
End;
End;
ValidSt:= Ws;
End;
procedure TfmCBLista.btKilepesClick(Sender: TObject);
begin
cbLista.Items.SaveToFile(DNev);
Close;
end;
procedure TfmCBLista.FormCreate(Sender: TObject);
begin
DNev:= 'Lista.txt';
If Not FileExists(DNev) Then
Begin AssignFile(FText,DNev); ReWrite(FText); CloseFile(FText) End;
With cbLista Do
Begin Items.LoadFromFile(DNev); ItemIndex:= -1 End;
end;
procedure TfmCBLista.cbListaKeyPress(Sender: TObject; var Key: Char);
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(Sender: TObject);
begin
With cbLista Do
Begin If ItemIndex>=0 Then Items.Delete(ItemIndex); Text:= '' End;
cbLista.SetFocus;
end;
procedure TfmCBLista.chSortedClick(Sender: TObject);
begin
With cbLista Do With chSorted Do
Begin Sorted:= Not Sorted; Checked:= Sorted End;
cbLista.SetFocus;
end;
end.