![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пропадают вкладки в PageControl'е [XP]
cyber-pilot © (2009-08-27 15:57:00)У меня проблемы с отрисовкой вкладок в компоненте PageControl при перемещении по вкладкам. Если вкладок много и последовательно переходить по ним вправо, а потом влево, то некоторые из них начинают пропадать.
У меня Delphi 2007, win XP.
sniknik (2009-08-27 22:48:00) [1]они у тебя похоже просто не прорисовываются, попробуй добавь
procedure TForm1.Button1Click(Sender: TObject);
begin
if PageControl1.TabIndex > 0 then
PageControl1.TabIndex := PageControl1.TabIndex - 1;
PageControl1.Repaint;
end;
cyber-pilot (2009-08-27 20:01:00) [2]
> Amoeba ©
Все равно то же самое.
Amoeba (2009-08-27 18:54:00) [3]Еще можно так:
procedure TForm1.Button1Click(Sender: TObject);
begin
with PageControl1 do
if ActivePageIndex > 0 then
ActivePage := Pages[ActivePageIndex - 1];
end;
Amoeba (2009-08-27 18:48:00) [4]Sorry, должно быть так:
procedure TForm1.Button1Click(Sender: TObject);
begin
with PageControl1 do
if ActivePageIndex > 0 then
ActivePageIndex:= ActivePageIndex - 1;
end;
Amoeba (2009-08-27 18:44:00) [5]Попробуй изменить код таким образом:
procedure TForm1.Button1Click(Sender: TObject);
begin
with PageControl1 do
if ActivePageIndex > 0 then
ActivePage:= ActivePageIndex - 1;
end;
cyber-pilot (2009-08-27 18:28:00) [6]Точно прижат.
Они не совсем пропадают, если преходить между вкладками, то они восстанавливаются. Но ни PageControl1.Update, ни Refresh, ни Invalidate не помогают.
clickmaker (2009-08-27 18:25:00) [7]короче, попробуй PageControl1.Update или Refresh после смены индекса
clickmaker (2009-08-27 18:20:00) [8]а пэйджконтрол точно прижат к левому краю?
если да, то похоже на глюк отрисовки. Если бы они пропадали совсем, было бы что-то типа 10023 10025 10029
cyber-pilot (2009-08-27 18:19:00) [9]Вот пример получше: http://i036.radikal.ru/0908/0b/a04dd03411de.jpg
cyber-pilot (2009-08-27 18:15:00) [10]Получается вот так: http://s46.radikal.ru/i114/0908/4e/f17885c7d5a1.jpg
clickmaker (2009-08-27 17:59:00) [11]> некоторые из них начинают пропадать
совсем пропадать? образуются дыры в 10000 + i?
cyber-pilot (2009-08-27 16:00:00) [12]Вот пример как сделано перемещение по вкладкам:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, JvExComCtrls, JvComCtrls, TntComCtrls;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if PageControl1.TabIndex > 0 then
PageControl1.TabIndex := PageControl1.TabIndex - 1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if PageControl1.TabIndex < PageControl1.PageCount - 1 then
PageControl1.TabIndex := PageControl1.TabIndex + 1;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
vTab: TTabSheet;
begin
PageControl1.Style := tsFlatButtons;
for i := 0 to 30 do
begin
vTab := TTabSheet.Create(PageControl1);
vTab.Caption := IntToStr(10000 + i);
vTab.PageControl := PageControl1;
end;
end;
end.
Как сделать, чтобы вкладки не пропадали?