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;
НА этом все можите запускаться!!!
До встречи DelphiExpert.ru !!!
Похожие материалы
- Сохраняем StringGrid в файл
- Исходник электронной анкеты
- PSD Delphi String Protect - защити свою программу!
- Непонятные файлы. Откуда ?
- Delphi исходники - игра Морской бой
Последние из рубрики
- Видео обзор - компилятора CodeGear 2009
- Delphi уроки - Учимся работать с Excel документами в Delphi
- Delphi уроки: ComboBox равняйсь на право