Форум: "Основная";
Текущий архив: 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.039 c