Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Перемещение в 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
2-1177678046
Borwel
2007-04-27 16:47
2007.05.20
Сообщение со строкой


2-1177582863
sergeyst
2007-04-26 14:21
2007.05.20
Как работать со сканером?


15-1177060687
IMHO
2007-04-20 13:18
2007.05.20
Latex


8-1157978391
Dmitriy O_
2006-09-11 16:39
2007.05.20
Как получить быстрый доступ к Пикселям BMP ?


2-1173078223
MZ
2007-03-05 10:03
2007.05.20
dbGridEh и CheckBox