Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Выравнивание в ComboBox при помощи API   Найти похожие ветки 

 
Александр Григоренко   (2004-03-16 21:44) [0]

Был бы весьма признателен за оказанное содействие в решении моего вопроса, заключающегося в том, как организовать выравнивание текста по правой стороне компонента ComboBox?

Спасибо за помощь!


 
Александр Григоренко   (2004-03-16 21:44) [0]

Был бы весьма признателен за оказанное содействие в решении моего вопроса, заключающегося в том, как организовать выравнивание текста по правой стороне компонента ComboBox?

Спасибо за помощь!


 
Cobalt ©   (2004-03-16 23:24) [1]

а чё, в справке нету?
Ты же на API пишешь!!!


 
Cobalt ©   (2004-03-16 23:24) [1]

а чё, в справке нету?
Ты же на API пишешь!!!


 
Александр Григоренко   (2004-03-16 23:36) [2]

Я, к сожалению, не могу найти параметр для функции SetWindowLong. ES_RIGHT и подобные точно не подходят для ComboBox.


 
Александр Григоренко   (2004-03-16 23:36) [2]

Я, к сожалению, не могу найти параметр для функции SetWindowLong. ES_RIGHT и подобные точно не подходят для ComboBox.


 
Cobalt ©   (2004-03-17 00:14) [3]

Ещё вопросик - а вы уверены, что такое возможно?
Видели где-то? Где?
А это точно был стандартный Combobox?


 
Cobalt ©   (2004-03-17 00:14) [3]

Ещё вопросик - а вы уверены, что такое возможно?
Видели где-то? Где?
А это точно был стандартный Combobox?


 
Игорь Шевченко ©   (2004-03-17 00:24) [4]

Для ComboBox со стилем CS_DROPDOWN: (На API некогда писать, пишу на VCL, но суть та же самая)

procedure TForm1.FormCreate(Sender: TObject);
var
 ComboEditWindow: HWND;
begin
 ComboEditWindow := GetDlgItem(ComboBox.Handle, 1001);
 if IsWindow(ComboEditWindow) then
   SetWindowLong(ComboEditWindow, GWL_STYLE,
     GetWindowLong(ComboEditWindow, GWL_STYLE) or ES_RIGHT);
end;


При этом текст в окне редактирования становится выровненным по правому краю. Как сделать, чтобы и в списке значения были выровнены по правому краю, увы, не знаю.

Если сделать ComboBox со стилем csOwnerDrawFixed, то можно задавать выравнивание справа для всех частей ComboBox, но ввести текст туда будет нельзя - только выбирать из списка.


 
Игорь Шевченко ©   (2004-03-17 00:24) [4]

Для ComboBox со стилем CS_DROPDOWN: (На API некогда писать, пишу на VCL, но суть та же самая)

procedure TForm1.FormCreate(Sender: TObject);
var
 ComboEditWindow: HWND;
begin
 ComboEditWindow := GetDlgItem(ComboBox.Handle, 1001);
 if IsWindow(ComboEditWindow) then
   SetWindowLong(ComboEditWindow, GWL_STYLE,
     GetWindowLong(ComboEditWindow, GWL_STYLE) or ES_RIGHT);
end;


При этом текст в окне редактирования становится выровненным по правому краю. Как сделать, чтобы и в списке значения были выровнены по правому краю, увы, не знаю.

Если сделать ComboBox со стилем csOwnerDrawFixed, то можно задавать выравнивание справа для всех частей ComboBox, но ввести текст туда будет нельзя - только выбирать из списка.


 
Александр Григоренко   (2004-03-17 13:42) [5]

Здравствуйте, Игорь!

Спасибо за ответ! Но у меня как раз ComboBox в стиле csOwnerDrawFixed. Если вас не затруднит, не могли бы вы модифицировать код в соответствии с уточнением? Например, нижеследующий код смещает кнопку раскрытия списка влево.

SetWindowLong(ComboBox1.Handle, GWL_EXSTYLE,
GetWindowLong(ComboBox1.Handle, GWL_EXSTYLE) or WS_EX_RIGHT);


А как можно реализовать выравнивание именно элементов списка по правой стороне?


 
Александр Григоренко   (2004-03-17 13:42) [5]

Здравствуйте, Игорь!

Спасибо за ответ! Но у меня как раз ComboBox в стиле csOwnerDrawFixed. Если вас не затруднит, не могли бы вы модифицировать код в соответствии с уточнением? Например, нижеследующий код смещает кнопку раскрытия списка влево.

SetWindowLong(ComboBox1.Handle, GWL_EXSTYLE,
GetWindowLong(ComboBox1.Handle, GWL_EXSTYLE) or WS_EX_RIGHT);


А как можно реализовать выравнивание именно элементов списка по правой стороне?


 
Игорь Шевченко ©   (2004-03-17 13:51) [6]

Александр Григоренко   (17.03.04 13:42)


> А как можно реализовать выравнивание именно элементов списка
> по правой стороне?


Как вы рисуете элементы списка ?


 
Игорь Шевченко ©   (2004-03-17 13:51) [6]

Александр Григоренко   (17.03.04 13:42)


> А как можно реализовать выравнивание именно элементов списка
> по правой стороне?


Как вы рисуете элементы списка ?



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.058 c
6-1079105001
moor38
2004-03-12 18:23
2004.05.09
Как в сети по IP адресу узнать имя машины?


7-1079811061
Алексей31
2004-03-20 22:31
2004.05.09
!!! Записать-отформатировать-считать ?!


3-1081408628
balbes
2004-04-08 11:17
2004.05.09
Какую БД выбрать, чтобы данные были защищены (нужен SQL)?


14-1081973550
Ломброзо
2004-04-15 00:12
2004.05.09
А хто пишет "Хокку для души"??


1-1082928780
x_michael
2004-04-26 01:33
2004.05.09
Как использовать DLL скомпилинные в MathLab е в проектах Delphi?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский