Форум: "KOL";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизEdit+выпадающий список Найти похожие ветки
← →
Ajax (2004-01-29 09:46) [0]Как можно приделать к Edit выпадающий список от ComboBox? ComboBox я использовать не могу, потому что у него нет нескольких нужных мне свойств.
← →
SPeller © (2004-01-29 09:57) [1]Ну так реализуйте их. Внутри такого комбобокса просто лежит обыкновенный edit. Только, подобираться к нему придётся через WinApi.
← →
Ajax (2004-01-29 21:26) [2]Да уж больно возни много будет я так чувствую... А вот выпадающий список без Edit в природе встречается??? Или что вообще можно использовать вместо такового???
← →
SPeller © (2004-01-30 06:19) [3]Лучше не прикручивать такой список. Больше возни будет чем добавить свойства к встроенному edit-у. Какие свойства теюе нужны, может их просто сделать?
← →
Ajax (2004-01-30 08:08) [4]В частности мне нужна возможность изменения выравнивания текста. Для Edit это можно сделать только во время создания, поэтому не представляю как можно сделать это для ComboBox. Попробывал так же как и для Edit - не получилось. Потом совершенно не нужна стрелка, открывающая список. Ну и так по мелочи, то, что действительно сделать не сложно.
Выпадающий список от комбо - это вообще кто???
← →
SPeller © (2004-01-30 10:35) [5]
> Выпадающий список от комбо - это вообще кто???
Это отдельный класс окна. Видимо, типа наследника от листбокса или что-то вроде.
← →
Ajax (2004-01-30 11:59) [6]Дело в том, что для выпадения этому списку не нужна форма, то есть я имею ввиду, что он с легкостью может выпадать в пустоту (за пределы формы родителя), что мне собственно и надо.
Была мысль PopUp меню использовать, но так не слишком красиво получается...
← →
SPeller © (2004-01-30 12:42) [7]Слушай, выравнивание текста можно и в ран-тайм, через SetWindowLong. В КОЛ так и сделано - выравнивание задаётся после создания контрола.
← →
Ajax (2004-01-30 13:27) [8]Для Edit"ов я делаю так:
ComboBox1 := NewComboBox( Form, [ coNoIntegralHeight ] ).SetPosition( 48, 40 ).SetSize( 185, 0 );
ComboBox1.TextAlign:=taRight;
ComboBox1.Show;
Потому как после создания выравнивание уже не изменишь.
Но для Combo такой вариант не работает.
SetWindowLong(combobox1.Handle,GWL_STYLE,ES_RIGHT);
Тоже никакого эффекта не дает.
← →
SPeller © (2004-01-30 15:54) [9]Дык, комбо это и есть комбо!!! А у него в детях есть одно единственное окно - самый обычный едит! Сделай EnumChildWindows и сам увидишь. Берёшь этот хендл и делай с этим едитом всё что угодно.
← →
Vladimir Kladov (2004-01-31 10:40) [10]вообще-то два, еще listbox, который собственно и выпадает.
← →
SPeller © (2004-02-01 10:07) [11]
> вообще-то два, еще listbox, который собственно и выпадает.
EnumChildWindows показывает только одно. Да и понятно, как мне кажется, потому что этот список является окном верхнего уровня (EnumWindows его видит), и потому что этот список не ограничен клиентской частью главного окна листбокса, а все дети окна ограничиваются. Я думал что кнопочка - это тоже окно, но оказалось что она рисуется самим комбобоксом на своём же окне.
← →
Ajax © (2004-02-01 16:12) [12]У Edit"ов выравнивание текста можно выставить только 1 раз - во время создания.
function EnumChildProc(Wnd: hWnd; SL: String): BOOL; stdcall;
begin
Result := Wnd <> 0;
if Result then
begin
SetWindowLong(wnd,GWL_STYLE,GetWindowLong(wnd,GWL_STYLE) or ES_Right);
EnumChildWindows(Wnd, @EnumChildProc, 0);
end;
end;
EnumChildWindows(combobox1.Handle, @EnumChildProc, 0);
Если изменять не ES_Right, а скажем ES_UPPERCASE, то все нормально. Для ES_Right не может работать.
← →
Ajax © (2004-02-01 16:14) [13]И все-таки, как получить выпадающий список без эдита???
← →
SPeller © (2004-02-02 07:52) [14]Кстати, убрать кнопку можно установив свойство csSimple в True. А в остальном... Ну неужели так принципиально выравнивание?
← →
SPeller © (2004-02-02 08:05) [15]Кстати, заметил только что. Если установлено свойство coSimple, то среди детей есть ComboLBox, а если не установлено, то его среди детей нет.
← →
Ajax © (2004-02-02 15:22) [16]>Кстати, убрать кнопку можно установив свойство csSimple в True
У меня в этот момент кнопка исчезает, но вместо нее образуется постоянно присутствующий список, что есть не очень хорошо.
Мне уже стало просто теоретически интересно каким образом реализуется поведение выпадающего списка. И как он отображается без формы под ним???
← →
Vladimir Kladov (2004-02-03 19:05) [17]Стилем окна WS_POPUP.
← →
Ajax © (2004-02-07 09:28) [18]>Vladimir Kladov (03.02.04 19:05) [17]
А можно ли такое реализовать самому?
← →
SPeller © (2004-02-07 18:30) [19]
> А можно ли такое реализовать самому?
Ты б ещё спросил, можно ли самому кнопку Пуск нажимать.
← →
Ajax © (2004-02-07 18:58) [20]>Ты б ещё спросил, можно ли самому кнопку Пуск нажимать.
Хорошо, сформулирую по-другому. Как это сделать?
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c