Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Создать свой TabSheet с доп. компонентами


Автор: Pentium02 26.8.2007, 00:03
пытаюсь делать так

Код

type
  TTabSheetMsg = class(TTabSheet)
      UINPanel: TPanel;
      LogR: TRichEdit;
      MessageMemo: TMemo;
      SendBtn: TButton;
  end;

..........


procedure TChatForm.ConstructPage(UIN, Nick: String);
var
      TabSheetMsg: TTabSheetMsg;
....
begin
....
      TabSheetMsg:=TTabSheetMsg.Create(PageControl);
      TabSheetMsg.PageControl:=PageControl;
      TabSheetMsg.UINPanel:=TPanel.Create(TabSheetMsg);
      with TabSheetMsg.UINPanel do
        begin
          Width:=520;
          Height:=22;
          Top:=0;
          Left:=0;
          Show;
        end;
....
end;

Сам TabSheet создаётся, а вот панелька на нём не появляется, что я делаю не так?

Автор: Sanchezzz 26.8.2007, 00:12
Код

function tform1.CreateTabEx( sCaption: string): TTabSheet;
var
  ts: TsTabSheet;
  SL:TPanel;
begin
  // Create a new TabSheet
  ts := TsTabSheet.Create(PageControl1);
  Result := ts;
  try
    // Assign TTabSheet Properties
    ts.PageControl := PageControl1;
    ts.Parent := PageControl1;
    ts.Caption := Format('%s', [sCaption]);

    ts.PageIndex := PageControl1.ActivePageIndex + 1;
   // AdvIconList.  GetIcon(7, Image1.Picture.Icon);
   ts.ImageIndex:=-1;

    SL := TPanel.Create(ts);
        // put TWebbrowser on TTabShee
    TControl(WB).Parent := ts;
    TControl(sl).Parent := ts;
    sl.Visible:=true;
    SL.Width:=520;
    SL.Height:=22;
    SL.Top:=0;
    SL.Left:=0;

    PageControl1.ActivePage := ts;

  except
    ts.Free;
  end;
end;


попробуй smile  аську делаеш... или чат... немного подправиш... тебе надо привязать парент к закладке. я аську пишу.



Автор: Pentium02 26.8.2007, 00:18
Спасибо  smile  пашет. Я тоже аську)

Автор: Sanchezzz 26.8.2007, 00:58
это как подобрался к компонентам может пригодится на закладке.

Код

var
Sl:Tpanel;
i:integer;
begin
i:=PageControl1.ActivePageIndex;
if Form1.PageControl1.Pages[i].Controls[0] is TPanel then  begin
Sl:=Tpanel(Form1.PageControl1.Pages[i].Controls[0]); 
//Controls[0] это номер первого компонента который был создан на закладке и присвоен паренту
Sl.visible:=true;
end;

Автор: GORA 29.8.2007, 13:08
Что то я не совсем в коде разобрался, у меня получается, что на каждой последующей созданой TabSheet, компонент появляется, но на предыдущих пропадает..Если можно выложите пожалуйста полный код(тоже аську пишу) smile 

Автор: Sanchezzz 29.8.2007, 20:47
смотри пример не охота расписывать.

Автор: GORA 29.8.2007, 22:02
 smile ну вот в этом примере тоже такая же проблема, то есть  Tmemo переносится на новую вкладку, и исчезает со старой.Подскажите пожалуйста, что сделать, или может я что то делаю не так? smile 

Автор: Sanchezzz 29.8.2007, 22:21
ой извиняюсь самого начало написал не то smile 
Код

function tform1.CreateTab( sCaption: string): TTabSheet;
var
  ts: TTabSheet;
  SL:TMemo;
begin
  ts := TTabSheet.Create(PageControl1);
  Result := ts;
  try
    ts.PageControl := PageControl1;
    ts.Parent := PageControl1;
    ts.Caption := Format('(%s)', [sCaption]);
    ts.PageIndex := PageControl1.ActivePageIndex + 1;
    ts.ImageIndex:=-1;
    SL := Tmemo.Create(ts);
    TControl(sl).Parent := ts;
    sl.Visible:=true;//тут у меня стоял false извиняюсь поставьте true это можно удалить даже !!!
    sl.Align:= alClient;
    // or:   Ts.InsertControl(WB);
    PageControl1.ActivePage := ts;
  except
    ts.Free;
end;
end;

  

Автор: GORA 30.8.2007, 10:23
ооо, точно, заработало, спасибо огромное smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)