Edycja w listbox

0

Mam taki kod:

procedure TForm1.xxxClick(Sender: TObject);
begin
if ListBox1.ItemIndex > -1 then
   begin
       Edit1.Text := ListBox1.Items[ListBox1.ItemIndex];
       ListBox1.Items.Delete(ListBox1.ItemIndex);
   end
else
       Application.MessageBox('xxx');
end;

i chce zeby nie kopiowalo do edita i nie usuwalo z lisboxa gdy nie jest element zaznaczony w listboxie tylko wyswietlal sie komunikat.
Wyglada dobrze ale nie wiem czego niedziala, pomoze ktoś? Z gory dzieki

(usuwa ostatni element z listy gdy nic nie jest zaznaczone)

0

Twój kod wygląda dobrze, nawet bardzo dobrze... oprócz przedostatniej linijki. Funkcja **MessageBox **potrzebuje 3 parametrów

Delphi help napisał(a)

function MessageBox(Text, Caption: PChar; Flags: Word): Integer;

Chyba, że to miała być funkcja ShowMessage, wtedy tylko jeden parametr. Jak to poprawisz to będzie wszystko OK.

0

w oryginale ma 3 elementy i gdy nie ma zadnego elementu w listbox to wyswietla sie komunikat.
nawet bez else i message kopiuje i usuwa bez zaznaczenia

0

Zrób tak...

//...
  if ListBox1.ItemIndex > -1 then
  begin
    Edit1.Text := ListBox1.Items[ListBox1.ItemIndex];
    ListBox1.Items.Delete(ListBox1.ItemIndex);
  end
  else
  begin
    MessageBox(Application.Handle, 'Zaznacz coś na liście!',
      PChar(Application.Title), MB_ICONWARNING + MB_OK);
  end;
//...
0

niestety dalej to samo

0

Postaw Breakpointa i sprawdź jaką faktycznie wartość ma ListBox1.ItemIndex bo kod jest prawidłowy.

0

a co trzeba wpisac lub gdzie wcisnac zeby sprawdzic ta wartosc

0

Dobra, zróbmy inaczej. Zmodyfikuj trochę kod:

procedure TForm1.xxxClick(Sender: TObject);
begin
Application.MessageBox(PChar('ListBox1.ItemIndex='+IntToStr(ListBox1.ItemIndex)),'');
if ListBox1.ItemIndex > -1 then
   begin
//itd
0

to samo, dobra dzieki za poswiecony czas zrezygnuje z tej opcji

0

tylko ze ja musze ten program oddac jutro rano

0
eustachybts napisał(a)

to samo, dobra dzieki za poswiecony czas zrezygnuje z tej opcji

Co to znaczy to samo. Wyjaśnij dokładnie. Co pokazuje Application.MessageBox(PChar('ListBox1.ItemIndex='+IntToStr(ListBox1.ItemIndex)),'');

0

wyswietla sie komunikat ListBox1.ItemIndex=0 gdy jest cos zaznaczone i nie jest
dalej bierze ostatni element

0

jak wezme if ListBox1.ItemIndex > 0 then
to wszystko git ale nie chce skopiowac i usunac pierwszego elemenu ktory ma nr 0

0

chce aby kopiowalo do edita zaznaczony element i usuwalo go z listbox ale gdy nic nie jest zaznaczone w lisbox to zeby wyswietlalo komunikt 'wybierz element'
to mi sie marzy

0

Tak sobie jeszcze po myślałem, być może ListBox ma właściwość **MultiSelect **ustawioną na true, wtedy dzieją się "dziwne rzeczy". Jeżeli tak jest, to zmień na false i to musi działać, bo kod jest poprawny

0

Juz wczesniej naprawilem ze dzialalo dobrze bo sprawdzilem ten kod w starszej kopii tylko dokladnie nie wiedazialem czym to bylo spowodowane a to wlasnie 'MultiSelect'

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