Форум: "Основная";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];
ВнизПроект Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.008 c