Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Mie 24 Nov, 2021 12:37 am Asunto: TListBox con items editables |
|
|
Recientemente necesitaba un TListBox editable. Improvisé con un TEdit:
| Código: |
//-------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
ListBox2->Items->Add("void");
ListBox2->Items->Add("__fastcall");
ListBox2->Items->Add("TForm1");
ListBox2->Items->Add("::");
ListBox2->Items->Add("FormShow");
ListBox2->Items->Add("(");
ListBox2->Items->Add("TObject");
ListBox2->Items->Add("*");
ListBox2->Items->Add("Sender");
ListBox2->Items->Add(")");
ListBox2->Items->Add("void __fastcall TForm1");
ListBox2->Items->Add("::FormShow");
ListBox2->Items->Add("(TObject *Sender)");
// Colores de selección en el listbox
Edit2->Color = (TColor)0x00FF9933;
Edit2->Font->Color = clWhite;
// importante
Edit2->BorderStyle = bsNone;
}
//-------------------------------------
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
ListBox2->Items->Strings[ListBox2->ItemIndex] = Edit2->Text;
}
//-------------------------------------
void __fastcall TForm1::ListBox2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TRect r;
r = ListBox2->ItemRect(ListBox2->ItemIndex);
Edit2->Parent = ListBox2;
Edit2->SetBounds(r.Left, r.Top, (r.Right - r.Left) + 2, r.Bottom - r.Top);
Edit2->Text = ListBox2->Items->Strings[ListBox2->ItemIndex];
Edit2->SetFocus();
Edit2->SelStart = Edit2->Text.Length();
// Coloque un borde de 2 píxeles en TEdit para vincularlo con el borde del listbox
::SendMessage( Edit2->Handle, EM_SETMARGINS, EC_LEFTMARGIN, (LPARAM)MAKELONG(2, 0) );
ListBox2->Repaint();
}
//-------------------------------------
|
|
|