|
|
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
Пытаюсь реализовать SpeedButton на WinAPI. В чистом виде такого контрола, судя по всему, нет. Поэтому есть предположение, что в делфи он реализован статиком со сменой стилей рамки, но только каких? Если с утопленной кнопкой всё ясно - WS_EX_STATICEDGE, то подобрать стиль для выпуклой кнопки мне пока не удалось. Попытка расковырять дельфийскую кнопку "в лоб" через GetWindowLong ни к чему не привела - в обоих состояниях выдаются одинаковые стили, попытка применить которые в CreateWindowEx приводит к тому, что контрол вообще не отображается. Проблема бы решилась довольно просто, если бы задать вручную толщину рамки, но как это сделать через WinAPI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 16:28:05 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
почитать исходники TSpeedButton, судя по всему, не предлагать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 16:41:08 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
Kukuxumushuв каком именно "исходнике".если поискать файлы с расширением *.pas и содержимым TSpeedButton = class , сразу будет выдано, в каких именно исходниках нужно смотреть: 1. все исходники лежат в папке \source относительно каталога установленной делфи 2. для vcl: \source\vcl\vcl.Buttons.pas (для древних делфи в \source\vcl\Buttons.pas ) 3. для fmx: \source\fmx\FMX.StdCtrls. pas дальше разжевывать или сам способен посмотреть исходные тексты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 17:47:28 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
KukuxumushuПопытка расковырять дельфийскую кнопку "в лоб" через GetWindowLong ни к чему не привела - в обоих состояниях выдаются одинаковые стилиТы хочешь сказать, что у тебя GetWindowLong срабатывает для SpeedButton-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 17:50:43 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
авторесли поискать файлы с расширением *.pas и содержимым TSpeedButton = class asutp2, вы наверное не поверите - вот это первое, что я сделал. Ни до одного вызова CreateWindow таким способом дойти не удалось. Может вы сами попробуете, если я такой тупой, ибо раздавать абстраткные советы в духе "пойди туда поищи там" - много ума не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 17:55:19 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
KukuxumushuКак же надоели мамкины умники, которым лишь бы куда отправить "искать". Ну не знаешь ответа - пройди мимо, на форуме ещё тысячи тем. Или на худой конец скажи хоть в каком именно "исходнике". Жопа, спидбатон - не виндовый контрол. Нет там окна. Это просто картинка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 17:57:50 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
авторТы хочешь сказать, что у тебя GetWindowLong срабатывает для SpeedButton-а? Соколинский Борис, забыл уточнить, GetWindowLong я вызывал для TPanel - сделал 2 штуки, первая полностью идентична отжатой кнопке с наведенной на неё мышью ("выпуклая"), а вторая - нажатой ("вогнутая"). И стили оказались идентичными. И ещё я заметил, что в делфи у всех подобных контролов можно менять толщину бордера, но как это реализуется на уровне WinAPI? Тогда бы все проблемы исчезли сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 17:58:04 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
авторЖопа, спидбатон - не виндовый контрол. Нет там окна. чччД, я делал спидбатон из панели, там весь вопрос в стиле рамки. Или TPanel - тоже невиндовый контрол? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 18:04:00 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
Я вчера сделал TSpeedButton из TAction, как мне теперь прикрутить TScrollBox ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 19:03:12 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
Ты видишь кнопку ? И я вижу, а на самом деле её нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 19:05:19 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
нашел pas-файлы с контролами, нашел в них файл с классом TSpeedButton @ сделал поиск по файлу "CreateWindow", не нашел ничего из этого класса. закрыл файл. @ sql.ru , я прочитал исходники, нифига не понятно, расскажите как там это вот все устроено! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2017, 19:13:47 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
Kukuxumushuавторесли поискать файлы с расширением *.pas и содержимым TSpeedButton = class asutp2, вы наверное не поверите - вот это первое, что я сделал. Ни до одного вызова CreateWindow таким способом дойти не удалось. Может вы сами попробуете, если я такой тупой, ибо раздавать абстраткные советы в духе "пойди туда поищи там" - много ума не надо. Мамкиным не_умникам надо не искать CreateWindow у наследников TGraphicControl, а смотреть в TSpeedButton.Paint, т.к. TSpeedButton - это по сути не окно, а картинка, которая рисует сама себя в зависимости от состояния. И там всё видно, например для не-Flat кнопки без стилей: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2017, 01:50:40 |
|
||
|
Внутреннее устройство SpeedButton
|
|||
|---|---|---|---|
|
#18+
KukuxumushuМожет вы сами попробуете, если я такой тупой, ибо раздавать абстраткные советы в духе "пойди туда поищи там" - много ума не надо.Предполагается, что если человек хочет написать визуальный компонент в Delphi, то он имеет минимальное представление о структуре VCL и о том, как работают компоненты. Поэтому совет ни разу не абстрактный, а совершенно конкретный - посмотреть исходники TSpeedButton. Вообще, если сделать Ctrl + Click на декларации какой-нибудь SpeedButton, то откроется как раз файл с исходниками этого компонента. В первой строчке там написано Код: pascal 1. Читаем справку http://docwiki.embarcadero.com/Libraries/XE2/en/Vcl.Controls.TGraphicControl В ней написано что TGraphicControl - это базовый класс для легковесных элементов управления, которые не являются обертками для экранных объектов Windows. Рисование какого-нибудь такого компонента происходит в методе Paint, вот этот метод и надо смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2017, 11:28:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39489553&tid=2042030]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 453ms |

| 0 / 0 |
