Создать редактируемый TListBoxDelphi , Компоненты и Классы , СпискиСоздать редактируемый TListBox
Оформил: DeeCo {NOTE : This will also work with an OwnerDraw ListBox But be sure you "pad" the Left Property of the Edit so Any icons etc, do not get covered up by the TEdit. And also be aware that there will be a bit of "flashing" if you do use an OwnerDraw ListBox} {This is in a Popup menu.} procedure TForm1.Change1Click(Sender: TObject); var I9: Integer; ColInt: Integer; LRect: TRect; begin LRect := ListBox1.ItemRect(ListBox1.ItemIndex); {Set the size of the TEdit} Edit1.Top := LRect.Top + 1; Edit1.Left := LRect.Left + 1; Edit1.Width := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[ListBox1.ItemIndex]) + 6; Edit1.Height := (LRect.Bottom - LRect.Top) + 1; Edit1.Text := ListBox1.Items.Strings[ListBox1.ItemIndex]; ListBox1.Selected[ListBox1.ItemIndex] := False; Edit1.Visible := True; Edit1.SelectAll; Edit1.SetFocus; end; procedure TForm1.ListBox1Click(Sender: TObject); begin Edit1.Visible := False; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var I8: Integer; begin if Key = #13 then begin I8 := ListBox1.ItemIndex; ListBox1.Items.Delete(ListBox1.ItemIndex); ListBox1.Items.Insert(I8, Edit1.Text); Edit1.Visible := False; Key := #0; end; end; Перевод контента на русский язык: Это программное обеспечение Delphi, созданное для создания редактируемого списка (TListBox) с связанным текстовым полем ввода (TEdit). Когда пользователь кликает по элементу в списке, соответствующий текст отображается в текстовом поле. Пользователь может затем изменить текст и нажать Enter для сохранения изменений. Разбивка кода:
Обратите внимание, что это код предполагает, что список имеет владельца (то есть родительскую форму или контроль). Также обратите внимание на потенциальные проблемы, упомянутые в комментарии, связанные с мерцанием при использовании OwnerDraw ListBox. Альтернативное решение: Вместо использования отдельного текстового поля для редактирования можно использовать встроенную возможность TListBox отображать текстовый редактор. Это можно сделать, установив свойство Пример:
Эта APPROACH avoids using a separate TEdit control and simplifies the code. However, it may not be suitable for all scenarios, especially if you need more advanced editing features. В статье описывается создание редактируемого TListBox с помощью TEdit в Delphi, при котором пользователь может изменять текст элементов списка нажав на них и вводить новое значение. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |