![]()  | 
![]() ![]() ![]() ![]()  | 
   
 | 
Создать редактируемый 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 прямо в свой смартфон. Подпишитесь на наш  
  | 
||||
 ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007  | ||||