Добавляем ID. Допустим ID=1.
TabControl.Tabs.AddObject(Description, TObject(ID));
Получаем ID.
Result :=longint(TabControl.Tabs.Objects[TabControl.TabIndex]);
Почему Result не равен 1?
Модератор: Модераторы
TabControl.Tabs.AddObject(Description, TObject(ID));
PutObject
Procedure TStrings.PutObject(Index: Integer; AObject: TObject);
begin
// Empty.
end;
Procedure TStringList.PutObject(Index: Integer; AObject: TObject);
begin
If (Index<0) or (INdex>=Fcount) then
Error (SListIndexError,Index);
Changing;
Flist^[Index].FObject:=AObject;
Changed;
end;
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
TabControl1: TTabControl;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TabControl1Change(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
Str:TStringList;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var B:TButton;
begin
if Str = nil then
Str:= TStringList.Create;
B:=TButton.Create(self);
B.Tag:=10;
TabControl1.Tabs.AddObject('Id=1',B);
Str.AddObject('1',B);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.TabControl1Change(Sender: TObject);
begin
Caption:='';
Caption:=IntToStr(TButton(TabControl1.Tabs.Objects[TabControl1.TabIndex]).Tag);
Caption:=Caption+' '+IntToStr(TButton(Str.Objects[0]).Tag);
end;
end.
Maxizar писал(а):И вообще TStrings - яв-ся классом от которого должны только наследовать на сколько я знаю из делфи...
Иван Шихалев писал(а):И реально там объект другого класса, наследника.
property Tabs: TStrings read FTabs write SetTabs;
property Tabs: TStringsTabs read FTabs write SetTabs;
TStringsTabs=class(TStrings)
тру ля ля
...
constructor TCustomTabControl.Create(TheOwner: TComponent);
...
FTabs:=TTabControlNoteBookStrings.Create(Self);
...
end;
...
procedure TTabControlNoteBookStrings.PutObject(Index: Integer; AObject: TObject
);
begin
FNoteBook.Pages.Objects[Index]:=AObject;
end;
...
TCustomNotebook = class(TWinControl)
...
property Pages: TStrings read FAccess write SetPages;
...
end;
...
constructor TCustomNotebook.Create(TheOwner: TComponent);
...
fAccess := TNBPages.Create(TListWithEvent(fPageList), Self);
...
end;
TNBPages = class(TStrings)
...
function GetObject(Index: Integer): TObject; override;
procedure Put(Index: Integer; const S: String); override;
public
constructor Create(thePageList: TListWithEvent;
theNotebook: TCustomNotebook);
...
end;
Пока не допишут метод, который должен быть перекрыт. Метод про который говорил Mr.Smartalexkam писал(а):Выходит в TabControl нельзя добавить ID объекта?
alexkam писал(а):Можно пример кода привязки объекта к TabControl?
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
TabControl1: TTabControl;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure TabControl1Change(Sender: TObject);
private
{ private declarations }
public
function AddTab(const NameTab:String; AObject:TObject):Integer;
{ public declarations }
end;
var
Form1: TForm1;
Tab:TStringList;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Tab:=TStringList.Create;
end;
procedure TForm1.TabControl1Change(Sender: TObject);
begin
caption:=IntToStr(TabControl1.TabIndex)+' ';
caption:=caption+TButton(Tab.Objects[TabControl1.TabIndex]).Caption;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Tab.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var B1:TButton;
begin
B1:=TButton.Create(Self);
B1.Caption:='Button'+IntToStr(Tab.Count);
AddTab(B1.Caption,B1);
end;
function TForm1.AddTab(const NameTab: String; AObject: TObject):Integer;
begin
Result:=Tab.AddObject(NameTab,AObject);
TabControl1.Tabs.Add(NameTab);
end;
end.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10