Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "KOL";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-1148300012
Schooler
2006-05-22 16:13
2006.07.09
Как правильно реализовать эффект


15-1149850578
Александр Иванов
2006-06-09 14:56
2006.07.09
Проблемы с последовательностью событий формы


2-1150640216
AlexanderMS
2006-06-18 18:16
2006.07.09
Клавиша быстрого доступа в меню (TMainMenu) "&Options"...


1-1148624968
AntonGF
2006-05-26 10:29
2006.07.09
Связь переменной со свойством компанента и наоборот


1-1148915316
webpauk
2006-05-29 19:08
2006.07.09
WebBrowser EM_SCROLL





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