Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-1086702048
Weber
2004-06-08 17:40
2004.06.27
Копировать с CD на CD


1-1087297165
ЁПРСТ
2004-06-15 14:59
2004.06.27
Можно ли сделать ComboBox нередактируемым?


1-1086850034
Konstantin
2004-06-10 10:47
2004.06.27
Помогите пожалуйста с Excel, - <invalid variant operation>


14-1086164825
ИМХО
2004-06-02 12:27
2004.06.27
Пару слов и Стивене Кинге


1-1086997816
Syava
2004-06-12 03:50
2004.06.27
Как распечатать StringGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский