Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1210793838
No_Dead
2008-05-14 23:37
2008.06.29
Перекрестные ссылки на сайте


9-1170690177
keal
2007-02-05 18:42
2008.06.29
создание 3d моделей


2-1212580075
123-ий
2008-06-04 15:47
2008.06.29
Skype


11-1190364115
grim
2007-09-21 12:41
2008.06.29
по поводу создания форм


2-1212256392
Wildyt
2008-05-31 21:53
2008.06.29
Дан файл, состоящий из чисел





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