Delphi Уроки: Компонент Edit внутри компонента ListBox
Сегодня мы сделаем так что бы запись в компоненте ListBox можно было бы редактировать просто кликнув на неё. Грубо мы будем динамически создавать компонент Edit внутри компонента ListBox.
Ну что открываем Delphi, создаем новый проект, на форму кидаем компонент ListBox с закладки Standard.
Далее после ключевого слова private пишем
ListEdit : TEdit;
procedure ListEditKeyPress(Sender: TObject; var Key: Char) ;
Как вы наверно поняли здесь мы создали компонент Edit с именем ListEdit и обьявили процедуру KeyPress для компонента ListEdit
Нажимаем комбинацию клавиш CTRL+SHIFT+C для того что бы прописать код для процедуры ListEditKeyPress. Полный код процедуры будет выглядеть следующим образом (посмотрите как получилось у меня и допишите недостающие строки)
procedure TForm1.ListEditKeyPress(Sender: TObject; var Key: Char);
var
ii: Integer;
begin
if Key = #13 then
begin
ii := ListBox1.ItemIndex;
ListBox1.Items.Delete(ii) ;
ListBox1.Items.Insert(ii, ListEdit.Text) ;
ListEdit.Visible := False;
Key := #0;
end;
end;
Теперь выделяем форму и создаем на ней обработчик событий OnCreate (полный код обработчика представлен ниже)
procedure TForm1.FormCreate(Sender: TObject) ;
begin
ListEdit := TEdit.Create(self) ;
ListEdit.Visible := false;
ListEdit.Ctl3D := false;
ListEdit.BorderStyle := bsNone;
ListEdit.Parent := ListBox1;
ListEdit.Width := ListBox1.ClientWidth;
ListEdit.OnKeyPress := ListEditKeyPress;
end;
Немного поясню что я здесь написал, т.к компонент ListEdit мы создаем динамически то и необходимые свойства нам нужно задавать вручную. Чем мы сейчас и занимаемся.
Далее выделяем компонент ListBox, на нем создадим обработчик событий Onclick
procedure TForm1.ListBox1Click(Sender: TObject) ;
var
ii : integer;
lRect: TRect;
begin
ii := ListBox1.ItemIndex;
if ii = -1 then exit;
lRect := ListBox1.ItemRect(ii) ;
ListEdit.Top := lRect.Top + 1;
ListEdit.Left := lRect.Left + 1;
ListEdit.Height := (lRect.Bottom - lRect.Top) + 1;
ListEdit.Text := ListBox1.Items.Strings[ii];
ListBox1.Selected[ii] := False;
ListEdit.Visible := True;
ListEdit.SelectAll;
ListEdit.SetFocus;
end;
НА этом все можите запускаться!!!
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
До встречи DelphiExpert.ru !!!
Похожие материалы
- Сохраняем StringGrid в файл
- Исходник электронной анкеты
- PSD Delphi String Protect - защити свою программу!
- Непонятные файлы. Откуда ?
- Delphi исходники - игра Морской бой
Последние из рубрики
- Видео обзор - компилятора CodeGear 2009
- Delphi уроки - Учимся работать с Excel документами в Delphi
- Delphi уроки: ComboBox равняйсь на право