|
Вопрос # 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]:
Да вот как-то так
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|