Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

Перемещение в ListBox   Найти похожие ветки 

 
kodov   (2007-03-26 15:45) [0]

Здравствуйте!
Такой вопрос.
Как организовать перемещение элементов ListBox? У меня стоят рядом с ListBox две кнопки - Вниз и Вверх.
С перемещением вверх я уже разобрался, теперь надо вниз. При чем, когда строка доходит до последнего элемента, то выходит сообщение "Хотите переместить элемент на первую строку?". Если да, то переместить.
Я тут набросал примерный код, но он не работает.
procedure TMainForm.SpeedButton2Click(Sender: TObject);
var otv:word;
begin
if personslist.Itemindex=-1 then showmessage ("Выберите элемент");
if personslist.ItemIndex=personslist.Items.Count-1 then
begin
 otv := MessageBox(handle,PChar("Этот элемент стоит последним в списке. Хотите переместить его на первое место?"), PChar("Вопрос"), 52);
  if otv=IDYES
   then
   begin
    edit3.Text:=inttostr(personslist.Items.Count);
    edit4.text:=FloatToStr((StrToFloat(edit3.text)-1));
    edit2.Text:=inttostr(personslist.ItemIndex);
    personslist.Items.Move(personslist.ItemIndex,personslist.Itemindex-strtoint(edit4.text));
    end;
  if otv=IDNO
   then personslist.ItemIndex:=0;
   end ;
if personslist.ItemIndex>0 then
  edit2.Text:=inttostr(personslist.ItemIndex);
  personslist.Items.Move(personslist.ItemIndex,personslist.ItemIndex+1);
  personslist.ItemIndex:=strtoint(edit2.Text)+1;
end;
Помогите, пожалуйста разобраться.


 
kodov   (2007-03-26 16:07) [1]

Уже разобрался.


 
_Knight_   (2007-03-26 16:18) [2]

Тогда один совет... заметь, что FloatToStr читается гораздо легче чем inttostr... ;)


 
RASkov   (2007-03-26 22:10) [3]

> [1] kodov   (26.03.07 16:07)

Как-то у тебя все осложнено на мой взгляд, хотя я могу ошибиться....
Две SpeedButton с одним общим обработчиком OnClick. У одной Tag=-1(перемещение вверх) у второй Tag=1(соответственно перемещение вниз)
Один обработчик для обеих кнопок:
procedure TForm1.SpeedButton1Click(Sender: TObject);
const Str: array [Boolean] of String = ("Переместить в конец?", "Переместить в начало?");
var N: Integer; F: Boolean;
begin
 if personslist.ItemIndex < 0 then Exit;
 N:=personslist.ItemIndex+(Sender as TControl).Tag;
 if N = personslist.Count then begin N:=0; F:=True; end
  else if N < 0 then begin N:=personslist.Count-1; F:=True; end else F:=False;
 if F and (MessageDlg(PChar(Str[N=0]), mtConfirmation, [mbYes, mbNo], 0) <> mrYes) then Exit;
 personslist.Items.Move(personslist.ItemIndex, N);
 personslist.ItemIndex:=N;
end;


 
Loginov Dmitry ©   (2007-03-26 22:17) [4]

Ты ж самую фичу забыл:

StrToFloat(FloatToStr(StrToFloat(FloatToStr(..(..(...)..)..))))


 
RASkov   (2007-03-26 22:26) [5]

> [4] Loginov Dmitry ©   (26.03.07 22:17)

:)
Я над этим тоже поугорал, но после прикрутки ричидита для поиска по листбоксу... "Это нормально" © Пираньи



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.048 c
2-1178295500
Mihail07
2007-05-04 20:18
2007.05.20
TSaveDialog, TRichEdit


2-1178083513
user gosha
2007-05-02 09:25
2007.05.20
Доступ к Web-сервису из Delphi


9-1150106441
аматор
2006-06-12 14:00
2007.05.20
игра на лазаре


1-1174566940
Gear
2007-03-22 15:35
2007.05.20
При создании закладок программа зависает.


2-1178096863
Ламер 2.Х
2007-05-02 13:07
2007.05.20
Проблемка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский