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

Вниз

Проект   Найти похожие ветки 

 
NA   (2003-04-09 14:31) [0]

Давно у меня в башке висела идея создания такой панельки, невероятно экономящей место на форме, но вот решил-таки релизовать ее в жизнь.
Небольшая проблема в том, что ПОЛНОСТЬЮ компоненты я никогда не создавал (правки\доведения до ума всевозможных Gauge и 3DLabel не в счет :) - хочется сделать это максимально правильно и корректно.

Стратегическая цель: создать панель, похожую на Kinetix"овскую (например, в 3DMax Studio)

Тактические задачи: убить часть свойств панели, остальные перенаправить на кнопку, НЕПОДВИЖНУЮ даже в design-time и привязанную к верху панели (примерно по центру бордюра). Грамотно добавить к панели кнопку, таймер (для анимации панели)

Результат: выложить в полном исходном работающем коде в Кладовку всем на радость ;)

Применение WinAPI также решительно приветствуется.
Ну как?


 
MBo ©   (2003-04-09 14:40) [1]

в RALib такая есть, кажется


 
Андреев Павел   (2003-04-09 14:41) [2]

Убить часть свойств не получиться никак. А что значит перенаправить часть свойств ?


 
NA   (2003-04-09 14:45) [3]

Андреев Павел (09.04.03 14:41):
Например, у панели есть свойство Caption. Здесь его не нужно, вместо него бдет работать Caption кнопки в заголовке.

Т.е., классическим решением будет:

procedure SetCaption (Value: TCaption);
begin
if Value <> ... then begin Panel.Caption.:= ""; Buton.Caption:= Value end; Refresh
end;

Но, может есть более правильные способы, потому что это мне видится слегка костылём всё-таки.


 
NA   (2003-04-09 14:48) [4]

MBo © (09.04.03 14:40

RALib? не пользовал... Да и более легким кажется мне не юзать библиотеку с кучей модулей и взаимосвязей, а сделать наиболее легкий компонет, не зависящий от "сторонних производителей".

А! В идеале была бы сосместимость полученной компоненты с KOL - тоже хорошо было б.


 
malkolinge(fp)   (2003-04-09 15:31) [5]


> Убить часть свойств не получиться никак.

Ну можно выбить для них редакторы свойств :)


 
NA   (2003-04-09 15:37) [6]


>> Убить часть свойств не получиться никак.
> Ну можно выбить для них редакторы свойств :)


И как это "выбить"? :)))



 
Андреев Павел   (2003-04-09 15:41) [7]

Перенаправлять часть свойств таким образом немного нерационально.
Лучше сделать по анологии с TLabeledEdit, т.е. сделать дочерние компоненты видимыми через public или published.

Получается нужно сделать компоненту на основе TCustomPanel, которая просто некотором образом создавала бы на себе дочерние компоненты и управлять их размещением в OnWindowPosChanged ?


 
NA   (2003-04-09 19:20) [8]

Вот ювелирный компонент, блин:
http://torry.net/vcl/edits/enh/jcbtnedit.zip

Ссылку наугад пишу, могу ошибиться. Это BtnEdit - не поленитесь посмотреть код: получите удовольствие.

Вот в такую сторону и хочется двигаться. Если получится :)))


 
evvcom ©   (2003-04-10 02:05) [9]

Я так понял, что "убить часть свойств" - это чтобы они стали недоступными. Это просто. Надо соответствующее свойство просто вынести в protected (в private не надо - вдруг в дочерних классах все же пригодится что-либо).


 
NA ©   (2003-04-10 18:36) [10]

evvcom © (10.04.03 02:05)
с приватной секцией в общем-то ясно. Слово "спрятать" тут подходит больше, да это и не принципиально. А вот как насчет


> NA (09.04.03 14:45)
> Например, у панели есть свойство Caption. Здесь его не нужно,
> вместо него будет работать Caption кнопки в заголовке.
> procedure SetCaption (Value: TCaption);
> begin
> if Value <> ... then begin Panel.Caption.:= ""; Buton.Caption:=
> Value end; Refresh
> end;
>
> Но, может есть более правильные способы, потому что это
> мне видится слегка костылём всё-таки.


Какие здесь есть решения, кроме:
1) спрятать Panel.Caption и создать новое свойство (назовем его Title)
2) как уже показано выше, на лету перекидывать Caption на кнопку и следом очищать Panel.Caption, а после всего этого - Refresh

И два таких вопроса:
а) с точки зрения "прожорливости" компонента первый и второй способы идентичны?
б) какие есть способы "облегчить" компонент по части ресурсов, начиная от его организации, и заканчивая управлением свойствами?

P.S. повторюсь: из всех просмотренных мной за последние сутки компонент BtnEdit, имх_дилетантс_о, просто идеал того, как должен быть написан компонент. И еще и еще раз рекомендую ознакомиться с его исходным кодом ;)


 
NA ©   (2003-04-12 20:41) [11]

Эх... невелика активность, невелика.

Ладно.
- Ты кто?
- Смерть.
- А что без косы?
- Так справлюсь :)))
(с)КВН.
Похоже, так и придется все самому ворочать... %|

На текущем этапе актуальны следующие вопросы:

1) Чем Validate от Refresh при изменении свойства компонента (в исходных кодах чаще встречается Refresh), и что лучше?

2) Какие способы рекомендуют лучшие собаководы ;) для таскания объекта ПРАВОЙ кнопкой мыши (приоритет у WinAPI)


 
NA ©   (2003-04-14 01:22) [12]

А активность и вовсе на нуле. Жаль. Первый этап-то все равно готов:

- создан GroupBox с кнопкой в заголовке, сворачиваемый. Имеет несколько стилей. Таскается правой кнопкой мыши, симпатишный. Имеет OnButtonClick, OnRightClick, OnReduce и прочие приятные дополнения.

Но мне не нравится то, что при быстром таскании курсор мыши слетает с бокса и он, ессно, заклинивается в этой точке. Поэтому я и спрашиваю: что порекомендуют "лучшие собаководы", чтобы иметь возможность выбора между Педигрипалом и Ройялканином :)

Второй вопрос чисто академический (Invalidate vs Refresh) и поднят мной параллельно в
http://delphimaster.net/view/1-1050254766/

Неужто всем пофик? Не для себя же делаю, для всех...



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

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

Наверх




Память: 0.5 MB
Время: 0.012 c
1-76895
Igorek
2003-04-14 12:45
2003.04.24
Event in DesignTime


14-77083
Феликс
2003-04-07 03:05
2003.04.24
В боях за Басру погибли трое военнослужащих Британии. (rbc.ru)


3-76772
Stas
2003-04-04 13:49
2003.04.24
Номер записи


3-76750
Z_man7777
2003-04-04 08:32
2003.04.24
Как из БД InterBase 6.x картинку затолкать в TImageList?


1-76887
Adam
2003-04-14 17:38
2003.04.24
Размер файла...