Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
4-1084820754
LORDMAXX
2004-05-17 23:05
2004.06.27
Перехват нажатия клавиш под Win2000


14-1086891628
DeadMeat
2004-06-10 22:20
2004.06.27
Modem


14-1086964902
Undert
2004-06-11 18:41
2004.06.27
Помогите с SQL запросом


1-1087071297
Roland88
2004-06-13 00:14
2004.06.27
Бэкап реестра


1-1087285327
Timon
2004-06-15 11:42
2004.06.27
Уважаемые Мастера помогите в проблеме (GRID DBGRID)...........