Tylko nowy w ListBox'ie

0

Witam,

Mam pola ListBox (jest w nim zapisany jednen tekst) i Edit oraz przyciski dodaj i czyść (listboxa).

Poniższą procedura sprawdzam czy dodawany tekst (pole edit) istnieje już w LixtBoxie. Jeżeli nie istnieje, to jest dodany do listy. W przeciwnym wypadku pojawia się stosowny komunikat.

Wszystko działa jednak, gdy pole ListBox jest puste to nie mogę dodać tesktu z pola Edit.

Procedura:

procedure TForm1.Button10Click(Sender: TObject);
var
I : Integer;
FullName : String;

begin

FullName:= IncludedEdit.Text;

for i := 0 to FilesIncluded.Items.Count - 1 do
    begin
    
    if FilesIncluded.Items.IndexOf( FullName ) > 0 then
       begin
       showmessage('Maska "' + FullName + '" już istnieje!');
       Exit;
       end
       else
       
    if FilesIncluded.Items.IndexOf( FullName ) 
0

sprubuj tak:

procedure TForm1.Button10Click(Sender: TObject);
var
var
FullName : String;
begin
FullName:= IncludedEdit.Text;
If FilesIncluded.Items.IndexOf(FullName)-1 Then
showmessage('Maska "' + FullName + '" już istnieje!')
Else
FilesIncluded.Items.Add( FullName ); //Dodaje, gdy nie istnieje na liscie
End;

0

Witam,

Kod poprzednika nie działa. Nie reaguje na dodawanie tych samych tekstów (teksty są dublowane).

Zmodyfikowałem swój poprzedni kod. W ListBox trzeba dodać jedno puste pole. Kod jest już prawnie ok. Jednak jeżeli ma w Listbox np wpisane test, test1 i przy próbie dodawania ponownie słowa test. Nie jest pokazywany komunikat ostrzegawczy o zdublowaniu. Komunikat reaguje dopiero od drugiego elementu. Nie wiem, gdzie tu jest błąd.

Proszę o pomoc w rozwiązaniu problemu.

procedure TForm1.Button10Click(Sender: TObject);
var
I : Integer;
FullName : String;

begin
FullName:= IncludedEdit.Text;

for I := 0 to FilesIncluded.Items.Count - 1 do
    begin
    if FilesIncluded.Items.Strings[I] = '' then
       begin
       FilesIncluded.ItemIndex:=0;
       FilesIncluded.Items.Delete(0);
       FilesIncluded.Items.Add( FullName );
       exit;
       end;
    if FilesIncluded.Items.IndexOf( FullName ) > 0 then
       begin
     showmessage('Maska "' + FullName + '" już istnieje!');
       Exit;
       end;

    if FilesIncluded.Items.IndexOf( FullName ) 
0

Po co tyle komplikacji??
Wystarczy tylko tyle:

If FilesIncluded.Items.IndexOf(IncludeFile.Text)>-1 Then
ShowMessage('Już istnieje')
Else FilesIncluded.Items.Add(IncludeFile.Text);

Kod działa bo sprawdzałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1