Форум: "Прочее";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
ВнизPageControl Найти похожие ветки
← →
Marij (2008-05-15 15:34) [0]Помогите плиз.
Как сделать кнопки переключения межу Tabsheet, чтобы закладок видно не было, а при нажатии кнопки "Далее" и "Назад" происходил переход между страницами.
← →
Ega23 © (2008-05-15 15:40) [1]TTabSheet.TabVisible, TPageControl.Pages + F1
← →
Palladin © (2008-05-15 15:40) [2]TPageControl.ActivePageIndex
TTabSheet.TabVisible
+
F1
← →
Игорь Шевченко © (2008-05-15 15:42) [3]может кто еще подскажет, как легко и просто убрать 3-D эффекты с закладок и с самого PageControl ? :)
← →
Palladin © (2008-05-15 15:59) [4]:) хе...
Var
sbx,sby:Integer;
p:TPanel;
p:=TPanel.Create(PageControl.Owner);
p.BevelOuter:=bvNone;
p.Parent:=PageControl.Parent;
p.BoundsRect:=PageControl.BoundsRect;
PageControl.Parent:=p;
sbx:=GetSystemMetrics(SM_CXEDGE)+GetSystemMetrics(SM_CXBORDER);
sby:=GetSystemMetrics(SM_CYEDGE)+GetSystemMetrics(SM_CYBORDER);
PageControl.SetBounds(-sbx,-sby,p.Width+sbx*2,p.Height+sby*2);
так? :)
← →
Игорь Шевченко © (2008-05-15 16:07) [5]Palladin © (15.05.08 15:59) [4]
Не, не так. Чтобы вкладки были видны, но плоские
Нечто вроде такого:
http://demos.devexpress.com/ASPxperienceDemos/TabControl/Features.aspx
← →
Ega23 © (2008-05-15 16:11) [6]
> Не, не так. Чтобы вкладки были видны, но плоские
И штобы сам PC плоским можно было зделоть.
Да, это проблема...
← →
TIF © (2008-05-15 16:13) [7]TMS вам в помощь
← →
Игорь Шевченко © (2008-05-15 16:15) [8]Ega23 © (15.05.08 16:11) [6]
Сколько не рылся, не нашел примеров. Как саму рамку убрать, нашел, а вкладки, видно, только рисованием. Причем эта зараза после вызова OnDrawTab 3D-эффекты сама рисует.
Хочется быстрого решения, желательно не в 1000 строк кода:) Ну и разумеется, без сторонних компонент
← →
TIF © (2008-05-15 16:33) [9]
TAdvPageControl = class(TCustomTabControl)
private
FPages: TList;
FActivePage: TAdvTabSheet;
FNewDockSheet: TAdvTabSheet;
FUndockingPage: TAdvTabSheet;
FTabMargin: TTabMargin;
. . .
procedure SetTabSplitLine(Value: Boolean);
procedure SetRoundEdges(Value: Boolean);
procedure SetTabMargins;
procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
. . .
Вот тут-то и запрятано удаление 3D... TMSовцы ребята умные, но ранние версии их новых компонентов иногда глючат и тормозят :(
Футы-нуты! Самое главное забыл:
FTabBorder3D: Boolean;
Вот это свойтсво и включает/отключает 3D рамки!
procedure TAdvPageControl.SetTabBorder3D(Value: Boolean);
var
i: integer;
begin
if FTabBorder3D <> Value then
begin
FTabBorder3D := Value;
if Value then
begin
inherited Images := FImages;
end
else
begin
inherited Images := FDummyImages;
end;
OwnerDraw := not TabBorder3D;
for i := PageCount - 1 downto 0 do
begin
UpdateTab(Pages[I]);
end;
if not FTabBorder3D then
UpdateTabForActiveFont(FActivePage);
Invalidate;
end;
end;
Ну, кто хочет копнуть глубже и подробно изучить принцип, ищите AdvPageControl.pas
← →
Игорь Шевченко © (2008-05-15 16:36) [10]TIF © (15.05.08 16:33) [9]
К чему этот неформатированный поток сознания ?
← →
TIF © (2008-05-15 16:41) [11]
> К чему этот неформатированный поток сознания ?
к этому
> Сколько не рылся, не нашел примеров.
Без обид
← →
Игорь Шевченко © (2008-05-15 16:44) [12]TIF © (15.05.08 16:41) [11]
Ты явно не понимаешь. Было сказано, что без сторонних компонентов, без упертых где-то исходников, и т.д.
Или исходники того, откуда ты выдрал кусок, лежат где-то в общеизвестном свободном доступе ? Тогда ссылочку.
← →
TIF © (2008-05-15 17:09) [13]
> Было сказано, что без сторонних компонентов, без упертых
> где-то исходников
Ну, хоть это и сторонний компонент, но в нём используется способ удаления 3д-рамок! А это и является интересной вещью
> Или исходники того, откуда ты выдрал кусок, лежат где-то
> в общеизвестном свободном доступе ? Тогда ссылочку.
Уже да ;)
http://www.infodelphi.narod.ru/advpagecontrol.pas
← →
tormoz (2008-05-15 17:21) [14]PageControl1.SelectNextPage(true) - вперед
PageControl1.SelectNextPage(false) - назад
← →
Игорь Шевченко © (2008-05-15 17:23) [15]"No parts of the source code can be included in any other component or application without written authorization of the author."
Вот это внимательно читал ?
← →
tormoz (2008-05-15 17:24) [16]А чем не подходит
TPageControl.Style := tsFlatButtons
?
← →
Palladin © (2008-05-15 17:26) [17]
> tormoz (15.05.08 17:24) [16]
наверное тем, что это не то что нужно...
← →
Игорь Шевченко © (2008-05-15 17:26) [18]tormoz (15.05.08 17:24) [16]
Тем, что не получается такой картинки, как в [5]
← →
Style © (2008-05-15 17:38) [19]Ничего не могу умнее придумать кроме того как рисовать все самому
суть такая :)
TXWinControl = class (TWinControl);
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Button1: TButton;
Button2: TButton;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
procedure Button1Click(Sender: TObject);
private
procedure CustomDraw(Msg: TMessage);
{ Private declarations }
public
WndProc: tWndMethod;
procedure OnPageWndProc(var Msg: TMessage);
{ Public declarations }
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TXWinControl(PageControl1).Color := clRed;
WndProc := PageControl1.WindowProc;
PageControl1.WindowProc := OnPageWndProc;
TXWinControl(PageControl1).RecreateWnd;
PageControl1.Repaint;
end;
procedure TForm1.CustomDraw(Msg: TMessage);
var
i: integer;
begin
for i := 0 to PageControl1.PageCount-1 do
begin
PageControl1.Canvas.Rectangle(PageControl1.TabRect(i));
PageControl1.Pages[i].Repaint;
end;
Msg.Result := 1;
end;
procedure TForm1.OnPageWndProc(var Msg: TMessage);
begin
if (Msg.Msg = WM_NCPAINT ) or (Msg.Msg = WM_PAINT )then
begin
CustomDraw(Msg);
end else
WndProc(Msg);
end;
Только надо работать напильнегом чтобы получилось как [5]
← →
TIF © (2008-05-15 17:41) [20]
> Вот это внимательно читал ?
Читал, изучал. Только для России это не препятствие.
А если уж хочется всё делать законно, то нужно просто купить этот компонент (входит в пакет, стоимость которого около $5000, упрощённая модификация - $50-100)
PS: можно и на форумах всех пересажать за то, что выкладывают в ответ на вопросы куски кода, авторы которых не указаны явно. Кто знает, чьё авторское право они нарушают?
Теперь, как всегда напоследок, главная мысль:
"Не может быть использована полностью (частично)?"
А зачем всё слизывать вподчистую? Может быть, имеет смысл изучить код и на его основе написать свой вариант?!
← →
Игорь Шевченко © (2008-05-15 17:50) [21]TIF © (15.05.08 17:41) [20]
> Только для России это не препятствие.
Это иллюзия.
> PS: можно и на форумах всех пересажать за то, что выкладывают
> в ответ на вопросы куски кода, авторы которых не указаны
> явно. Кто знает, чьё авторское право они нарушают?
тебя можно не сажать, тебя достаточно просто забанить
← →
TIF © (2008-05-15 18:00) [22]
> тебя можно не сажать, тебя достаточно просто забанить
Кто ж это сказал, "всех не пересажаете"? Это вроде из "Матери" Горького или я опять что-то путаю...
Так вот, "всех не забаните" :) Это нереально
Ну, это право я оставлю российскому законодательству и госдуме. Решайте сами
И всё-таки, на основе изучения этого кода можно написать небольшую процедурку, которая будет убирать 3д-рамки. Кому это реально надо, тот потрудится и сделает это
Мне - не надо. В висте, например, этих рамок и так нет :-)
← →
ketmar © (2008-05-15 19:09) [23]>[22] TIF © (2008-05-15 18:00:00)
тебе и мозг не нужен — всё равно ты не знаешь, что с ним делать.
---
Understanding is not required. Only obedience.
← →
TIF © (2008-05-15 20:24) [24]
> всё равно ты не знаешь, что с ним делать.
составлять из букв слова? :)
А вот принципом: подсмотрел - сделал как там (почти как там) пользоваться нужно. И волки сыты, и овцы целы. Вот для этого мозг надо
Повторюсь: меня эти рамки не интересуют, ибо проще взять готовый компонент
← →
silver © (2008-05-15 20:28) [25]
> А вот принципом: подсмотрел - сделал как там (почти как
> там) пользоваться нужно. И волки сыты, и овцы целы. Вот
> для этого мозг надо
Для этого не надо.
← →
TIF © (2008-05-15 20:44) [26]
> Для этого не надо.
Слово почти предполагает не тупое списывание, а разбор алгоритма, по пунктам, распознавание слабых мест и лишних операций, реструктцризацию кода и его полное воссоздание с нуля на основе собственного опыта и полученных из представленного примера знаний
Не знаю, как вы, но я при необходимости включить в программу новую незнакомую функцию разбираю её от и до, полностью переписываю. Начиная от простого переименовывания переменных и оформления кода и заканчивания внедрением новых операций/удаления лишних и ненужных и объединения некоторых строк, потому что часто сложные операции разбиваются на несколько простых
Так что надо. Ну, а если списывааааать - то нет...
← →
silver © (2008-05-15 21:01) [27]Все это и есть - "тупое списывание"
← →
Palladin © (2008-05-15 21:47) [28]
>Игорь Шевченко ©
сдается мне, все рисовать самому нуна :)
← →
Игорь Шевченко © (2008-05-15 21:54) [29]Palladin © (15.05.08 21:47) [28]
Увы. На уровне TabControl"а я сделал то, чего хотел, а хотелось бы PageControl - у TabControl"а TabSheet-ов нету, а управлять видимостью фреймов при переходе с вкладки на вкладку как-то тоже не очень кузяво.
Придется делать оценку стоимости, что быстрее :)
← →
b z (2008-05-15 22:00) [30]
> управлять видимостью фреймов
А PageControl для этого почему не подходит? т.е. управлять видимостью его TabSheet-ов.
← →
Palladin © (2008-05-15 22:03) [31]
> На уровне TabControl"а я сделал то, чего хотел
если видимость фреймов некузяво почему бы не решить составным? берем TTabControl и TPageControl, с кастрированными табами (и бордюром по желанию) и просто переключать страницы на нем?
или, тоже, не кузяво?
← →
Игорь Шевченко © (2008-05-15 22:24) [32]Palladin © (15.05.08 22:03) [31]
Куда бы фотку положить, чего я хочу...
http://picasaweb.google.com/ISchevchenko/MoneyScreenshots/photo#5200671843024341890
Вот там как раз то, чего я хочу добиться. В смысле, такого же PageControl-а по виду
← →
DVM © (2008-05-15 22:52) [33]
> Игорь Шевченко © (15.05.08 22:24) [32]
Что-то Вас в последнее время на красивости потянуло. То Edit-ы с градиентами, то табконтролы нестандартные :)
← →
Игорь Шевченко © (2008-05-15 23:03) [34]DVM © (15.05.08 22:52) [33]
Эстетствую :)
Кстати, Edit с градиентом так и не вышел нормальный.
← →
guav © (2008-05-15 23:18) [35]Кстати в отличие от Edit, пейдж котролу с OwnerDraw и без HotTrack вроде как и незачем рисоваться помимо WM_PAINT, что мешает просто WM_PAINT обработать как хочется ?
← →
Игорь Шевченко © (2008-05-15 23:53) [36]guav © (15.05.08 23:18) [35]
Ничего не мешает. Просто те решения, которые я видел, были
а) довольно громоздкие.
б) коммерческие.
Если не найду негромоздкого решения, то оставлю TabControl с фреймами, которые буду переключать при смене закладок.
← →
TIF © (2008-05-15 23:56) [37]
> Edit с градиентом
Я б конечно посоветовал исходники freeware компонента TFlatEdit, но в нём есть один маленький глюк, поэтому ничего не скажу
← →
Игорь Шевченко © (2008-05-16 00:01) [38]TIF © (15.05.08 23:56) [37]
Ты прежде чем советовать, почитай
http://delphimaster.net/view/5-1209486182/
← →
silver © (2008-05-16 01:58) [39]Игорь Шевченко © (16.05.08 00:01) [38]
Зачем читать, если можно сразу чушь писать?
ТИФ, успокойся, и действительно читай что пишут.
← →
Германн © (2008-05-16 02:21) [40]
> Игорь Шевченко © (15.05.08 23:03) [34]
>
> DVM © (15.05.08 22:52) [33]
>
> Эстетствую :)
>
В отпуске что-ли?
Вспомни цитату из Швейка.
:)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.05 c