Придется делать "свой" "combobox", еще вопросы:
1) Панель+кнопка или едит+кнопка и при клике распахивать то что нужно - вроде ниче сложного, но в разных темах это будет внешне отличаться от стандартного комбобокса. Может можно используя стандартный комбобокс подавить дропдавн его списка, а вместо него распахивать свой?
2) В случае едит+кнопка (этот вариант предпочтительнее, т.к. в винде по виду не отличается от комбобокса, в линуксе - отличается) как не допустить получение едитом клавиатурного фокуса?
3) Как на кнопках рисовать стрелки чтоб они не выпадали из темы оформления?
Вопросы по LCL
Модератор: Модераторы
Re: Вопросы по LCL
zub писал(а):1) Панель+кнопка или едит+кнопка и при клике распахивать то что нужно - вроде ниче сложного, но в разных темах это будет внешне отличаться от стандартного комбобокса. ...
3) Как на кнопках рисовать стрелки чтоб они не выпадали из темы оформления?
Lazarus - Поиск - Найти в файлах,
Искать текст: ThemeServices
(*) искать в каталогах
Каталог: <путь к исходникам Lazarus>
Найти.
Дальше смотреть по методам и свойствам ThemeServices, и примерам его использования. Возможно будет не совсем то, что ожидалось, например рисуется не стрелка на кнопке, а кнопка целиком. Но в целом, проблема отрисовки нестандартных контролов с использованием стандартной темы решается как-то так.
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Re: Вопросы по LCL
2zub
Очень неплохая имитация комбобокса получается из комбинации "TEdit+Button+StringGrid". Я делал такую штуку для одной из программ - нужно было в выпадающем списке сделать несколько столбцов с рисунками и сложной раскраской. В StringGrid сможете и клик по рисунку (читай - отдельному столбцу) отлавливать без проблем.
Очень неплохая имитация комбобокса получается из комбинации "TEdit+Button+StringGrid". Я делал такую штуку для одной из программ - нужно было в выпадающем списке сделать несколько столбцов с рисунками и сложной раскраской. В StringGrid сможете и клик по рисунку (читай - отдельному столбцу) отлавливать без проблем.
Re: Вопросы по LCL
Odyssey
Спасибо, попробую.
Nik
Можно гденибудь глянуть реализацию?
Спасибо, попробую.
Nik
Можно гденибудь глянуть реализацию?
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Re: Вопросы по LCL
2zub
Могу показать упрощённый вариант в другой проге: http://www.megabyte-web.ru/downloads/so ... -0.8.2.exe
См. на вкладке "Валюты" / "Новая валюта". Логика там простая (обработка пары OnClick + управление Visible для StringGrid). Ну а собственно отрисовку красивых StringGrid здесь много раз обсуждали.
Могу показать упрощённый вариант в другой проге: http://www.megabyte-web.ru/downloads/so ... -0.8.2.exe
См. на вкладке "Валюты" / "Новая валюта". Логика там простая (обработка пары OnClick + управление Visible для StringGrid). Ну а собственно отрисовку красивых StringGrid здесь много раз обсуждали.
Re: Вопросы по LCL
Nik
спасибо
спасибо
Re: Вопросы по LCL
еще вопросец назрел:
как подавить OnMouseDown для контрола если было запущено контекстное меню? т.е. было запущено какое либо контекстное меню, пользователь не выбирая ничего в меню щелкает по рабочей области (или вообще гдето хрен знает где) чтоб закрыть меню, меню закрывается, но в рабочую область (или туда где пользователь щелкнул) проскакивает MouseDown и совершаются ненужные действия.
не прокатывает - меню к этому моменту уже закрыто((
Родился костыль - всем менюшкам в OnClose назначается инкремент счетчика закрытия и
Но это некрасиво и могут пропадать клики. Вообще не баг ли что при закрытии контекстного меню выскакивает MouseDown?
как подавить OnMouseDown для контрола если было запущено контекстное меню? т.е. было запущено какое либо контекстное меню, пользователь не выбирая ничего в меню щелкает по рабочей области (или вообще гдето хрен знает где) чтоб закрыть меню, меню закрывается, но в рабочую область (или туда где пользователь щелкнул) проскакивает MouseDown и совершаются ненужные действия.
Код: Выделить всё
procedure TOGLWnd.MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);
begin
if (ActivePopupMenu<>nil) then exit;
...........не прокатывает - меню к этому моменту уже закрыто((
Родился костыль - всем менюшкам в OnClose назначается инкремент счетчика закрытия и
Код: Выделить всё
procedure TOGLWnd.MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);
begin
if счетчик закрытия>0 then
begin
счетчик закрытия:=0;
exit;
end;
...........Но это некрасиво и могут пропадать клики. Вообще не баг ли что при закрытии контекстного меню выскакивает MouseDown?
Re: Вопросы по LCL
Давненько небыло вопросов))
Хочу приделать к TOpenGLControl полосы прокрутки. Это можно какнибудь сделать не заводя прокладку в виде TPanel на которую сложить скролбары и опенглконтрол?
Хочу приделать к TOpenGLControl полосы прокрутки. Это можно какнибудь сделать не заводя прокладку в виде TPanel на которую сложить скролбары и опенглконтрол?
