![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подмена функций
Chum © (2005-10-13 19:22:00)Значит появилась такая мысля: Есть TabControl. Новая вкладка представляет из себя панель (посмотрел как работает, вызывается NewPanel). Так вот, есть желание (даже потребность) - заменит Panel на GroupBox. Попытался так:
Сделал свою функцию MyNewPanel по аргументам и возвращаемому значению совпадающую с NewPanel. пишу в коде
p:=@NewPanel
@NewPanel:=@MyNewPanel.
P-указатель. Ну компилятор ругается и говорит, что так незя. Это первое, что пришло в голову, ну и ясно, что работать не бует. как можно????
P.S. Аналогичная ситуация с KolFrame - он вроде тоже основан на Panel. И хотелось бы иметь возможность TabControl`y подсунуть Frame.
Есть у кого нить идейки????
Спасибо
Vladimir Kladov (2005-10-23 20:27:00) [1]нет, я ответил, что в этом нет надобности. Я и сейчас не вижу в подмене никакого интереса кроме спортивного. У себя я предпочитаю использовать TabControl с обрезанными табами, а выбирать закладку из листвью где-нибудь слева. Особенно когда табов много - при использовании табов тогда начинается то, что мне особенно не нравится: все сразу не видны, делать многострочными - это маразм. В листвью все ясно и понятно, и все закладки сразу видно.
chum (2005-10-23 20:16:00) [2]В принципе, можно и так, но это, если так можно выразиться, спортивный интерес. если вкладки так реализованы, то можно ли как-то всё это подстроить под себя. В итоге получается что можно, но то что это самый правильный подход - я не настаиваю. Хотя вот, была у меня задачка с табами (все разные), но на каждой закладке размещалася одна GroupBox панель. так вот, можно ли заменить в табе Panel на GroupBox? Но Владимир уже ответил - что нет. Ну вобщем Всем спасибо, интерес удовлетворён :)
ECM (2005-10-23 13:56:00) [3]Согласен со SPeller [10], действительно зачем размножать один и тот же фрейм еще и на одном и том же месте?
Хотел добавить- если все же хочется иметь вкладки - их можно оставить
(один заголовок с кнопками-вкладками) и использовать как кнопки переключения содержимого фрейма.
SPeller (2005-10-22 20:33:00) [4]А не проще ли сделать одно окно без всяких табов, в котором разместить фрейм, а рядом разместить, например, тулбар, который будет переключать, по всей видимости, содержимое фрейма, и не морочаться с подменами функций?
chum (2005-10-22 17:05:00) [5]Я разработаю фрейм, который должен повтаряться на всех вкладка (т.е. вкладки имеют один набор элементов) и подменяя это своей функцией, я делаю это красиво и экономлю на панели (память есественно)
Vladimir Kladov (2005-10-16 11:12:00) [6]Нк попробуйте тогда так: пишете свой TC_Insert1 с аналогичными параметрами, но не как метод, а как обычную функцию. И вызывайте для вставки таба. Хотя, может объясните, что это даст. Какие преимущества, кроме дополнительных манипуляций?
chum (2005-10-15 22:53:00) [7]Ну как не панель???? Вот код добавления вкладки:
function TControl.TC_Insert(Idx: Integer; const TabText: String;
TabImgIdx: Integer): PControl;
var TI: TTCItem;
begin
Result := NewPanel( @Self, esNone );
Result.FAlign := caClient;
Result.fNotUseAlign := True;
Result.fVisibleWoParent := TRUE;
Result.Visible := Count = 0;
TI.mask := TCIF_TEXT or TCIF_IMAGE or TCIF_PARAM;
TI.iImage := TabImgIdx;
TI.pszText := PChar( TabText );
TI.lParam := Integer( Result );
Perform( TCM_INSERTITEM, Idx, Integer( @TI ) );
Result.BoundsRect := TC_DisplayRect;
end;
Vladimir Kladov (2005-10-15 16:19:00) [8]и фрейм так же надо создавать как дочерний - как же еще иначе-то? Закладка в табе - это не панель. Это - закладка.
chum (2005-10-15 13:46:00) [9]
> если бы это была обычная панель, ее можно было бы (например)
> выровнять по какому-нибудь краю. Или еще что-нибудь такое
> сделать. Это не панель, хотя функционально мало чем отличается
> от панели. Так что не надо выдумывать. Кладите на нее свой
> групбокс как обычно.
>
Ну допустим, с групбоксом ясно. А вот по поводй фрейма. ведь он вобщем то и есть панель? Просто надо создать кучу вкладок, одинаковых по содержанию.
Vladimir Kladov (2005-10-14 16:18:00) [10]если бы это была обычная панель, ее можно было бы (например) выровнять по какому-нибудь краю. Или еще что-нибудь такое сделать. Это не панель, хотя функционально мало чем отличается от панели. Так что не надо выдумывать. Кладите на нее свой групбокс как обычно.
SPeller (2005-10-14 05:07:00) [11]Добавлю, что я описанным мной способом свой тулбар создавал.
Thaddy (2005-10-13 21:44:00) [12]p:=@NewPanel means pointer to pointer.
Try
p:=NewPanel;
since PControl = ^TControl;// i.e. is already a pointer to the object
SPeller (2005-10-13 20:29:00) [13]Если они создаются в inc-файле, то объявляешь у себя в модуле, где таб-контрол, функцию NewPanel, и компилятор подхватит именно её. Если они создаются в kol.pas - то ничего ты не сделаешь. (я уже и забыл, как там таб-контрол то создаётся..:)