| 
| 
 | Вопрос # 6 565/ вопрос открыт / | 
 |  Доброго времени суток!Пытаюсь реализовать работу с вкладками TabControl.
 По какой-то причине некорректно работает
 // Ищем пользователя на вкладках
 i := TabControl1.Tabs.IndexOfObject(UsrData);
 Приложение:Переключить в обычный режим {{code|delphi}}unit frm_Main; ... var  FormMain: TFormMain; implementation uses frm_2; {$R *.dfm} procedure TFormMain.Button1Click(Sender: TObject);var  i: Integer;  Item: TListItem;begin  LVUsers.Clear;   for i := 0 to 4 do  begin    Item := LVUsers.Items.Add;    Item.Caption := '';    Item.SubItems.Add(Format('Name: %d', [i])); // Name    Item.SubItems.Add(Format('30%d', [i])); // Room    Item.SubItems.Add(IntToStr(i)); // ID    Item.SubItems.Add('0'); // Icon    Item.ImageIndex := 0;  end;end; procedure TFormMain.LVUsersDblClick(Sender: TObject);begin  if LVUsers.Selected = nil then Exit;  Form2.ProcAddTab(LVUsers.Items[LVUsers.ItemIndex], True, True);end end.   unit frm_2; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, Menus, StdCtrls, ComCtrls, ToolWin, ExtCtrls, Contnrs; type  TTabData = class(TObject)  public    UserID: Integer;    Nick: string;    TempMessage: string;  end;   TTabDataList = class(TObjectList)  private    function GetTab(Index: Integer): TTabData;  public    function AddTab(UserID: Integer; Nick, TempMessage: string): TTabData;    property Tabs[Index: Integer]: TTabData read GetTab; default;  end; type  TForm2 = class(TForm)...  private    { Private declarations }  public    { Public declarations }    procedure ProcAddTab(Usr: TListItem; ChangeTab, ShowForm: Boolean);  end; var  Form2: TForm2;  TabList: TTabDataList;  tbInd: Integer;  UserData: TTabData; implementation uses frm_Main; {$R *.dfm} function TTabDataList.AddTab(UserID: Integer; Nick, TempMessage: string): TTabData;begin  Result := TTabData.Create;  Result.UserID := UserID;  Result.Nick := Nick;  Result.TempMessage := TempMessage;  inherited Add(Result);end; function TTabDataList.GetTab(Index: Integer): TTabData;begin  Result := inherited Items[Index] as TTabData;end; procedure TForm2.FormCreate(Sender: TObject);begin end; procedure TForm2.FormDestroy(Sender: TObject);begin  FreeAndNil(TabList);end; procedure TForm2.ProcAddTab(Usr: TListItem; ChangeTab, ShowForm: Boolean);var  UsrData: TTabData;  i: Integer;begin  UsrData := Usr.Data;    begin     UsrData := TabList.AddTab(StrToInt(Usr.SubItems[2]), Usr.SubItems[0], '');     Usr.Data := UsrData;  end;   i := TabControl1.Tabs.IndexOfObject(UsrData);    begin    i := TabControl1.Tabs.Add(UsrData.Nick);     TabControl1.Tabs.Objects[i] := UsrData;  end;   if ChangeTab then  begin     TabControl1.TabIndex := i;  end;   if ShowForm then  begin    Self.WindowState := wsNormal;    Self.Show;  end;end; end.{{/code}} {{code|delphi}}UsrData := Usr.Data; //1: UsrData = nil; 2: UsrData = nil    begin     UsrData := TabList.AddTab(StrToInt(Usr.SubItems[2]), Usr.SubItems[0], ''); //1: UsrData = '0',
'Name: 0'; 2: UsrData = '0', 'Name: 0'     Usr.Data := UsrData; //1: Usr.Data = (0, 'Name: 0', ''); 2: Usr.Data = (0, 'Name: 0', '')   end;   i := TabControl1.Tabs.IndexOfObject(UsrData); //1: i = '-1'; 2: i = -1    begin    i := TabControl1.Tabs.Add(UsrData.Nick); //1: i = 'Name: 0'; 2: i = 'Name: 0'    end;{{/code}}
|  |   Вопрос задал: Shouldercannon (статус: Посетитель)Вопрос отправлен: 9 октября 2014, 15:17
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 11 октября 2014, 07:45; участников в обсуждении: 2. 
|   | Shouldercannon (статус: Посетитель), 9 октября 2014, 16:03 [#1]:Если пересоздать список пользователей в ListView и кликать по этим записям, то в TabControl появляться дубликаты уже имеющихся/открытых вкладок. |  
|   | min@y™ (статус: Доктор наук), 10 октября 2014, 16:28 [#2]:тебя как сюда занесло-то, дружищще? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Shouldercannon (статус: Посетитель), 11 октября 2014, 07:45 [#3]:Да вот как-то так |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |