Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-77020
Саня
2003-04-12 08:43
2003.04.24
Как обработать кнопку Help


3-76780
msoftware
2003-04-03 09:26
2003.04.24
Помогите чайнику с TDecisionGrid


7-77202
Viacheslav
2003-03-08 15:16
2003.04.24
Как перехватываются все нажатия клавиш в WINDOWS 9x и NT? Клавиат


14-77170
uw
2003-04-08 01:12
2003.04.24
Сторонник смертной казни


14-77086
edicon
2003-04-06 19:26
2003.04.24
AsyncPro от TurboPower





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