![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Плоский 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 управлять, но рисуется он не совсем корректно.