Asuntos Oficiales > C/C++
Lista De Fuentes En Un Listbox O Combobox
(1/1)
_Viktor:
Hola, primero hagan un formulario con la sgte. forma:
Luego en el evento OnCreate del form lo siguiente:
--- Código: Text --- //---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){ for(int i = 0; i < Screen->Fonts->Count; i++) { ListBox1->Items->Add(Screen->Fonts->Strings[i]); ComboBox1->Items->Add(Screen->Fonts->Strings[i]); } int F = ComboBox1->Items->IndexOf("Times New Roman " ); if( F ) // If the font exists, select it ComboBox1->ItemIndex = F;}//---------------------------------------------------------------------------
luego:
--- Código: Text --- //---------------------------------------------------------------------------void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State){ if( State.Contains(odSelected) ) ListBox1->Canvas->Brush->Color = clHighlight; else ListBox1->Canvas->Brush->Color = clWhite; ListBox1->Canvas->FillRect(Rect); ListBox1->Canvas->Pen->Color = clWhite; ListBox1->Canvas->Font->Name = ListBox1->Items->Strings[Index]; ListBox1->Canvas->Font->Size = 12; ListBox1->Canvas->TextOut(Rect.Left, Rect.Top, ListBox1->Items->Strings[Index]);}//---------------------------------------------------------------------------void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State){ if( State.Contains(odSelected) ) ComboBox1->Canvas->Brush->Color = clHighlight; else ComboBox1->Canvas->Brush->Color = clWhite; ComboBox1->Canvas->FillRect(Rect); ComboBox1->Canvas->Font->Name = ComboBox1->Items->Strings[Index]; ComboBox1->Canvas->Font->Size = 12; ComboBox1->Canvas->TextOut(Rect.Left, Rect.Top-2, ComboBox1->Items->Strings[Index]);}//---------------------------------------------------------------------------
para que al final el resultado se vea de esta forma:
Espero les sirva.
Saludos!
[EDIT: no modifique nada, fue un error :hola: ]
Vatoicc:
Muy buen tip, nada mas se te olvido agregar que para el ComboBox hay que modificar una propiedad
ComboBox1->Style = csOwnerDrawVariable;
No lo e probado en el ListBox, pero es un buen tip para darle presentacion a un programa
ronal120:
muy interesante
Navegación
Ir a la versión completa