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

Вниз

Подмена функций   Найти похожие ветки 

 
Chum   (2005-10-13 19:22) [0]

Значит появилась такая мысля: Есть TabControl. Новая вкладка представляет из себя панель (посмотрел как работает, вызывается NewPanel). Так вот, есть желание (даже потребность) - заменит Panel на GroupBox. Попытался так:

Сделал свою функцию MyNewPanel по аргументам и возвращаемому значению совпадающую с NewPanel. пишу в коде

p:=@NewPanel
@NewPanel:=@MyNewPanel.

P-указатель. Ну компилятор ругается и говорит, что так незя. Это первое, что пришло в голову, ну и ясно, что работать не бует. как можно????

P.S. Аналогичная ситуация с KolFrame - он вроде тоже основан на Panel. И хотелось бы иметь возможность TabControl`y подсунуть Frame.

Есть у кого нить идейки????

Спасибо


 
SPeller ©   (2005-10-13 20:29) [1]

Если они создаются в inc-файле, то объявляешь у себя в модуле, где таб-контрол, функцию NewPanel, и компилятор подхватит именно её. Если они создаются в kol.pas - то ничего ты не сделаешь. (я уже и забыл, как там таб-контрол то создаётся..:)


 
Thaddy   (2005-10-13 21:44) [2]

p:=@NewPanel means pointer to pointer.
Try
p:=NewPanel;

since PControl = ^TControl;// i.e. is already a pointer to the object


 
SPeller ©   (2005-10-14 05:07) [3]

Добавлю, что я описанным мной способом свой тулбар создавал.


 
Vladimir Kladov   (2005-10-14 16:18) [4]

если бы это была обычная панель, ее можно было бы (например) выровнять по какому-нибудь краю. Или еще что-нибудь такое сделать. Это не панель, хотя функционально мало чем отличается от панели. Так что не надо выдумывать. Кладите на нее свой групбокс как обычно.


 
chum   (2005-10-15 13:46) [5]


> если бы это была обычная панель, ее можно было бы (например)
> выровнять по какому-нибудь краю. Или еще что-нибудь такое
> сделать. Это не панель, хотя функционально мало чем отличается
> от панели. Так что не надо выдумывать. Кладите на нее свой
> групбокс как обычно.
>


Ну допустим, с групбоксом ясно. А вот по поводй фрейма. ведь он вобщем то и есть панель? Просто надо создать кучу вкладок, одинаковых по содержанию.


 
Vladimir Kladov   (2005-10-15 16:19) [6]

и фрейм так же надо создавать как дочерний - как же еще иначе-то? Закладка в табе - это не панель. Это - закладка.


 
chum   (2005-10-15 22:53) [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-16 11:12) [8]

Нк попробуйте тогда так: пишете свой TC_Insert1 с аналогичными параметрами, но не как метод, а как обычную функцию. И вызывайте для вставки таба. Хотя, может объясните, что это даст. Какие преимущества, кроме дополнительных манипуляций?


 
chum   (2005-10-22 17:05) [9]

Я разработаю фрейм, который должен повтаряться на всех вкладка (т.е. вкладки имеют один набор элементов) и подменяя это своей функцией, я делаю это красиво и экономлю на панели (память есественно)


 
SPeller ©   (2005-10-22 20:33) [10]

А не проще ли сделать одно окно без всяких табов, в котором разместить фрейм, а рядом разместить, например, тулбар, который будет переключать, по всей видимости, содержимое фрейма, и не морочаться с подменами функций?


 
ECM ©   (2005-10-23 13:56) [11]

Согласен со SPeller [10], действительно зачем размножать один и тот же фрейм еще и на одном и том же месте?
Хотел добавить- если все же хочется иметь вкладки - их можно оставить
(один заголовок с кнопками-вкладками) и использовать как кнопки переключения содержимого фрейма.


 
chum   (2005-10-23 20:16) [12]

В принципе, можно и так, но это, если так можно выразиться, спортивный интерес. если вкладки так реализованы, то можно ли как-то всё это подстроить под себя. В итоге получается что можно, но то что это самый правильный подход - я не настаиваю. Хотя вот, была у меня задачка с табами (все разные), но на каждой закладке размещалася одна GroupBox панель. так вот, можно ли заменить  в табе Panel на GroupBox? Но Владимир уже ответил - что нет. Ну вобщем Всем спасибо, интерес удовлетворён :)


 
Vladimir Kladov   (2005-10-23 20:27) [13]

нет, я ответил, что в этом нет надобности. Я и сейчас не вижу в подмене никакого интереса кроме спортивного. У себя я предпочитаю использовать TabControl с обрезанными табами, а выбирать закладку из листвью где-нибудь слева. Особенно когда табов много - при использовании табов тогда начинается то, что мне особенно не нравится: все сразу не видны, делать многострочными - это маразм. В листвью все ясно и понятно, и все закладки сразу видно.



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

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

Наверх




Память: 0.5 MB
Время: 0.052 c
1-1148330205
parovoZZ
2006-05-23 00:36
2006.07.09
И снова форма в dll : инициализация


1-1148925058
VitaWED
2006-05-29 21:50
2006.07.09
ListView + кнопки


11-1128946067
BMouradov
2005-10-10 16:07
2006.07.09
Ошибка PBitMap, начиная с 2.13


15-1150036417
efew
2006-06-11 18:33
2006.07.09
http://acm.timus.ru/ - не работает!!


15-1149860076
StriderMan
2006-06-09 17:34
2006.07.09
Можно ли написать прогу для PIC-контроллера на Делфи?