Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Плоский ComboBox [D5, Win2k, WinXP]


AlexTregubov ©   (2005-06-02 17:05:00) 

возможно ли создать сабж, т.е. что-то типа BorderStyle:=bsNone, или Flat:=true

Заранее спасибо.


GrayFace   (2005-06-09 09:55:00) [1]

Для изменения ES_CENTER надо пересоздать окно эдита. Нормально это сделать у меня не получается. К тому же, для Win98, WinNT 4.0 и т.п. ES_CENTER работает только в многострочных Edit-ах, а с ними нужно дополнительно чуть-чуть повозиться.


AlexTregubov   (2005-06-07 15:49:00) [2]

За отступы спасибо.
Последний вопрос - как в комбобоксе сделать выравнивание.
Строчки типа
 n := GetWindowLong (h, GWL_STYLE);
 SetWindowLong (h, GWL_STYLE, n or ES_CENTER);
не помогают.


GrayFace   (2005-06-07 10:25:00) [3]

1) Я делал компоненту для того, чтобы Edit-ы, ComboBox-ы и т.п. стали плоскими - могу дать. Делается это подменой оконной поцедуры и отрисовкой своей рамочки вручную.

2) Если Style=csDropDown, то
 h:=FindWindowEx(Combobox1.Handle,0,'Edit',nil);
 SendMessage(h, EM_SETMARGINS,EC_LEFTMARGIN,20);


AlexTregubov   (2005-06-07 09:32:00) [4]

Еще вопрос.
Как у ComboBox сделать выравнивание текста и отступы текста слева и справа (что-то вроде
SendMessage(Handle, EM_SETMARGINS,EC_LEFTMARGIN,3);    SendMessage(Handle, EM_SETMARGINS,EC_RIGHTMARGIN,MakeLong(0,3));).


alpet   (2005-06-02 18:31:00) [5]

Смотрится плохо, но вроде работает:

procedure TForm1.Create (Sender: TObject);
var n: Integer;
begin
n := GetWindowLong (CheckBox1.Handle, GWL_STYLE);
SetWindowLong (CheckBox1.Handle, GWL_STYLE, n or bs_flat);
end;


-=S.S=-   (2005-06-02 18:07:00) [6]


 ComboBox1.BevelInner := bvNone;
 ComboBox1.BevelKind := bkSoft;
 ComboBox1.BevelOuter := bvSpace;

Авось то что нужно ;)


Игорь Шевченко   (2005-06-02 17:53:00) [7]

Самому рисовать. В D6 и выше можно через свойство Bevel управлять, но рисуется он не совсем корректно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо